aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86InstrInfo.def
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/X86/X86InstrInfo.def')
-rw-r--r--lib/Target/X86/X86InstrInfo.def23
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