The BT64ri8 record in X86Instr64bit.td was missing a REX_W which is required
authorKevin Enderby <enderby@apple.com>
Tue, 25 May 2010 18:16:58 +0000 (18:16 +0000)
committerKevin Enderby <enderby@apple.com>
Tue, 25 May 2010 18:16:58 +0000 (18:16 +0000)
for the 64-bit version of the Bit Test instruction.

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

lib/Target/X86/X86Instr64bit.td
test/MC/AsmParser/X86/x86_64-new-encoder.s

index a3750a946057d8f9ec6d17c0ab8ead7132b6b8a6..b7d3b4b9c825123cf0c9d20d6a2890d9db42d309 100644 (file)
@@ -1313,7 +1313,8 @@ def BT64mr : RI<0xA3, MRMDestMem, (outs), (ins i64mem:$src1, GR64:$src2),
 
 def BT64ri8 : Ii8<0xBA, MRM4r, (outs), (ins GR64:$src1, i64i8imm:$src2),
                 "bt{q}\t{$src2, $src1|$src1, $src2}",
-                [(set EFLAGS, (X86bt GR64:$src1, i64immSExt8:$src2))]>, TB;
+                [(set EFLAGS, (X86bt GR64:$src1, i64immSExt8:$src2))]>, TB,
+               REX_W;
 // Note that these instructions don't need FastBTMem because that
 // only applies when the other operand is in a register. When it's
 // an immediate, bt is still fast.
index 6cd22d03051d700a6d92d9f4dc1e701abc4627de..6988110be2de62d7bc1912e66754ad3cfe031b8e 100644 (file)
@@ -126,3 +126,8 @@ movl        0, %eax   // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,A,A,A,A]
 // CHECK: jne
 // CHECK: encoding: [0x75,A]
         jnz 0
+
+// rdar://8017515
+btq $0x01,%rdx
+// CHECK: btq  $1, %rdx
+// CHECK:  encoding: [0x48,0x0f,0xba,0xe2,0x01]