summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2011-09-20 21:39:21 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2011-09-20 21:39:21 +0000
commit448d98685847a1daf7451b95904ae92a3cbab2ac (patch)
tree9abda2614f376890139c3a5fd34f93c5d8209883
parent77169a919718b74f62ab6a577f65ac5ef9547aba (diff)
downloadllvm-448d98685847a1daf7451b95904ae92a3cbab2ac.tar.gz
llvm-448d98685847a1daf7451b95904ae92a3cbab2ac.tar.bz2
llvm-448d98685847a1daf7451b95904ae92a3cbab2ac.tar.xz
The wrong relocation was being emitted for several SSSE3 instructions.
This fixes PR10963. Thanks to Benjamin for finding the wrong tablegen declaration. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140184 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86InstrSSE.td2
-rw-r--r--test/MC/X86/x86_64-avx-encoding.s6
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td
index f9330dc7d3..4a8b766511 100644
--- a/lib/Target/X86/X86InstrSSE.td
+++ b/lib/Target/X86/X86InstrSSE.td
@@ -4851,7 +4851,7 @@ multiclass SS3I_binop_rm_int<bits<8> opc, string OpcodeStr,
(bitconvert (memopv16i8 addr:$src2))))]>, OpSize;
}
-let Predicates = [HasAVX] in {
+let ImmT = NoImm, Predicates = [HasAVX] in {
let isCommutable = 0 in {
defm VPHADDW : SS3I_binop_rm_int<0x01, "vphaddw", memopv8i16,
int_x86_ssse3_phadd_w_128, 0>, VEX_4V;
diff --git a/test/MC/X86/x86_64-avx-encoding.s b/test/MC/X86/x86_64-avx-encoding.s
index 8d1f6ca4c8..d3b226f205 100644
--- a/test/MC/X86/x86_64-avx-encoding.s
+++ b/test/MC/X86/x86_64-avx-encoding.s
@@ -3340,3 +3340,9 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11
// CHECK: encoding: [0xc4,0xa1,0x78,0x29,0x1c,0x18]
vmovaps %xmm3, (%rax,%r11)
+// CHECK: vpshufb _foo(%rip), %xmm0, %xmm0
+// CHECK: encoding: [0xc4,0xe2,0x79,0x00,0x05,A,A,A,A]
+// CHECK: kind: reloc_riprel_4byte
+_foo:
+ nop
+ vpshufb _foo(%rip), %xmm0, %xmm0