aboutsummaryrefslogtreecommitdiff
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.def16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrInfo.def b/lib/Target/X86/X86InstrInfo.def
index 73a03b4429..fa242b2d34 100644
--- a/lib/Target/X86/X86InstrInfo.def
+++ b/lib/Target/X86/X86InstrInfo.def
@@ -56,6 +56,16 @@ I(MULrr8 , "mulb", 0, 0) // AX = AL*R8 F6/4
I(MULrr16 , "mulw", 0, 0) // DX:AX= AX*R16 F7/4
I(MULrr32 , "mull", 0, 0) // ED:EA= EA*R32 F7/4
+// unsigned division/remainder
+I(DIVrr8 , "divb", 0, 0) // AX/r8= AL&AH F6/6
+I(DIVrr16 , "divw", 0, 0) // DA/r16=AX&DX F7/6
+I(DIVrr32 , "divl", 0, 0) // DA/r32=EAX&DX F7/6
+
+// signed division/remainder
+I(IDIVrr8 , "idivb", 0, 0) // AX/r8= AL&AH F6/6
+I(IDIVrr16 , "idivw", 0, 0) // DA/r16=AX&DX F7/6
+I(IDIVrr32 , "idivl", 0, 0) // DA/r32=EAX&DX F7/6
+
// Logical operators
I(ANDrr8 , "andb", 0, 0) // R8 &= R8 20/r
@@ -88,5 +98,11 @@ I(SARir16 , "sarw", 0, 0) // R16 >>= imm8 C1/7 ib
I(SARrr32 , "sarl", 0, 0) // R32 >>= cl D3/7
I(SARir32 , "sarl", 0, 0) // R32 >>= imm8 C1/7 ib
+
+// Miscellaneous instructions...
+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
+
// At this point, I is dead, so undefine the macro
#undef I