Add the rest of AVX SSE4.1 packed move with sign/zero extend instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107723 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes 2010-07-06 23:15:17 +00:00
parent e6fd5ad6f4
commit ee94e8297e
3 changed files with 112 additions and 0 deletions

View File

@ -4370,6 +4370,17 @@ multiclass SS41I_binop_rm_int4<bits<8> opc, string OpcodeStr, Intrinsic IntId> {
OpSize;
}
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in {
defm VPMOVSXBD : SS41I_binop_rm_int4<0x21, "vpmovsxbd", int_x86_sse41_pmovsxbd>,
VEX;
defm VPMOVSXWQ : SS41I_binop_rm_int4<0x24, "vpmovsxwq", int_x86_sse41_pmovsxwq>,
VEX;
defm VPMOVZXBD : SS41I_binop_rm_int4<0x31, "vpmovzxbd", int_x86_sse41_pmovzxbd>,
VEX;
defm VPMOVZXWQ : SS41I_binop_rm_int4<0x34, "vpmovzxwq", int_x86_sse41_pmovzxwq>,
VEX;
}
defm PMOVSXBD : SS41I_binop_rm_int4<0x21, "pmovsxbd", int_x86_sse41_pmovsxbd>;
defm PMOVSXWQ : SS41I_binop_rm_int4<0x24, "pmovsxwq", int_x86_sse41_pmovsxwq>;
defm PMOVZXBD : SS41I_binop_rm_int4<0x31, "pmovzxbd", int_x86_sse41_pmovzxbd>;
@ -4400,6 +4411,12 @@ multiclass SS41I_binop_rm_int2<bits<8> opc, string OpcodeStr, Intrinsic IntId> {
OpSize;
}
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in {
defm VPMOVSXBQ : SS41I_binop_rm_int2<0x22, "vpmovsxbq", int_x86_sse41_pmovsxbq>,
VEX;
defm VPMOVZXBQ : SS41I_binop_rm_int2<0x32, "vpmovzxbq", int_x86_sse41_pmovzxbq>,
VEX;
}
defm PMOVSXBQ : SS41I_binop_rm_int2<0x22, "pmovsxbq", int_x86_sse41_pmovsxbq>;
defm PMOVZXBQ : SS41I_binop_rm_int2<0x32, "pmovzxbq", int_x86_sse41_pmovzxbq>;

View File

@ -11998,3 +11998,51 @@
// CHECK: encoding: [0xc4,0xe2,0x79,0x35,0x10]
vpmovzxdq (%eax), %xmm2
// CHECK: vpmovsxbq %xmm2, %xmm5
// CHECK: encoding: [0xc4,0xe2,0x79,0x22,0xea]
vpmovsxbq %xmm2, %xmm5
// CHECK: vpmovsxbq (%eax), %xmm2
// CHECK: encoding: [0xc4,0xe2,0x79,0x22,0x10]
vpmovsxbq (%eax), %xmm2
// CHECK: vpmovzxbq %xmm2, %xmm5
// CHECK: encoding: [0xc4,0xe2,0x79,0x32,0xea]
vpmovzxbq %xmm2, %xmm5
// CHECK: vpmovzxbq (%eax), %xmm2
// CHECK: encoding: [0xc4,0xe2,0x79,0x32,0x10]
vpmovzxbq (%eax), %xmm2
// CHECK: vpmovsxbd %xmm2, %xmm5
// CHECK: encoding: [0xc4,0xe2,0x79,0x21,0xea]
vpmovsxbd %xmm2, %xmm5
// CHECK: vpmovsxbd (%eax), %xmm2
// CHECK: encoding: [0xc4,0xe2,0x79,0x21,0x10]
vpmovsxbd (%eax), %xmm2
// CHECK: vpmovsxwq %xmm2, %xmm5
// CHECK: encoding: [0xc4,0xe2,0x79,0x24,0xea]
vpmovsxwq %xmm2, %xmm5
// CHECK: vpmovsxwq (%eax), %xmm2
// CHECK: encoding: [0xc4,0xe2,0x79,0x24,0x10]
vpmovsxwq (%eax), %xmm2
// CHECK: vpmovzxbd %xmm2, %xmm5
// CHECK: encoding: [0xc4,0xe2,0x79,0x31,0xea]
vpmovzxbd %xmm2, %xmm5
// CHECK: vpmovzxbd (%eax), %xmm2
// CHECK: encoding: [0xc4,0xe2,0x79,0x31,0x10]
vpmovzxbd (%eax), %xmm2
// CHECK: vpmovzxwq %xmm2, %xmm5
// CHECK: encoding: [0xc4,0xe2,0x79,0x34,0xea]
vpmovzxwq %xmm2, %xmm5
// CHECK: vpmovzxwq (%eax), %xmm2
// CHECK: encoding: [0xc4,0xe2,0x79,0x34,0x10]
vpmovzxwq (%eax), %xmm2

View File

@ -2046,4 +2046,51 @@ pshufb CPI1_0(%rip), %xmm1
// CHECK: encoding: [0xc4,0x62,0x79,0x35,0x20]
vpmovzxdq (%rax), %xmm12
// CHECK: vpmovsxbq %xmm12, %xmm10
// CHECK: encoding: [0xc4,0x42,0x79,0x22,0xd4]
vpmovsxbq %xmm12, %xmm10
// CHECK: vpmovsxbq (%rax), %xmm12
// CHECK: encoding: [0xc4,0x62,0x79,0x22,0x20]
vpmovsxbq (%rax), %xmm12
// CHECK: vpmovzxbq %xmm12, %xmm10
// CHECK: encoding: [0xc4,0x42,0x79,0x32,0xd4]
vpmovzxbq %xmm12, %xmm10
// CHECK: vpmovzxbq (%rax), %xmm12
// CHECK: encoding: [0xc4,0x62,0x79,0x32,0x20]
vpmovzxbq (%rax), %xmm12
// CHECK: vpmovsxbd %xmm12, %xmm10
// CHECK: encoding: [0xc4,0x42,0x79,0x21,0xd4]
vpmovsxbd %xmm12, %xmm10
// CHECK: vpmovsxbd (%rax), %xmm12
// CHECK: encoding: [0xc4,0x62,0x79,0x21,0x20]
vpmovsxbd (%rax), %xmm12
// CHECK: vpmovsxwq %xmm12, %xmm10
// CHECK: encoding: [0xc4,0x42,0x79,0x24,0xd4]
vpmovsxwq %xmm12, %xmm10
// CHECK: vpmovsxwq (%rax), %xmm12
// CHECK: encoding: [0xc4,0x62,0x79,0x24,0x20]
vpmovsxwq (%rax), %xmm12
// CHECK: vpmovzxbd %xmm12, %xmm10
// CHECK: encoding: [0xc4,0x42,0x79,0x31,0xd4]
vpmovzxbd %xmm12, %xmm10
// CHECK: vpmovzxbd (%rax), %xmm12
// CHECK: encoding: [0xc4,0x62,0x79,0x31,0x20]
vpmovzxbd (%rax), %xmm12
// CHECK: vpmovzxwq %xmm12, %xmm10
// CHECK: encoding: [0xc4,0x42,0x79,0x34,0xd4]
vpmovzxwq %xmm12, %xmm10
// CHECK: vpmovzxwq (%rax), %xmm12
// CHECK: encoding: [0xc4,0x62,0x79,0x34,0x20]
vpmovzxwq (%rax), %xmm12