Add AVX SSE4.1 blend, mpsadbw and vdp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107560 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes 2010-07-03 01:37:03 +00:00
parent 4a544be3a8
commit 68b559e5f3
3 changed files with 132 additions and 0 deletions

View File

@ -4190,6 +4190,8 @@ multiclass SS48I_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
OpSize;
}
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in
defm VPMULLD : SS48I_binop_rm<0x40, "vpmulld", mul, v4i32, 0>, VEX_4V;
let Constraints = "$src1 = $dst" in
defm PMULLD : SS48I_binop_rm<0x40, "pmulld", mul, v4i32>;
@ -4220,6 +4222,23 @@ multiclass SS41I_binop_rmi_int<bits<8> opc, string OpcodeStr,
OpSize;
}
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in {
let isCommutable = 0 in {
defm VBLENDPS : SS41I_binop_rmi_int<0x0C, "vblendps", int_x86_sse41_blendps,
0>, VEX_4V;
defm VBLENDPD : SS41I_binop_rmi_int<0x0D, "vblendpd", int_x86_sse41_blendpd,
0>, VEX_4V;
defm VPBLENDW : SS41I_binop_rmi_int<0x0E, "vpblendw", int_x86_sse41_pblendw,
0>, VEX_4V;
defm VMPSADBW : SS41I_binop_rmi_int<0x42, "vmpsadbw", int_x86_sse41_mpsadbw,
0>, VEX_4V;
}
defm VDPPS : SS41I_binop_rmi_int<0x40, "vdpps", int_x86_sse41_dpps,
0>, VEX_4V;
defm VDPPD : SS41I_binop_rmi_int<0x41, "vdppd", int_x86_sse41_dppd,
0>, VEX_4V;
}
let Constraints = "$src1 = $dst" in {
let isCommutable = 0 in {
defm BLENDPS : SS41I_binop_rmi_int<0x0C, "blendps", int_x86_sse41_blendps>;

View File

@ -11870,3 +11870,60 @@
// CHECK: encoding: [0xc4,0xe2,0x69,0x28,0x18]
vpmuldq (%eax), %xmm2, %xmm3
// CHECK: vpmulld %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe2,0x51,0x40,0xca]
vpmulld %xmm2, %xmm5, %xmm1
// CHECK: vpmulld (%eax), %xmm5, %xmm3
// CHECK: encoding: [0xc4,0xe2,0x51,0x40,0x18]
vpmulld (%eax), %xmm5, %xmm3
// CHECK: vblendps $3, %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x0c,0xca,0x03]
vblendps $3, %xmm2, %xmm5, %xmm1
// CHECK: vblendps $3, (%eax), %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x0c,0x08,0x03]
vblendps $3, (%eax), %xmm5, %xmm1
// CHECK: vblendpd $3, %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x0d,0xca,0x03]
vblendpd $3, %xmm2, %xmm5, %xmm1
// CHECK: vblendpd $3, (%eax), %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x0d,0x08,0x03]
vblendpd $3, (%eax), %xmm5, %xmm1
// CHECK: vpblendw $3, %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x0e,0xca,0x03]
vpblendw $3, %xmm2, %xmm5, %xmm1
// CHECK: vpblendw $3, (%eax), %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x0e,0x08,0x03]
vpblendw $3, (%eax), %xmm5, %xmm1
// CHECK: vmpsadbw $3, %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x42,0xca,0x03]
vmpsadbw $3, %xmm2, %xmm5, %xmm1
// CHECK: vmpsadbw $3, (%eax), %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x42,0x08,0x03]
vmpsadbw $3, (%eax), %xmm5, %xmm1
// CHECK: vdpps $3, %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x40,0xca,0x03]
vdpps $3, %xmm2, %xmm5, %xmm1
// CHECK: vdpps $3, (%eax), %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x40,0x08,0x03]
vdpps $3, (%eax), %xmm5, %xmm1
// CHECK: vdppd $3, %xmm2, %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x41,0xca,0x03]
vdppd $3, %xmm2, %xmm5, %xmm1
// CHECK: vdppd $3, (%eax), %xmm5, %xmm1
// CHECK: encoding: [0xc4,0xe3,0x51,0x41,0x08,0x03]
vdppd $3, (%eax), %xmm5, %xmm1

View File

@ -1918,3 +1918,59 @@ pshufb CPI1_0(%rip), %xmm1
// CHECK: encoding: [0xc4,0x62,0x19,0x28,0x28]
vpmuldq (%rax), %xmm12, %xmm13
// CHECK: vpmulld %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x42,0x51,0x40,0xdc]
vpmulld %xmm12, %xmm5, %xmm11
// CHECK: vpmulld (%rax), %xmm5, %xmm13
// CHECK: encoding: [0xc4,0x62,0x51,0x40,0x28]
vpmulld (%rax), %xmm5, %xmm13
// CHECK: vblendps $3, %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x43,0x51,0x0c,0xdc,0x03]
vblendps $3, %xmm12, %xmm5, %xmm11
// CHECK: vblendps $3, (%rax), %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x63,0x51,0x0c,0x18,0x03]
vblendps $3, (%rax), %xmm5, %xmm11
// CHECK: vblendpd $3, %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x43,0x51,0x0d,0xdc,0x03]
vblendpd $3, %xmm12, %xmm5, %xmm11
// CHECK: vblendpd $3, (%rax), %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x63,0x51,0x0d,0x18,0x03]
vblendpd $3, (%rax), %xmm5, %xmm11
// CHECK: vpblendw $3, %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x43,0x51,0x0e,0xdc,0x03]
vpblendw $3, %xmm12, %xmm5, %xmm11
// CHECK: vpblendw $3, (%rax), %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x63,0x51,0x0e,0x18,0x03]
vpblendw $3, (%rax), %xmm5, %xmm11
// CHECK: vmpsadbw $3, %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x43,0x51,0x42,0xdc,0x03]
vmpsadbw $3, %xmm12, %xmm5, %xmm11
// CHECK: vmpsadbw $3, (%rax), %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x63,0x51,0x42,0x18,0x03]
vmpsadbw $3, (%rax), %xmm5, %xmm11
// CHECK: vdpps $3, %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x43,0x51,0x40,0xdc,0x03]
vdpps $3, %xmm12, %xmm5, %xmm11
// CHECK: vdpps $3, (%rax), %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x63,0x51,0x40,0x18,0x03]
vdpps $3, (%rax), %xmm5, %xmm11
// CHECK: vdppd $3, %xmm12, %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x43,0x51,0x41,0xdc,0x03]
vdppd $3, %xmm12, %xmm5, %xmm11
// CHECK: vdppd $3, (%rax), %xmm5, %xmm11
// CHECK: encoding: [0xc4,0x63,0x51,0x41,0x18,0x03]
vdppd $3, (%rax), %xmm5, %xmm11