1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

The 'vpmultishiftqb' instruction was implemented falsely, this patch amend it.

More specifically - (MS dialect) broadcasting variants were implemented falsely.

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

llvm-svn: 287501
This commit is contained in:
Coby Tayree 2016-11-20 17:19:55 +00:00
parent dfe03a8851
commit c8112b9e1c
2 changed files with 39 additions and 2 deletions

View File

@ -3942,10 +3942,10 @@ multiclass avx512_binop_rm2<bits<8> opc, string OpcodeStr, OpndItins itins,
AVX512BIBase, EVEX_4V;
defm rmb : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
(ins _Src.RC:$src1, _Dst.ScalarMemOp:$src2),
(ins _Src.RC:$src1, _Brdct.ScalarMemOp:$src2),
OpcodeStr,
"${src2}"##_Brdct.BroadcastStr##", $src1",
"$src1, ${src2}"##_Dst.BroadcastStr,
"$src1, ${src2}"##_Brdct.BroadcastStr,
(_Dst.VT (OpNode (_Src.VT _Src.RC:$src1), (bitconvert
(_Brdct.VT (X86VBroadcast
(_Brdct.ScalarLdFrag addr:$src2)))))),

View File

@ -0,0 +1,37 @@
// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512vl,+avx512vbmi -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
// CHECK: vpmultishiftqb xmm1, xmm2, qword ptr [rcx]{1to2}
// CHECK: encoding: [0x62,0xf2,0xed,0x18,0x83,0x09]
vpmultishiftqb xmm1, xmm2, qword ptr [rcx]{1to2}
// CHECK: vpmultishiftqb xmm1 {k1}, xmm2, qword ptr [rcx]{1to2}
// CHECK: encoding: [0x62,0xf2,0xed,0x19,0x83,0x09]
vpmultishiftqb xmm1 {k1}, xmm2, qword ptr [rcx]{1to2}
// CHECK: vpmultishiftqb xmm1 {k1} {z}, xmm2, qword ptr [rcx]{1to2}
// CHECK: encoding: [0x62,0xf2,0xed,0x99,0x83,0x09]
vpmultishiftqb xmm1 {k1} {z}, xmm2, qword ptr [rcx]{1to2}
// CHECK: vpmultishiftqb ymm1, ymm2, qword ptr [rcx]{1to4}
// CHECK: encoding: [0x62,0xf2,0xed,0x38,0x83,0x09]
vpmultishiftqb ymm1, ymm2, qword ptr [rcx]{1to4}
// CHECK: vpmultishiftqb ymm1 {k1}, ymm2, qword ptr [rcx]{1to4}
// CHECK: encoding: [0x62,0xf2,0xed,0x39,0x83,0x09]
vpmultishiftqb ymm1 {k1}, ymm2, qword ptr [rcx]{1to4}
// CHECK: vpmultishiftqb ymm1 {k1} {z}, ymm2, qword ptr [rcx]{1to4}
// CHECK: encoding: [0x62,0xf2,0xed,0xb9,0x83,0x09]
vpmultishiftqb ymm1 {k1} {z}, ymm2, qword ptr [rcx]{1to4}
// CHECK: vpmultishiftqb zmm1, zmm2, qword ptr [rcx]{1to8}
// CHECK: encoding: [0x62,0xf2,0xed,0x58,0x83,0x09]
vpmultishiftqb zmm1, zmm2, qword ptr [rcx]{1to8}
// CHECK: vpmultishiftqb zmm1 {k1}, zmm2, qword ptr [rcx]{1to8}
// CHECK: encoding: [0x62,0xf2,0xed,0x59,0x83,0x09]
vpmultishiftqb zmm1 {k1}, zmm2, qword ptr [rcx]{1to8}
// CHECK: vpmultishiftqb zmm1 {k1} {z}, zmm2, qword ptr [rcx]{1to8}
// CHECK: encoding: [0x62,0xf2,0xed,0xd9,0x83,0x09]
vpmultishiftqb zmm1 {k1} {z}, zmm2, qword ptr [rcx]{1to8}