[Issue 6097] New: SSSE3 instructions in inline assembler cause error using DMD from git master

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jun 3 05:10:36 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=6097

           Summary: SSSE3 instructions in inline assembler cause error
                    using DMD from git master
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: kai at redstar.de


--- Comment #0 from kai at redstar.de 2011-06-03 05:06:07 PDT ---
Created an attachment (id=991)
Patch with instruction size information for 3 byte opcodes

In the inline assembler, SSSE3 instructions produce an error if used with MMX
registers. E.g. the program

void main()
{
    asm {
      pshufb MM0, MM1;
    }
}

causes the following error message:

actual: 3, calc: 5
code 003E0A08: nxt=00000000 op=f38 flg=40 rm=c1=3,0,1
Internal error: backend\cod3.c 4448

Everything seems to work if you use only XMM registers.

The root cause seems to be that there is no instruction size stored for 3 byte
opcodes (opcodes starting with 0F 38 and 0F 3A).

The attached patch tries to correct the problem. With the patch applied, some
more instructions could be added to the inline assembler (popcnt, crc32,
movbe).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list