]> granicus.if.org Git - llvm/commitdiff
[X86][Disassembler] Added SALC instruction
authorChris Ray <cray@arxan.com>
Sun, 29 Jan 2017 23:02:47 +0000 (23:02 +0000)
committerChris Ray <cray@arxan.com>
Sun, 29 Jan 2017 23:02:47 +0000 (23:02 +0000)
Reviewers: joe.abbey, craig.topper

Reviewed By: craig.topper

Subscribers: majnemer, llvm-commits

Differential Revision: https://reviews.llvm.org/D29201

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293447 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrCMovSetCC.td
test/MC/Disassembler/X86/x86-16.txt
test/MC/X86/x86-32-coverage.s

index c73c95019f8d222c046ef2cdda618bff969ab04a..a483bded18c2f907f4b76fd54276b84e3ec0a2ed 100644 (file)
-//===-- X86InstrCMovSetCC.td - Conditional Move and SetCC --*- tablegen -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file describes the X86 conditional move and set on condition
-// instructions.
-//
-//===----------------------------------------------------------------------===//
-
-
-// CMOV instructions.
-multiclass CMOV<bits<8> opc, string Mnemonic, PatLeaf CondNode> {
-  let Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst",
-      isCommutable = 1, SchedRW = [WriteALU] in {
-    def NAME#16rr
-      : I<opc, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src1, GR16:$src2),
-          !strconcat(Mnemonic, "{w}\t{$src2, $dst|$dst, $src2}"),
-          [(set GR16:$dst,
-                (X86cmov GR16:$src1, GR16:$src2, CondNode, EFLAGS))],
-                IIC_CMOV16_RR>, TB, OpSize16;
-    def NAME#32rr
-      : I<opc, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
-          !strconcat(Mnemonic, "{l}\t{$src2, $dst|$dst, $src2}"),
-          [(set GR32:$dst,
-                (X86cmov GR32:$src1, GR32:$src2, CondNode, EFLAGS))],
-                IIC_CMOV32_RR>, TB, OpSize32;
-    def NAME#64rr
-      :RI<opc, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2),
-          !strconcat(Mnemonic, "{q}\t{$src2, $dst|$dst, $src2}"),
-          [(set GR64:$dst,
-                (X86cmov GR64:$src1, GR64:$src2, CondNode, EFLAGS))],
-                IIC_CMOV32_RR>, TB;
-  }
-
-  let Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst",
-      SchedRW = [WriteALULd, ReadAfterLd] in {
-    def NAME#16rm
-      : I<opc, MRMSrcMem, (outs GR16:$dst), (ins GR16:$src1, i16mem:$src2),
-          !strconcat(Mnemonic, "{w}\t{$src2, $dst|$dst, $src2}"),
-          [(set GR16:$dst, (X86cmov GR16:$src1, (loadi16 addr:$src2),
-                                    CondNode, EFLAGS))], IIC_CMOV16_RM>,
-                                    TB, OpSize16;
-    def NAME#32rm
-      : I<opc, MRMSrcMem, (outs GR32:$dst), (ins GR32:$src1, i32mem:$src2),
-          !strconcat(Mnemonic, "{l}\t{$src2, $dst|$dst, $src2}"),
-          [(set GR32:$dst, (X86cmov GR32:$src1, (loadi32 addr:$src2),
-                                    CondNode, EFLAGS))], IIC_CMOV32_RM>,
-                                    TB, OpSize32;
-    def NAME#64rm
-      :RI<opc, MRMSrcMem, (outs GR64:$dst), (ins GR64:$src1, i64mem:$src2),
-          !strconcat(Mnemonic, "{q}\t{$src2, $dst|$dst, $src2}"),
-          [(set GR64:$dst, (X86cmov GR64:$src1, (loadi64 addr:$src2),
-                                    CondNode, EFLAGS))], IIC_CMOV32_RM>, TB;
-  } // Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst"
-} // end multiclass
-
-
-// Conditional Moves.
-defm CMOVO  : CMOV<0x40, "cmovo" , X86_COND_O>;
-defm CMOVNO : CMOV<0x41, "cmovno", X86_COND_NO>;
-defm CMOVB  : CMOV<0x42, "cmovb" , X86_COND_B>;
-defm CMOVAE : CMOV<0x43, "cmovae", X86_COND_AE>;
-defm CMOVE  : CMOV<0x44, "cmove" , X86_COND_E>;
-defm CMOVNE : CMOV<0x45, "cmovne", X86_COND_NE>;
-defm CMOVBE : CMOV<0x46, "cmovbe", X86_COND_BE>;
-defm CMOVA  : CMOV<0x47, "cmova" , X86_COND_A>;
-defm CMOVS  : CMOV<0x48, "cmovs" , X86_COND_S>;
-defm CMOVNS : CMOV<0x49, "cmovns", X86_COND_NS>;
-defm CMOVP  : CMOV<0x4A, "cmovp" , X86_COND_P>;
-defm CMOVNP : CMOV<0x4B, "cmovnp", X86_COND_NP>;
-defm CMOVL  : CMOV<0x4C, "cmovl" , X86_COND_L>;
-defm CMOVGE : CMOV<0x4D, "cmovge", X86_COND_GE>;
-defm CMOVLE : CMOV<0x4E, "cmovle", X86_COND_LE>;
-defm CMOVG  : CMOV<0x4F, "cmovg" , X86_COND_G>;
-
-
-// SetCC instructions.
-multiclass SETCC<bits<8> opc, string Mnemonic, PatLeaf OpNode> {
-  let Uses = [EFLAGS] in {
-    def r    : I<opc, MRMXr,  (outs GR8:$dst), (ins),
-                     !strconcat(Mnemonic, "\t$dst"),
-                     [(set GR8:$dst, (X86setcc OpNode, EFLAGS))],
-                     IIC_SET_R>, TB, Sched<[WriteALU]>;
-    def m    : I<opc, MRMXm,  (outs), (ins i8mem:$dst),
-                     !strconcat(Mnemonic, "\t$dst"),
-                     [(store (X86setcc OpNode, EFLAGS), addr:$dst)],
-                     IIC_SET_M>, TB, Sched<[WriteALU, WriteStore]>;
-  } // Uses = [EFLAGS]
-}
-
-defm SETO  : SETCC<0x90, "seto",  X86_COND_O>;   // is overflow bit set
-defm SETNO : SETCC<0x91, "setno", X86_COND_NO>;  // is overflow bit not set
-defm SETB  : SETCC<0x92, "setb",  X86_COND_B>;   // unsigned less than
-defm SETAE : SETCC<0x93, "setae", X86_COND_AE>;  // unsigned greater or equal
-defm SETE  : SETCC<0x94, "sete",  X86_COND_E>;   // equal to
-defm SETNE : SETCC<0x95, "setne", X86_COND_NE>;  // not equal to
-defm SETBE : SETCC<0x96, "setbe", X86_COND_BE>;  // unsigned less than or equal
-defm SETA  : SETCC<0x97, "seta",  X86_COND_A>;   // unsigned greater than
-defm SETS  : SETCC<0x98, "sets",  X86_COND_S>;   // is signed bit set
-defm SETNS : SETCC<0x99, "setns", X86_COND_NS>;  // is not signed
-defm SETP  : SETCC<0x9A, "setp",  X86_COND_P>;   // is parity bit set
-defm SETNP : SETCC<0x9B, "setnp", X86_COND_NP>;  // is parity bit not set
-defm SETL  : SETCC<0x9C, "setl",  X86_COND_L>;   // signed less than
-defm SETGE : SETCC<0x9D, "setge", X86_COND_GE>;  // signed greater or equal
-defm SETLE : SETCC<0x9E, "setle", X86_COND_LE>;  // signed less than or equal
-defm SETG  : SETCC<0x9F, "setg",  X86_COND_G>;   // signed greater than
-
+//===-- X86InstrCMovSetCC.td - Conditional Move and SetCC --*- tablegen -*-===//\r
+//\r
+//                     The LLVM Compiler Infrastructure\r
+//\r
+// This file is distributed under the University of Illinois Open Source\r
+// License. See LICENSE.TXT for details.\r
+//\r
+//===----------------------------------------------------------------------===//\r
+//\r
+// This file describes the X86 conditional move and set on condition\r
+// instructions.\r
+//\r
+//===----------------------------------------------------------------------===//\r
+\r
+\r
+// CMOV instructions.\r
+multiclass CMOV<bits<8> opc, string Mnemonic, PatLeaf CondNode> {\r
+  let Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst",\r
+      isCommutable = 1, SchedRW = [WriteALU] in {\r
+    def NAME#16rr\r
+      : I<opc, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src1, GR16:$src2),\r
+          !strconcat(Mnemonic, "{w}\t{$src2, $dst|$dst, $src2}"),\r
+          [(set GR16:$dst,\r
+                (X86cmov GR16:$src1, GR16:$src2, CondNode, EFLAGS))],\r
+                IIC_CMOV16_RR>, TB, OpSize16;\r
+    def NAME#32rr\r
+      : I<opc, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),\r
+          !strconcat(Mnemonic, "{l}\t{$src2, $dst|$dst, $src2}"),\r
+          [(set GR32:$dst,\r
+                (X86cmov GR32:$src1, GR32:$src2, CondNode, EFLAGS))],\r
+                IIC_CMOV32_RR>, TB, OpSize32;\r
+    def NAME#64rr\r
+      :RI<opc, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2),\r
+          !strconcat(Mnemonic, "{q}\t{$src2, $dst|$dst, $src2}"),\r
+          [(set GR64:$dst,\r
+                (X86cmov GR64:$src1, GR64:$src2, CondNode, EFLAGS))],\r
+                IIC_CMOV32_RR>, TB;\r
+  }\r
+\r
+  let Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst",\r
+      SchedRW = [WriteALULd, ReadAfterLd] in {\r
+    def NAME#16rm\r
+      : I<opc, MRMSrcMem, (outs GR16:$dst), (ins GR16:$src1, i16mem:$src2),\r
+          !strconcat(Mnemonic, "{w}\t{$src2, $dst|$dst, $src2}"),\r
+          [(set GR16:$dst, (X86cmov GR16:$src1, (loadi16 addr:$src2),\r
+                                    CondNode, EFLAGS))], IIC_CMOV16_RM>,\r
+                                    TB, OpSize16;\r
+    def NAME#32rm\r
+      : I<opc, MRMSrcMem, (outs GR32:$dst), (ins GR32:$src1, i32mem:$src2),\r
+          !strconcat(Mnemonic, "{l}\t{$src2, $dst|$dst, $src2}"),\r
+          [(set GR32:$dst, (X86cmov GR32:$src1, (loadi32 addr:$src2),\r
+                                    CondNode, EFLAGS))], IIC_CMOV32_RM>,\r
+                                    TB, OpSize32;\r
+    def NAME#64rm\r
+      :RI<opc, MRMSrcMem, (outs GR64:$dst), (ins GR64:$src1, i64mem:$src2),\r
+          !strconcat(Mnemonic, "{q}\t{$src2, $dst|$dst, $src2}"),\r
+          [(set GR64:$dst, (X86cmov GR64:$src1, (loadi64 addr:$src2),\r
+                                    CondNode, EFLAGS))], IIC_CMOV32_RM>, TB;\r
+  } // Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst"\r
+} // end multiclass\r
+\r
+\r
+// Conditional Moves.\r
+defm CMOVO  : CMOV<0x40, "cmovo" , X86_COND_O>;\r
+defm CMOVNO : CMOV<0x41, "cmovno", X86_COND_NO>;\r
+defm CMOVB  : CMOV<0x42, "cmovb" , X86_COND_B>;\r
+defm CMOVAE : CMOV<0x43, "cmovae", X86_COND_AE>;\r
+defm CMOVE  : CMOV<0x44, "cmove" , X86_COND_E>;\r
+defm CMOVNE : CMOV<0x45, "cmovne", X86_COND_NE>;\r
+defm CMOVBE : CMOV<0x46, "cmovbe", X86_COND_BE>;\r
+defm CMOVA  : CMOV<0x47, "cmova" , X86_COND_A>;\r
+defm CMOVS  : CMOV<0x48, "cmovs" , X86_COND_S>;\r
+defm CMOVNS : CMOV<0x49, "cmovns", X86_COND_NS>;\r
+defm CMOVP  : CMOV<0x4A, "cmovp" , X86_COND_P>;\r
+defm CMOVNP : CMOV<0x4B, "cmovnp", X86_COND_NP>;\r
+defm CMOVL  : CMOV<0x4C, "cmovl" , X86_COND_L>;\r
+defm CMOVGE : CMOV<0x4D, "cmovge", X86_COND_GE>;\r
+defm CMOVLE : CMOV<0x4E, "cmovle", X86_COND_LE>;\r
+defm CMOVG  : CMOV<0x4F, "cmovg" , X86_COND_G>;\r
+\r
+\r
+// SetCC instructions.\r
+multiclass SETCC<bits<8> opc, string Mnemonic, PatLeaf OpNode> {\r
+  let Uses = [EFLAGS] in {\r
+    def r    : I<opc, MRMXr,  (outs GR8:$dst), (ins),\r
+                     !strconcat(Mnemonic, "\t$dst"),\r
+                     [(set GR8:$dst, (X86setcc OpNode, EFLAGS))],\r
+                     IIC_SET_R>, TB, Sched<[WriteALU]>;\r
+    def m    : I<opc, MRMXm,  (outs), (ins i8mem:$dst),\r
+                     !strconcat(Mnemonic, "\t$dst"),\r
+                     [(store (X86setcc OpNode, EFLAGS), addr:$dst)],\r
+                     IIC_SET_M>, TB, Sched<[WriteALU, WriteStore]>;\r
+  } // Uses = [EFLAGS]\r
+}\r
+\r
+defm SETO  : SETCC<0x90, "seto",  X86_COND_O>;   // is overflow bit set\r
+defm SETNO : SETCC<0x91, "setno", X86_COND_NO>;  // is overflow bit not set\r
+defm SETB  : SETCC<0x92, "setb",  X86_COND_B>;   // unsigned less than\r
+defm SETAE : SETCC<0x93, "setae", X86_COND_AE>;  // unsigned greater or equal\r
+defm SETE  : SETCC<0x94, "sete",  X86_COND_E>;   // equal to\r
+defm SETNE : SETCC<0x95, "setne", X86_COND_NE>;  // not equal to\r
+defm SETBE : SETCC<0x96, "setbe", X86_COND_BE>;  // unsigned less than or equal\r
+defm SETA  : SETCC<0x97, "seta",  X86_COND_A>;   // unsigned greater than\r
+defm SETS  : SETCC<0x98, "sets",  X86_COND_S>;   // is signed bit set\r
+defm SETNS : SETCC<0x99, "setns", X86_COND_NS>;  // is not signed\r
+defm SETP  : SETCC<0x9A, "setp",  X86_COND_P>;   // is parity bit set\r
+defm SETNP : SETCC<0x9B, "setnp", X86_COND_NP>;  // is parity bit not set\r
+defm SETL  : SETCC<0x9C, "setl",  X86_COND_L>;   // signed less than\r
+defm SETGE : SETCC<0x9D, "setge", X86_COND_GE>;  // signed greater or equal\r
+defm SETLE : SETCC<0x9E, "setle", X86_COND_LE>;  // signed less than or equal\r
+defm SETG  : SETCC<0x9F, "setg",  X86_COND_G>;   // signed greater than\r
+\r
+// SALC is an undocumented instruction. Information for this instruction can be found\r
+// here http://www.rcollins.org/secrets/opcodes/SALC.html\r
+// Set AL if carry. \r
+let Uses = [EFLAGS], Defs = [AL] in {\r
+  def SALC : I<0xD6, RawFrm, (outs), (ins), "salc", []>, Requires<[Not64BitMode]>;\r
+}\r
index 021cb2371812b2800df993cb15eec1caa9caec88..407b695ef636e3b27602f3ecf53e5410f4c0c92a 100644 (file)
-# RUN: llvm-mc --disassemble %s -triple=i686-linux-gnu-code16 | FileCheck %s
-
-# CHECK: movl $305419896, %ebx
-0x66 0xbb 0x78 0x56 0x34 0x12
-
-# CHECK: pause
-0xf3 0x90
-
-# CHECK: sfence
-0x0f 0xae 0xf8
-
-# CHECK: lfence
-0x0f 0xae 0xe8
-
-# CHECK: mfence
-0x0f 0xae 0xf0
-
-# CHECK: stgi
-0x0f 0x01 0xdc
-
-# CHECK: clgi
-0x0f 0x01 0xdd
-
-# CHECK: rdtscp
-0x0f 0x01 0xf9
-
-# CHECK: movl %eax, 16(%ebp)
-0x67 0x66 0x89 0x45 0x10
-
-# CHECK: movl %eax, -16(%ebp)
-0x67 0x66 0x89 0x45 0xf0
-
-# CHECK: testb %cl, %bl
-0x84 0xcb
-
-# CHECK: cmpl %eax, %ebx
-0x66 0x39 0xc3
-
-# CHECK: addw %ax, %ax
-0x01 0xc0
-
-# CHECK: shrl %eax
-0x66 0xd1 0xe8
-
-# CHECK: shll %eax
-0x66 0xd1 0xe0
-
-# CHECK: shll %eax
-0x66 0xd1 0xe0
-
-# CHECK: movb 0, %al
-0xa0 0x00 0x00
-
-# CHECK: movw 0, %ax
-0xa1 0x00 0x00
-
-# CHECK: movl 0, %eax
-0x66 0xa1 0x00 0x00
-
-# CHECK: into
-0xce
-
-# CHECK: int3
-0xcc
-
-# CHECK: int $4
-0xcd 0x04
-
-# CHECK: int $127
-0xcd 0x7f
-
-# CHECK: pushfw
-0x9c
-
-# CHECK: pushfl
-0x66 0x9c
-
-# CHECK: popfw
-0x9d
-
-# CHECK: popfl
-0x66 0x9d
-
-# CHECK: retl
-0x66 0xc3
-
-# CHECK: cmoval %eax, %edx
-0x66 0x0f 0x47 0xd0
-
-# CHECK: cmovael %eax, %edx
-0x66 0x0f 0x43 0xd0
-
-# CHECK: cmovbel %eax, %edx
-0x66 0x0f 0x46 0xd0
-
-# CHECK: cmovbl %eax, %edx
-0x66 0x0f 0x42 0xd0
-
-# CHECK: cmovbw %bx, %bx
-0x0f 0x42 0xdb
-
-# CHECK: cmovbel %eax, %edx
-0x66 0x0f 0x46 0xd0
-
-# CHECK: cmovbl %eax, %edx
-0x66 0x0f 0x42 0xd0
-
-# CHECK: cmovel %eax, %edx
-0x66 0x0f 0x44 0xd0
-
-# CHECK: cmovgl %eax, %edx
-0x66 0x0f 0x4f 0xd0
-
-# CHECK: cmovgel %eax, %edx
-0x66 0x0f 0x4d 0xd0
-
-# CHECK: cmovll %eax, %edx
-0x66 0x0f 0x4c 0xd0
-
-# CHECK: cmovlel %eax, %edx
-0x66 0x0f 0x4e 0xd0
-
-# CHECK: cmovbel %eax, %edx
-0x66 0x0f 0x46 0xd0
-
-# CHECK: cmovnel %eax, %edx
-0x66 0x0f 0x45 0xd0
-
-# CHECK: cmovael %eax, %edx
-0x66 0x0f 0x43 0xd0
-
-# CHECK: cmoval %eax, %edx
-0x66 0x0f 0x47 0xd0
-
-# CHECK: cmovael %eax, %edx
-0x66 0x0f 0x43 0xd0
-
-# CHECK: cmovnel %eax, %edx
-0x66 0x0f 0x45 0xd0
-
-# CHECK: cmovlel %eax, %edx
-0x66 0x0f 0x4e 0xd0
-
-# CHECK: cmovgel %eax, %edx
-0x66 0x0f 0x4d 0xd0
-
-# CHECK: cmovnel %eax, %edx
-0x66 0x0f 0x45 0xd0
-
-# CHECK: cmovlel %eax, %edx
-0x66 0x0f 0x4e 0xd0
-
-# CHECK: cmovll %eax, %edx
-0x66 0x0f 0x4c 0xd0
-
-# CHECK: cmovgel %eax, %edx
-0x66 0x0f 0x4d 0xd0
-
-# CHECK: cmovgl %eax, %edx
-0x66 0x0f 0x4f 0xd0
-
-# CHECK: cmovnol %eax, %edx
-0x66 0x0f 0x41 0xd0
-
-# CHECK: cmovnpl %eax, %edx
-0x66 0x0f 0x4b 0xd0
-
-# CHECK: cmovnsl %eax, %edx
-0x66 0x0f 0x49 0xd0
-
-# CHECK: cmovnel %eax, %edx
-0x66 0x0f 0x45 0xd0
-
-# CHECK: cmovol %eax, %edx
-0x66 0x0f 0x40 0xd0
-
-# CHECK: cmovpl %eax, %edx
-0x66 0x0f 0x4a 0xd0
-
-# CHECK: cmovsl %eax, %edx
-0x66 0x0f 0x48 0xd0
-
-# CHECK: cmovel %eax, %edx
-0x66 0x0f 0x44 0xd0
-
-# CHECK: fmul %st(0)
-0xd8 0xc8
-
-# CHECK: fadd %st(0)
-0xd8 0xc0
-
-# CHECK: fsub %st(0)
-0xd8 0xe0
-
-# CHECK: fsubr %st(0)
-0xd8 0xe8
-
-# CHECK: fdivr %st(0)
-0xd8 0xf8
-
-# CHECK: fdiv %st(0)
-0xd8 0xf0
-
-# CHECK: movl %cs, %eax
-0x66 0x8c 0xc8
-
-# CHECK: movw %cs, %ax
-0x8c 0xc8
-
-# CHECK: movl %cs, (%eax)
-0x67 0x66 0x8c 0x08
-
-# CHECK: movw %cs, (%eax)
-0x67 0x8c 0x08
-
-# CHECK: movl %eax, %cs
-0x66 0x8e 0xc8
-
-# CHECK: movl (%eax), %cs
-0x67 0x66 0x8e 0x08
-
-# CHECK: movw (%eax), %cs
-0x67 0x8e 0x08
-
-# CHECKX: movl %cr0, %eax
-0x0f 0x20 0xc0
-
-# CHECKX: movl %cr1, %eax
-0x0f 0x20 0xc8
-
-# CHECKX: movl %cr2, %eax
-0x0f 0x20 0xd0
-
-# CHECKX: movl %cr3, %eax
-0x0f 0x20 0xd8
-
-# CHECKX: movl %cr4, %eax
-0x0f 0x20 0xe0
-
-# CHECKX: movl %dr0, %eax
-0x0f 0x21 0xc0
-
-# CHECKX: movl %dr1, %eax
-0x0f 0x21 0xc8
-
-# CHECKX: movl %dr1, %eax
-0x0f 0x21 0xc8
-
-# CHECKX: movl %dr2, %eax
-0x0f 0x21 0xd0
-
-# CHECKX: movl %dr3, %eax
-0x0f 0x21 0xd8
-
-# CHECKX: movl %dr4, %eax
-0x0f 0x21 0xe0
-
-# CHECKX: movl %dr5, %eax
-0x0f 0x21 0xe8
-
-# CHECKX: movl %dr6, %eax
-0x0f 0x21 0xf0
-
-# CHECKX: movl %dr7, %eax
-0x0f 0x21 0xf8
-
-# CHECK: wait
-0x9b
-
-# CHECK: movl %gs:124, %eax
-0x65 0x66 0x8b 0x06 0x7c 0x00
-
-# CHECK: pushaw
-0x60
-
-# CHECK: popaw
-0x61
-
-# CHECK: pushaw
-0x60
-
-# CHECK: popaw
-0x61
-
-# CHECK: pushal
-0x66 0x60
-
-# CHECK: popal
-0x66 0x61
-
-# CHECK: jmpw *8(%eax)
-0x67 0xff 0x60 0x08
-
-# CHECK: jmpl *8(%eax)
-0x67 0x66 0xff 0x60 0x08
-
-# CHECK: lcalll $2, $4660
-0x66 0x9a 0x34 0x12 0x00 0x00 0x02 0x00
-
-# CHECK: jcxz
-0xe3 0x00
-
-# CHECK: jecxz
-0x67 0xe3 0x00
-
-# CHECK: iretw
-0xcf
-
-# CHECK: iretw
-0xcf
-
-# CHECK: iretl
-0x66 0xcf
-
-# CHECK: sysretl
-0x0f 0x07
-
-# CHECK: sysretl
-0x0f 0x07
-
-# CHECK: testl -24(%ebp), %ecx
-0x67 0x66 0x85 0x4d 0xe8
-
-# CHECK: testl -24(%ebp), %ecx
-0x67 0x66 0x85 0x4d 0xe8
-
-# CHECK: pushw %cs
-0x0e
-
-# CHECK: pushw %ds
-0x1e
-
-# CHECK: pushw %ss
-0x16
-
-# CHECK: pushw %es
-0x06
-
-# CHECK: pushw %fs
-0x0f 0xa0
-
-# CHECK: pushw %gs
-0x0f 0xa8
-
-# CHECK: pushw %cs
-0x0e
-
-# CHECK: pushw %ds
-0x1e
-
-# CHECK: pushw %ss
-0x16
-
-# CHECK: pushw %es
-0x06
-
-# CHECK: pushw %fs
-0x0f 0xa0
-
-# CHECK: pushw %gs
-0x0f 0xa8
-
-# CHECK: pushl %cs
-0x66 0x0e
-
-# CHECK: pushl %ds
-0x66 0x1e
-
-# CHECK: pushl %ss
-0x66 0x16
-
-# CHECK: pushl %es
-0x66 0x06
-
-# CHECK: pushl %fs
-0x66 0x0f 0xa0
-
-# CHECK: pushl %gs
-0x66 0x0f 0xa8
-
-# CHECK: popw %ss
-0x17
-
-# CHECK: popw %ds
-0x1f
-
-# CHECK: popw %es
-0x07
-
-# CHECK: popl %ss
-0x66 0x17
-
-# CHECK: popl %ds
-0x66 0x1f
-
-# CHECK: popl %es
-0x66 0x07
-
-# CHECK: pushfl
-0x66 0x9c
-
-# CHECK: popfl
-0x66 0x9d
-
-# CHECK: pushfl
-0x66 0x9c
-
-# CHECK: popfl
-0x66 0x9d
-
-# CHECK: setb %bl
-0x0f 0x92 0xc3
-
-# CHECK: setb %bl
-0x0f 0x92 0xc3
-
-# CHECK: setae %bl
-0x0f 0x93 0xc3
-
-# CHECK: setae %bl
-0x0f 0x93 0xc3
-
-# CHECK: setbe %bl
-0x0f 0x96 0xc3
-
-# CHECK: seta %bl
-0x0f 0x97 0xc3
-
-# CHECK: setp %bl
-0x0f 0x9a 0xc3
-
-# CHECK: setnp %bl
-0x0f 0x9b 0xc3
-
-# CHECK: setl %bl
-0x0f 0x9c 0xc3
-
-# CHECK: setge %bl
-0x0f 0x9d 0xc3
-
-# CHECK: setle %bl
-0x0f 0x9e 0xc3
-
-# CHECK: setg %bl
-0x0f 0x9f 0xc3
-
-# CHECK: setne %cl
-0x0f 0x95 0xc1
-
-# CHECK: setb %bl
-0x0f 0x92 0xc3
-
-# CHECK: setb %bl
-0x0f 0x92 0xc3
-
-# CHECK: lcalll $31438, $31438
-0x66 0x9a 0xce 0x7a 0x00 0x00 0xce 0x7a
-
-# CHECK: lcalll $31438, $31438
-0x66 0x9a 0xce 0x7a 0x00 0x00 0xce 0x7a
-
-# CHECK: ljmpl $31438, $31438
-0x66 0xea 0xce 0x7a 0x00 0x00 0xce 0x7a
-
-# CHECK: ljmpl $31438, $31438
-0x66 0xea 0xce 0x7a 0x00 0x00 0xce 0x7a
-
-# CHECK: lcallw $31438, $31438
-0x9a 0xce 0x7a 0xce 0x7a
-
-# CHECK: lcallw $31438, $31438
-0x9a 0xce 0x7a 0xce 0x7a
-
-# CHECK: ljmpw $31438, $31438
-0xea 0xce 0x7a 0xce 0x7a
-
-# CHECK: ljmpw $31438, $31438
-0xea 0xce 0x7a 0xce 0x7a
-
-# CHECK: lcallw $31438, $31438
-0x9a 0xce 0x7a 0xce 0x7a
-
-# CHECK: lcallw $31438, $31438
-0x9a 0xce 0x7a 0xce 0x7a
-
-# CHECK: ljmpw $31438, $31438
-0xea 0xce 0x7a 0xce 0x7a
-
-# CHECK: ljmpw $31438, $31438
-0xea 0xce 0x7a 0xce 0x7a
-
-# CHECK: calll 
-0x66 0xe8 0x00 0x00 0x00 0x00
-
-# CHECK: callw
-0xe8 0x00 0x00
-
-# CHECK: incb %al
-0xfe 0xc0
-
-# CHECK: incw %ax
-0x40
-
-# CHECK: incl %eax
-0x66 0x40
-
-# CHECK: decb %al
-0xfe 0xc8
-
-# CHECK: decw %ax
-0x48
-
-# CHECK: decl %eax
-0x66 0x48
-
-# CHECK: pshufw $14, %mm4, %mm0
-0x0f 0x70 0xc4 0x0e
-
-# CHECK: pshufw $90, %mm4, %mm0
-0x0f 0x70 0xc4 0x5a
-
-# CHECK: aaa
-0x37
-
-# CHECK: aad $1
-0xd5 0x01
-
-# CHECK: aad
-0xd5 0x0a
-
-# CHECK: aad
-0xd5 0x0a
-
-# CHECK: aam $2
-0xd4 0x02
-
-# CHECK: aam
-0xd4 0x0a
-
-# CHECK: aam
-0xd4 0x0a
-
-# CHECK: aas
-0x3f
-
-# CHECK: daa
-0x27
-
-# CHECK: das
-0x2f
-
-# CHECK: retw $31438
-0xc2 0xce 0x7a
-
-# CHECK: lretw $31438
-0xca 0xce 0x7a
-
-# CHECK: retw $31438
-0xc2 0xce 0x7a
-
-# CHECK: lretw $31438
-0xca 0xce 0x7a
-
-# CHECK: retl $31438
-0x66 0xc2 0xce 0x7a
-
-# CHECK: lretl $31438
-0x66 0xca 0xce 0x7a
-
-# CHECK: bound 2(%eax), %bx
-0x67 0x62 0x58 0x02
-
-# CHECK: bound 4(%ebx), %ecx
-0x67 0x66 0x62 0x4b 0x04
-
-# CHECK: arpl %bx, %bx
-0x63 0xdb
-
-# CHECK: arpl %bx, 6(%ecx)
-0x67 0x63 0x59 0x06
-
-# CHECK: lgdtw 4(%eax)
-0x67 0x0f 0x01 0x50 0x04
-
-# CHECK: lgdtw 4(%eax)
-0x67 0x0f 0x01 0x50 0x04
-
-# CHECK: lgdtl 4(%eax)
-0x67 0x66 0x0f 0x01 0x50 0x04
-
-# CHECK: lidtw 4(%eax)
-0x67 0x0f 0x01 0x58 0x04
-
-# CHECK: lidtw 4(%eax)
-0x67 0x0f 0x01 0x58 0x04
-
-# CHECK: lidtl 4(%eax)
-0x67 0x66 0x0f 0x01 0x58 0x04
-
-# CHECK: sgdtw 4(%eax)
-0x67 0x0f 0x01 0x40 0x04
-
-# CHECK: sgdtw 4(%eax)
-0x67 0x0f 0x01 0x40 0x04
-
-# CHECK: sgdtl 4(%eax)
-0x67 0x66 0x0f 0x01 0x40 0x04
-
-# CHECK: sidtw 4(%eax)
-0x67 0x0f 0x01 0x48 0x04
-
-# CHECK: sidtw 4(%eax)
-0x67 0x0f 0x01 0x48 0x04
-
-# CHECK: sidtl 4(%eax)
-0x67 0x66 0x0f 0x01 0x48 0x04
-
-# CHECK: fcompi %st(2)
-0xdf 0xf2
-
-# CHECK: fcompi %st(2)
-0xdf 0xf2
-
-# CHECK: fcompi %st(1)
-0xdf 0xf1
-
-# CHECK: fucompi %st(2)
-0xdf 0xea
-
-# CHECK: fucompi %st(2)
-0xdf 0xea
-
-# CHECK: fucompi %st(1)
-0xdf 0xe9
-
-# CHECK: fldcw 32493
-0xd9 0x2e 0xed 0x7e
-
-# CHECK: fldcw 32493
-0xd9 0x2e 0xed 0x7e
-
-# CHECK: fnstcw 32493
-0xd9 0x3e 0xed 0x7e
-
-# CHECK: fnstcw 32493
-0xd9 0x3e 0xed 0x7e
-
-# CHECK: wait
-0x9b
-
-# CHECK: fnstcw 32493
-0xd9 0x3e 0xed 0x7e
-
-# CHECK: wait
-0x9b
-
-# CHECK: fnstcw 32493
-0xd9 0x3e 0xed 0x7e
-
-# CHECK: fnstsw 32493
-0xdd 0x3e 0xed 0x7e
-
-# CHECK: fnstsw 32493
-0xdd 0x3e 0xed 0x7e
-
-# CHECK: wait
-0x9b
-
-# CHECK: fnstsw 32493
-0xdd 0x3e 0xed 0x7e
-
-# CHECK: wait
-0x9b
-
-# CHECK: fnstsw 32493
-0xdd 0x3e 0xed 0x7e
-
-# CHECK: verr 32493
-0x0f 0x00 0x26 0xed 0x7e
-
-# CHECK: verr 32493
-0x0f 0x00 0x26 0xed 0x7e
-
-# CHECK: wait
-0x9b
-
-# CHECK: fnclex
-0xdb 0xe2
-
-# CHECK: fnclex
-0xdb 0xe2
-
-# CHECK: ud2
-0x0f 0x0b
-
-# CHECK: ud2
-0x0f 0x0b
-
-# CHECK: ud2b
-0x0f 0xb9
-
-# CHECK: loope
-0xe1 0x00
-
-# CHECK: loopne
-0xe0 0x00
-
-# CHECK: outsb
-0x6e
-
-# CHECK: outsw
-0x6f
-
-# CHECK: outsl
-0x66 0x6f
-
-# CHECK: insb
-0x6c
-
-# CHECK: insw
-0x6d
-
-# CHECK: insl
-0x66 0x6d
-
-# CHECK: movsb
-0xa4
-
-# CHECK: movsw
-0xa5
-
-# CHECK: movsl
-0x66 0xa5
-
-# CHECK: lodsb
-0xac
-
-# CHECK: lodsw
-0xad
-
-# CHECK: lodsl
-0x66 0xad
-
-# CHECK: stosb
-0xaa
-
-# CHECK: stosw
-0xab
-
-# CHECK: stosl
-0x66 0xab
-
-# CHECK: strw %ax
-0x0f 0x00 0xc8
-
-# CHECK: strl %eax
-0x66 0x0f 0x00 0xc8
-
-# CHECK: fsubp %st(1)
-0xde 0xe1
-
-# CHECK: fsubp %st(2)
-0xde 0xe2
-
-# CHECKX: nop
-0x66 0x90
-
-# CHECKX: nop
-0x90
-
-# CHECK: xchgl %ecx, %eax
-0x66 0x91
-
-# CHECK: xchgl %ecx, %eax
-0x66 0x91
-
-# CHECK: retw
-0xc3
-
-# CHECK: retl
-0x66 0xc3
-
-# CHECK: lretw
-0xcb
-
-# CHECK: lretl
-0x66 0xcb
-
-# CHECK: callw -1
-0xe8 0xff 0xff
+# RUN: llvm-mc --disassemble %s -triple=i686-linux-gnu-code16 | FileCheck %s\r
+\r
+# CHECK: movl $305419896, %ebx\r
+0x66 0xbb 0x78 0x56 0x34 0x12\r
+\r
+# CHECK: pause\r
+0xf3 0x90\r
+\r
+# CHECK: sfence\r
+0x0f 0xae 0xf8\r
+\r
+# CHECK: lfence\r
+0x0f 0xae 0xe8\r
+\r
+# CHECK: mfence\r
+0x0f 0xae 0xf0\r
+\r
+# CHECK: stgi\r
+0x0f 0x01 0xdc\r
+\r
+# CHECK: clgi\r
+0x0f 0x01 0xdd\r
+\r
+# CHECK: rdtscp\r
+0x0f 0x01 0xf9\r
+\r
+# CHECK: movl %eax, 16(%ebp)\r
+0x67 0x66 0x89 0x45 0x10\r
+\r
+# CHECK: movl %eax, -16(%ebp)\r
+0x67 0x66 0x89 0x45 0xf0\r
+\r
+# CHECK: testb %cl, %bl\r
+0x84 0xcb\r
+\r
+# CHECK: cmpl %eax, %ebx\r
+0x66 0x39 0xc3\r
+\r
+# CHECK: addw %ax, %ax\r
+0x01 0xc0\r
+\r
+# CHECK: shrl %eax\r
+0x66 0xd1 0xe8\r
+\r
+# CHECK: shll %eax\r
+0x66 0xd1 0xe0\r
+\r
+# CHECK: shll %eax\r
+0x66 0xd1 0xe0\r
+\r
+# CHECK: movb 0, %al\r
+0xa0 0x00 0x00\r
+\r
+# CHECK: movw 0, %ax\r
+0xa1 0x00 0x00\r
+\r
+# CHECK: movl 0, %eax\r
+0x66 0xa1 0x00 0x00\r
+\r
+# CHECK: into\r
+0xce\r
+\r
+# CHECK: int3\r
+0xcc\r
+\r
+# CHECK: int $4\r
+0xcd 0x04\r
+\r
+# CHECK: int $127\r
+0xcd 0x7f\r
+\r
+# CHECK: pushfw\r
+0x9c\r
+\r
+# CHECK: pushfl\r
+0x66 0x9c\r
+\r
+# CHECK: popfw\r
+0x9d\r
+\r
+# CHECK: popfl\r
+0x66 0x9d\r
+\r
+# CHECK: retl\r
+0x66 0xc3\r
+\r
+# CHECK: cmoval %eax, %edx\r
+0x66 0x0f 0x47 0xd0\r
+\r
+# CHECK: cmovael %eax, %edx\r
+0x66 0x0f 0x43 0xd0\r
+\r
+# CHECK: cmovbel %eax, %edx\r
+0x66 0x0f 0x46 0xd0\r
+\r
+# CHECK: cmovbl %eax, %edx\r
+0x66 0x0f 0x42 0xd0\r
+\r
+# CHECK: cmovbw %bx, %bx\r
+0x0f 0x42 0xdb\r
+\r
+# CHECK: cmovbel %eax, %edx\r
+0x66 0x0f 0x46 0xd0\r
+\r
+# CHECK: cmovbl %eax, %edx\r
+0x66 0x0f 0x42 0xd0\r
+\r
+# CHECK: cmovel %eax, %edx\r
+0x66 0x0f 0x44 0xd0\r
+\r
+# CHECK: cmovgl %eax, %edx\r
+0x66 0x0f 0x4f 0xd0\r
+\r
+# CHECK: cmovgel %eax, %edx\r
+0x66 0x0f 0x4d 0xd0\r
+\r
+# CHECK: cmovll %eax, %edx\r
+0x66 0x0f 0x4c 0xd0\r
+\r
+# CHECK: cmovlel %eax, %edx\r
+0x66 0x0f 0x4e 0xd0\r
+\r
+# CHECK: cmovbel %eax, %edx\r
+0x66 0x0f 0x46 0xd0\r
+\r
+# CHECK: cmovnel %eax, %edx\r
+0x66 0x0f 0x45 0xd0\r
+\r
+# CHECK: cmovael %eax, %edx\r
+0x66 0x0f 0x43 0xd0\r
+\r
+# CHECK: cmoval %eax, %edx\r
+0x66 0x0f 0x47 0xd0\r
+\r
+# CHECK: cmovael %eax, %edx\r
+0x66 0x0f 0x43 0xd0\r
+\r
+# CHECK: cmovnel %eax, %edx\r
+0x66 0x0f 0x45 0xd0\r
+\r
+# CHECK: cmovlel %eax, %edx\r
+0x66 0x0f 0x4e 0xd0\r
+\r
+# CHECK: cmovgel %eax, %edx\r
+0x66 0x0f 0x4d 0xd0\r
+\r
+# CHECK: cmovnel %eax, %edx\r
+0x66 0x0f 0x45 0xd0\r
+\r
+# CHECK: cmovlel %eax, %edx\r
+0x66 0x0f 0x4e 0xd0\r
+\r
+# CHECK: cmovll %eax, %edx\r
+0x66 0x0f 0x4c 0xd0\r
+\r
+# CHECK: cmovgel %eax, %edx\r
+0x66 0x0f 0x4d 0xd0\r
+\r
+# CHECK: cmovgl %eax, %edx\r
+0x66 0x0f 0x4f 0xd0\r
+\r
+# CHECK: cmovnol %eax, %edx\r
+0x66 0x0f 0x41 0xd0\r
+\r
+# CHECK: cmovnpl %eax, %edx\r
+0x66 0x0f 0x4b 0xd0\r
+\r
+# CHECK: cmovnsl %eax, %edx\r
+0x66 0x0f 0x49 0xd0\r
+\r
+# CHECK: cmovnel %eax, %edx\r
+0x66 0x0f 0x45 0xd0\r
+\r
+# CHECK: cmovol %eax, %edx\r
+0x66 0x0f 0x40 0xd0\r
+\r
+# CHECK: cmovpl %eax, %edx\r
+0x66 0x0f 0x4a 0xd0\r
+\r
+# CHECK: cmovsl %eax, %edx\r
+0x66 0x0f 0x48 0xd0\r
+\r
+# CHECK: cmovel %eax, %edx\r
+0x66 0x0f 0x44 0xd0\r
+\r
+# CHECK: fmul %st(0)\r
+0xd8 0xc8\r
+\r
+# CHECK: fadd %st(0)\r
+0xd8 0xc0\r
+\r
+# CHECK: fsub %st(0)\r
+0xd8 0xe0\r
+\r
+# CHECK: fsubr %st(0)\r
+0xd8 0xe8\r
+\r
+# CHECK: fdivr %st(0)\r
+0xd8 0xf8\r
+\r
+# CHECK: fdiv %st(0)\r
+0xd8 0xf0\r
+\r
+# CHECK: movl %cs, %eax\r
+0x66 0x8c 0xc8\r
+\r
+# CHECK: movw %cs, %ax\r
+0x8c 0xc8\r
+\r
+# CHECK: movl %cs, (%eax)\r
+0x67 0x66 0x8c 0x08\r
+\r
+# CHECK: movw %cs, (%eax)\r
+0x67 0x8c 0x08\r
+\r
+# CHECK: movl %eax, %cs\r
+0x66 0x8e 0xc8\r
+\r
+# CHECK: movl (%eax), %cs\r
+0x67 0x66 0x8e 0x08\r
+\r
+# CHECK: movw (%eax), %cs\r
+0x67 0x8e 0x08\r
+\r
+# CHECKX: movl %cr0, %eax\r
+0x0f 0x20 0xc0\r
+\r
+# CHECKX: movl %cr1, %eax\r
+0x0f 0x20 0xc8\r
+\r
+# CHECKX: movl %cr2, %eax\r
+0x0f 0x20 0xd0\r
+\r
+# CHECKX: movl %cr3, %eax\r
+0x0f 0x20 0xd8\r
+\r
+# CHECKX: movl %cr4, %eax\r
+0x0f 0x20 0xe0\r
+\r
+# CHECKX: movl %dr0, %eax\r
+0x0f 0x21 0xc0\r
+\r
+# CHECKX: movl %dr1, %eax\r
+0x0f 0x21 0xc8\r
+\r
+# CHECKX: movl %dr1, %eax\r
+0x0f 0x21 0xc8\r
+\r
+# CHECKX: movl %dr2, %eax\r
+0x0f 0x21 0xd0\r
+\r
+# CHECKX: movl %dr3, %eax\r
+0x0f 0x21 0xd8\r
+\r
+# CHECKX: movl %dr4, %eax\r
+0x0f 0x21 0xe0\r
+\r
+# CHECKX: movl %dr5, %eax\r
+0x0f 0x21 0xe8\r
+\r
+# CHECKX: movl %dr6, %eax\r
+0x0f 0x21 0xf0\r
+\r
+# CHECKX: movl %dr7, %eax\r
+0x0f 0x21 0xf8\r
+\r
+# CHECK: wait\r
+0x9b\r
+\r
+# CHECK: movl %gs:124, %eax\r
+0x65 0x66 0x8b 0x06 0x7c 0x00\r
+\r
+# CHECK: pushaw\r
+0x60\r
+\r
+# CHECK: popaw\r
+0x61\r
+\r
+# CHECK: pushaw\r
+0x60\r
+\r
+# CHECK: popaw\r
+0x61\r
+\r
+# CHECK: pushal\r
+0x66 0x60\r
+\r
+# CHECK: popal\r
+0x66 0x61\r
+\r
+# CHECK: jmpw *8(%eax)\r
+0x67 0xff 0x60 0x08\r
+\r
+# CHECK: jmpl *8(%eax)\r
+0x67 0x66 0xff 0x60 0x08\r
+\r
+# CHECK: lcalll $2, $4660\r
+0x66 0x9a 0x34 0x12 0x00 0x00 0x02 0x00\r
+\r
+# CHECK: jcxz\r
+0xe3 0x00\r
+\r
+# CHECK: jecxz\r
+0x67 0xe3 0x00\r
+\r
+# CHECK: iretw\r
+0xcf\r
+\r
+# CHECK: iretw\r
+0xcf\r
+\r
+# CHECK: iretl\r
+0x66 0xcf\r
+\r
+# CHECK: sysretl\r
+0x0f 0x07\r
+\r
+# CHECK: sysretl\r
+0x0f 0x07\r
+\r
+# CHECK: testl -24(%ebp), %ecx\r
+0x67 0x66 0x85 0x4d 0xe8\r
+\r
+# CHECK: testl -24(%ebp), %ecx\r
+0x67 0x66 0x85 0x4d 0xe8\r
+\r
+# CHECK: pushw %cs\r
+0x0e\r
+\r
+# CHECK: pushw %ds\r
+0x1e\r
+\r
+# CHECK: pushw %ss\r
+0x16\r
+\r
+# CHECK: pushw %es\r
+0x06\r
+\r
+# CHECK: pushw %fs\r
+0x0f 0xa0\r
+\r
+# CHECK: pushw %gs\r
+0x0f 0xa8\r
+\r
+# CHECK: pushw %cs\r
+0x0e\r
+\r
+# CHECK: pushw %ds\r
+0x1e\r
+\r
+# CHECK: pushw %ss\r
+0x16\r
+\r
+# CHECK: pushw %es\r
+0x06\r
+\r
+# CHECK: pushw %fs\r
+0x0f 0xa0\r
+\r
+# CHECK: pushw %gs\r
+0x0f 0xa8\r
+\r
+# CHECK: pushl %cs\r
+0x66 0x0e\r
+\r
+# CHECK: pushl %ds\r
+0x66 0x1e\r
+\r
+# CHECK: pushl %ss\r
+0x66 0x16\r
+\r
+# CHECK: pushl %es\r
+0x66 0x06\r
+\r
+# CHECK: pushl %fs\r
+0x66 0x0f 0xa0\r
+\r
+# CHECK: pushl %gs\r
+0x66 0x0f 0xa8\r
+\r
+# CHECK: popw %ss\r
+0x17\r
+\r
+# CHECK: popw %ds\r
+0x1f\r
+\r
+# CHECK: popw %es\r
+0x07\r
+\r
+# CHECK: popl %ss\r
+0x66 0x17\r
+\r
+# CHECK: popl %ds\r
+0x66 0x1f\r
+\r
+# CHECK: popl %es\r
+0x66 0x07\r
+\r
+# CHECK: pushfl\r
+0x66 0x9c\r
+\r
+# CHECK: popfl\r
+0x66 0x9d\r
+\r
+# CHECK: pushfl\r
+0x66 0x9c\r
+\r
+# CHECK: popfl\r
+0x66 0x9d\r
+\r
+# CHECK: salc\r
+0xd6\r
+\r
+# CHECK: setb %bl\r
+0x0f 0x92 0xc3\r
+\r
+# CHECK: setb %bl\r
+0x0f 0x92 0xc3\r
+\r
+# CHECK: setae %bl\r
+0x0f 0x93 0xc3\r
+\r
+# CHECK: setae %bl\r
+0x0f 0x93 0xc3\r
+\r
+# CHECK: setbe %bl\r
+0x0f 0x96 0xc3\r
+\r
+# CHECK: seta %bl\r
+0x0f 0x97 0xc3\r
+\r
+# CHECK: setp %bl\r
+0x0f 0x9a 0xc3\r
+\r
+# CHECK: setnp %bl\r
+0x0f 0x9b 0xc3\r
+\r
+# CHECK: setl %bl\r
+0x0f 0x9c 0xc3\r
+\r
+# CHECK: setge %bl\r
+0x0f 0x9d 0xc3\r
+\r
+# CHECK: setle %bl\r
+0x0f 0x9e 0xc3\r
+\r
+# CHECK: setg %bl\r
+0x0f 0x9f 0xc3\r
+\r
+# CHECK: setne %cl\r
+0x0f 0x95 0xc1\r
+\r
+# CHECK: setb %bl\r
+0x0f 0x92 0xc3\r
+\r
+# CHECK: setb %bl\r
+0x0f 0x92 0xc3\r
+\r
+# CHECK: lcalll $31438, $31438\r
+0x66 0x9a 0xce 0x7a 0x00 0x00 0xce 0x7a\r
+\r
+# CHECK: lcalll $31438, $31438\r
+0x66 0x9a 0xce 0x7a 0x00 0x00 0xce 0x7a\r
+\r
+# CHECK: ljmpl $31438, $31438\r
+0x66 0xea 0xce 0x7a 0x00 0x00 0xce 0x7a\r
+\r
+# CHECK: ljmpl $31438, $31438\r
+0x66 0xea 0xce 0x7a 0x00 0x00 0xce 0x7a\r
+\r
+# CHECK: lcallw $31438, $31438\r
+0x9a 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: lcallw $31438, $31438\r
+0x9a 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: ljmpw $31438, $31438\r
+0xea 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: ljmpw $31438, $31438\r
+0xea 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: lcallw $31438, $31438\r
+0x9a 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: lcallw $31438, $31438\r
+0x9a 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: ljmpw $31438, $31438\r
+0xea 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: ljmpw $31438, $31438\r
+0xea 0xce 0x7a 0xce 0x7a\r
+\r
+# CHECK: calll \r
+0x66 0xe8 0x00 0x00 0x00 0x00\r
+\r
+# CHECK: callw\r
+0xe8 0x00 0x00\r
+\r
+# CHECK: incb %al\r
+0xfe 0xc0\r
+\r
+# CHECK: incw %ax\r
+0x40\r
+\r
+# CHECK: incl %eax\r
+0x66 0x40\r
+\r
+# CHECK: decb %al\r
+0xfe 0xc8\r
+\r
+# CHECK: decw %ax\r
+0x48\r
+\r
+# CHECK: decl %eax\r
+0x66 0x48\r
+\r
+# CHECK: pshufw $14, %mm4, %mm0\r
+0x0f 0x70 0xc4 0x0e\r
+\r
+# CHECK: pshufw $90, %mm4, %mm0\r
+0x0f 0x70 0xc4 0x5a\r
+\r
+# CHECK: aaa\r
+0x37\r
+\r
+# CHECK: aad $1\r
+0xd5 0x01\r
+\r
+# CHECK: aad\r
+0xd5 0x0a\r
+\r
+# CHECK: aad\r
+0xd5 0x0a\r
+\r
+# CHECK: aam $2\r
+0xd4 0x02\r
+\r
+# CHECK: aam\r
+0xd4 0x0a\r
+\r
+# CHECK: aam\r
+0xd4 0x0a\r
+\r
+# CHECK: aas\r
+0x3f\r
+\r
+# CHECK: daa\r
+0x27\r
+\r
+# CHECK: das\r
+0x2f\r
+\r
+# CHECK: retw $31438\r
+0xc2 0xce 0x7a\r
+\r
+# CHECK: lretw $31438\r
+0xca 0xce 0x7a\r
+\r
+# CHECK: retw $31438\r
+0xc2 0xce 0x7a\r
+\r
+# CHECK: lretw $31438\r
+0xca 0xce 0x7a\r
+\r
+# CHECK: retl $31438\r
+0x66 0xc2 0xce 0x7a\r
+\r
+# CHECK: lretl $31438\r
+0x66 0xca 0xce 0x7a\r
+\r
+# CHECK: bound 2(%eax), %bx\r
+0x67 0x62 0x58 0x02\r
+\r
+# CHECK: bound 4(%ebx), %ecx\r
+0x67 0x66 0x62 0x4b 0x04\r
+\r
+# CHECK: arpl %bx, %bx\r
+0x63 0xdb\r
+\r
+# CHECK: arpl %bx, 6(%ecx)\r
+0x67 0x63 0x59 0x06\r
+\r
+# CHECK: lgdtw 4(%eax)\r
+0x67 0x0f 0x01 0x50 0x04\r
+\r
+# CHECK: lgdtw 4(%eax)\r
+0x67 0x0f 0x01 0x50 0x04\r
+\r
+# CHECK: lgdtl 4(%eax)\r
+0x67 0x66 0x0f 0x01 0x50 0x04\r
+\r
+# CHECK: lidtw 4(%eax)\r
+0x67 0x0f 0x01 0x58 0x04\r
+\r
+# CHECK: lidtw 4(%eax)\r
+0x67 0x0f 0x01 0x58 0x04\r
+\r
+# CHECK: lidtl 4(%eax)\r
+0x67 0x66 0x0f 0x01 0x58 0x04\r
+\r
+# CHECK: sgdtw 4(%eax)\r
+0x67 0x0f 0x01 0x40 0x04\r
+\r
+# CHECK: sgdtw 4(%eax)\r
+0x67 0x0f 0x01 0x40 0x04\r
+\r
+# CHECK: sgdtl 4(%eax)\r
+0x67 0x66 0x0f 0x01 0x40 0x04\r
+\r
+# CHECK: sidtw 4(%eax)\r
+0x67 0x0f 0x01 0x48 0x04\r
+\r
+# CHECK: sidtw 4(%eax)\r
+0x67 0x0f 0x01 0x48 0x04\r
+\r
+# CHECK: sidtl 4(%eax)\r
+0x67 0x66 0x0f 0x01 0x48 0x04\r
+\r
+# CHECK: fcompi %st(2)\r
+0xdf 0xf2\r
+\r
+# CHECK: fcompi %st(2)\r
+0xdf 0xf2\r
+\r
+# CHECK: fcompi %st(1)\r
+0xdf 0xf1\r
+\r
+# CHECK: fucompi %st(2)\r
+0xdf 0xea\r
+\r
+# CHECK: fucompi %st(2)\r
+0xdf 0xea\r
+\r
+# CHECK: fucompi %st(1)\r
+0xdf 0xe9\r
+\r
+# CHECK: fldcw 32493\r
+0xd9 0x2e 0xed 0x7e\r
+\r
+# CHECK: fldcw 32493\r
+0xd9 0x2e 0xed 0x7e\r
+\r
+# CHECK: fnstcw 32493\r
+0xd9 0x3e 0xed 0x7e\r
+\r
+# CHECK: fnstcw 32493\r
+0xd9 0x3e 0xed 0x7e\r
+\r
+# CHECK: wait\r
+0x9b\r
+\r
+# CHECK: fnstcw 32493\r
+0xd9 0x3e 0xed 0x7e\r
+\r
+# CHECK: wait\r
+0x9b\r
+\r
+# CHECK: fnstcw 32493\r
+0xd9 0x3e 0xed 0x7e\r
+\r
+# CHECK: fnstsw 32493\r
+0xdd 0x3e 0xed 0x7e\r
+\r
+# CHECK: fnstsw 32493\r
+0xdd 0x3e 0xed 0x7e\r
+\r
+# CHECK: wait\r
+0x9b\r
+\r
+# CHECK: fnstsw 32493\r
+0xdd 0x3e 0xed 0x7e\r
+\r
+# CHECK: wait\r
+0x9b\r
+\r
+# CHECK: fnstsw 32493\r
+0xdd 0x3e 0xed 0x7e\r
+\r
+# CHECK: verr 32493\r
+0x0f 0x00 0x26 0xed 0x7e\r
+\r
+# CHECK: verr 32493\r
+0x0f 0x00 0x26 0xed 0x7e\r
+\r
+# CHECK: wait\r
+0x9b\r
+\r
+# CHECK: fnclex\r
+0xdb 0xe2\r
+\r
+# CHECK: fnclex\r
+0xdb 0xe2\r
+\r
+# CHECK: ud2\r
+0x0f 0x0b\r
+\r
+# CHECK: ud2\r
+0x0f 0x0b\r
+\r
+# CHECK: ud2b\r
+0x0f 0xb9\r
+\r
+# CHECK: loope\r
+0xe1 0x00\r
+\r
+# CHECK: loopne\r
+0xe0 0x00\r
+\r
+# CHECK: outsb\r
+0x6e\r
+\r
+# CHECK: outsw\r
+0x6f\r
+\r
+# CHECK: outsl\r
+0x66 0x6f\r
+\r
+# CHECK: insb\r
+0x6c\r
+\r
+# CHECK: insw\r
+0x6d\r
+\r
+# CHECK: insl\r
+0x66 0x6d\r
+\r
+# CHECK: movsb\r
+0xa4\r
+\r
+# CHECK: movsw\r
+0xa5\r
+\r
+# CHECK: movsl\r
+0x66 0xa5\r
+\r
+# CHECK: lodsb\r
+0xac\r
+\r
+# CHECK: lodsw\r
+0xad\r
+\r
+# CHECK: lodsl\r
+0x66 0xad\r
+\r
+# CHECK: stosb\r
+0xaa\r
+\r
+# CHECK: stosw\r
+0xab\r
+\r
+# CHECK: stosl\r
+0x66 0xab\r
+\r
+# CHECK: strw %ax\r
+0x0f 0x00 0xc8\r
+\r
+# CHECK: strl %eax\r
+0x66 0x0f 0x00 0xc8\r
+\r
+# CHECK: fsubp %st(1)\r
+0xde 0xe1\r
+\r
+# CHECK: fsubp %st(2)\r
+0xde 0xe2\r
+\r
+# CHECKX: nop\r
+0x66 0x90\r
+\r
+# CHECKX: nop\r
+0x90\r
+\r
+# CHECK: xchgl %ecx, %eax\r
+0x66 0x91\r
+\r
+# CHECK: xchgl %ecx, %eax\r
+0x66 0x91\r
+\r
+# CHECK: retw\r
+0xc3\r
+\r
+# CHECK: retl\r
+0x66 0xc3\r
+\r
+# CHECK: lretw\r
+0xcb\r
+\r
+# CHECK: lretl\r
+0x66 0xcb\r
+\r
+# CHECK: callw -1\r
+0xe8 0xff 0xff\r
index 1c4d9cd74ce46350556214b54cd5e597b8027e6a..69915b649b829d5f65752bb8a143b397bce835ab 100644 (file)
 // CHECK:  encoding: [0xfb]\r
                sti\r
 \r
+// CHECK: salc\r
+// CHECK:  encoding: [0xd6]\r
+               salc\r
+\r
 // CHECK: addb $254, 3735928559(%ebx,%ecx,8)\r
 // CHECK:  encoding: [0x80,0x84,0xcb,0xef,0xbe,0xad,0xde,0xfe]\r
                addb    $0xfe,0xdeadbeef(%ebx,%ecx,8)\r