[llvm-commits] [llvm] r113182 - in /llvm/trunk: lib/Target/X86/X86InstrInfo.td test/MC/AsmParser/X86/x86_instructions.s

Chris Lattner sabre at nondot.org
Mon Sep 6 16:29:05 PDT 2010


Author: lattner
Date: Mon Sep  6 18:29:05 2010
New Revision: 113182

URL: http://llvm.org/viewvc/llvm-project?rev=113182&view=rev
Log:
fix the operand constraints of the immediate form of in/out,
allowing unsigned 8-bit operands.  This fixes rdar://8208481


Modified:
    llvm/trunk/lib/Target/X86/X86InstrInfo.td
    llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s

Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=113182&r1=113181&r2=113182&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Mon Sep  6 18:29:05 2010
@@ -978,13 +978,13 @@
                "in{l}\t{%dx, %eax|%EAX, %DX}", []>;
 
 let Defs = [AL] in
-def IN8ri  : Ii8<0xE4, RawFrm, (outs), (ins i16i8imm:$port),
+def IN8ri  : Ii8<0xE4, RawFrm, (outs), (ins i8imm:$port),
                   "in{b}\t{$port, %al|%AL, $port}", []>;
 let Defs = [AX] in
-def IN16ri : Ii8<0xE5, RawFrm, (outs), (ins i16i8imm:$port),
+def IN16ri : Ii8<0xE5, RawFrm, (outs), (ins i8imm:$port),
                   "in{w}\t{$port, %ax|%AX, $port}", []>, OpSize;
 let Defs = [EAX] in
-def IN32ri : Ii8<0xE5, RawFrm, (outs), (ins i16i8imm:$port),
+def IN32ri : Ii8<0xE5, RawFrm, (outs), (ins i8imm:$port),
                   "in{l}\t{$port, %eax|%EAX, $port}", []>;
 
 let Uses = [DX, AL] in
@@ -998,13 +998,13 @@
                 "out{l}\t{%eax, %dx|%DX, %EAX}", []>;
 
 let Uses = [AL] in
-def OUT8ir  : Ii8<0xE6, RawFrm, (outs), (ins i16i8imm:$port),
+def OUT8ir  : Ii8<0xE6, RawFrm, (outs), (ins i8imm:$port),
                    "out{b}\t{%al, $port|$port, %AL}", []>;
 let Uses = [AX] in
-def OUT16ir : Ii8<0xE7, RawFrm, (outs), (ins i16i8imm:$port),
+def OUT16ir : Ii8<0xE7, RawFrm, (outs), (ins i8imm:$port),
                    "out{w}\t{%ax, $port|$port, %AX}", []>, OpSize;
 let Uses = [EAX] in
-def OUT32ir : Ii8<0xE7, RawFrm, (outs), (ins i16i8imm:$port),
+def OUT32ir : Ii8<0xE7, RawFrm, (outs), (ins i8imm:$port),
                    "out{l}\t{%eax, $port|$port, %EAX}", []>;
 
 def IN8  : I<0x6C, RawFrm, (outs), (ins),

Modified: llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s?rev=113182&r1=113181&r2=113182&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s (original)
+++ llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s Mon Sep  6 18:29:05 2010
@@ -164,3 +164,12 @@
 
 // CHECK: imull %ecx, %eax
 imull %ecx, %eax
+
+
+// rdar://8208481
+// CHECK: outb	%al, $161
+outb	%al, $161
+// CHECK: outw	%ax, $128
+outw	%ax, $128
+// CHECK: inb	$161, %al
+inb	$161, %al





More information about the llvm-commits mailing list