diff options
Diffstat (limited to 'lib/Target/X86/X86InstrInfo.def')
-rw-r--r-- | lib/Target/X86/X86InstrInfo.def | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/lib/Target/X86/X86InstrInfo.def b/lib/Target/X86/X86InstrInfo.def index 1a6f2f5..5c4a963 100644 --- a/lib/Target/X86/X86InstrInfo.def +++ b/lib/Target/X86/X86InstrInfo.def @@ -99,14 +99,14 @@ I(SARrr32 , "sarl", 0, 0) // R32 >>= cl D3/7 I(SARir32 , "sarl", 0, 0) // R32 >>= imm8 C1/7 ib // Floating point loads -I(FLDr4 , "flds", 0, 0) // push float D9/0 -I(FLDr8 , "fldl ", 0, 0) // push double DD/0 +I(FLDr4 , "flds", 0, X86II::Void) // push float D9/0 +I(FLDr8 , "fldl ", 0, X86II::Void) // push double DD/0 // Floating point compares -I(FUCOMPP , "fucompp", 0, 0) // compare+pop2x DA E9 +I(FUCOMPP , "fucompp", 0, X86II::Void) // compare+pop2x DA E9 // Floating point flag ops -I(FNSTSWr8 , "fnstsw", 0, 0) // AX = fp flags DF E0 +I(FNSTSWr8 , "fnstsw", 0, X86II::Void) // AX = fp flags DF E0 // Condition code ops, incl. set if equal/not equal/... I(SAHF , "sahf", 0, 0) // flags = AH 9E @@ -126,11 +126,16 @@ I(CMPrr8 , "cmpb", 0, 0) // compare R8,R8 38/r I(CMPrr16 , "cmpw", 0, 0) // compare R16,R16 39/r I(CMPrr32 , "cmpl", 0, 0) // compare R32,R32 39/r -// Sign extenders -I(CBW , "cbw", 0, 0) // AH = signext(AL) 98 -I(CWD , "cwd", 0, 0) // DX = signext(AX) 99 -I(CWQ , "cwq", 0, 0) // EDX= signext(EAX) 99 -I(CWDE , "cwde", 0, 0) // EAX = extend AX 98 +// Sign extenders (first 3 are good for DIV/IDIV; the others are more general) +I(CBW , "cbw", 0, 0) // AX = signext(AL) 98 +I(CWD , "cwd", 0, 0) // DX:AX = signext(AX) 99 +I(CDQ , "cdq", 0, 0) // EDX:EAX = signext(EAX) 99 +I(MOVSXr16r8 , "movsx", 0, 0) // R32 = signext(R8) 0F BE /r +I(MOVSXr32r8 , "movsx", 0, 0) // R32 = signext(R8) 0F BE /r +I(MOVSXr32r16 , "movsx", 0, 0) // R32 = signext(R16) 0F BF /r +I(MOVZXr16r8 , "movzx", 0, 0) // R32 = zeroext(R8) 0F B6 /r +I(MOVZXr32r8 , "movzx", 0, 0) // R32 = zeroext(R8) 0F B6 /r +I(MOVZXr32r16 , "movzx", 0, 0) // R32 = zeroext(R16) 0F B7 /r // At this point, I is dead, so undefine the macro #undef I |