-//===-- 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
-# 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