[X86] Match vpblendvb/vblendvps/vblendvpd itineraries to the SSE equivalent. Change pblendvb/blendvps/blendvpd to use WriteFVarBlend

llvm-svn: 328294
This commit is contained in:
Craig Topper 2018-03-23 06:41:41 +00:00
parent 7580a7997d
commit 659c66dfc1
2 changed files with 90 additions and 95 deletions

View File

@ -228,21 +228,16 @@ def DEFAULT_ITINS_MPSADSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
>;
let Sched = WriteFBlend in
def DEFAULT_ITINS_FBLENDSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
>;
let Sched = WriteBlend in
def DEFAULT_ITINS_BLENDSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
>;
let Sched = WriteVarBlend in
def DEFAULT_ITINS_VARBLENDSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
>;
let Sched = WriteFVarBlend in
def DEFAULT_ITINS_FVARBLENDSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
>;
let Sched = WriteFBlend in
def SSE_INTALU_ITINS_FBLEND_P : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
@ -6587,30 +6582,30 @@ let ExeDomain = d, Constraints = !if(Is2Addr, "$src1 = $dst", "") in {
let Predicates = [HasAVX] in {
defm VBLENDPS : SS41I_blend_rmi<0x0C, "vblendps", X86Blendi, v4f32,
VR128, loadv4f32, f128mem, 0, SSEPackedSingle,
DEFAULT_ITINS_FBLENDSCHED, BlendCommuteImm4>,
SSE_INTALU_ITINS_FBLEND_P, BlendCommuteImm4>,
VEX_4V, VEX_WIG;
defm VBLENDPSY : SS41I_blend_rmi<0x0C, "vblendps", X86Blendi, v8f32,
VR256, loadv8f32, f256mem, 0, SSEPackedSingle,
DEFAULT_ITINS_FBLENDSCHED, BlendCommuteImm8>,
SSE_INTALU_ITINS_FBLEND_P, BlendCommuteImm8>,
VEX_4V, VEX_L, VEX_WIG;
defm VBLENDPD : SS41I_blend_rmi<0x0D, "vblendpd", X86Blendi, v2f64,
VR128, loadv2f64, f128mem, 0, SSEPackedDouble,
DEFAULT_ITINS_FBLENDSCHED, BlendCommuteImm2>,
SSE_INTALU_ITINS_FBLEND_P, BlendCommuteImm2>,
VEX_4V, VEX_WIG;
defm VBLENDPDY : SS41I_blend_rmi<0x0D, "vblendpd", X86Blendi, v4f64,
VR256, loadv4f64, f256mem, 0, SSEPackedDouble,
DEFAULT_ITINS_FBLENDSCHED, BlendCommuteImm4>,
SSE_INTALU_ITINS_FBLEND_P, BlendCommuteImm4>,
VEX_4V, VEX_L, VEX_WIG;
defm VPBLENDW : SS41I_blend_rmi<0x0E, "vpblendw", X86Blendi, v8i16,
VR128, loadv2i64, i128mem, 0, SSEPackedInt,
DEFAULT_ITINS_BLENDSCHED, BlendCommuteImm8>,
SSE_INTALU_ITINS_BLEND_P, BlendCommuteImm8>,
VEX_4V, VEX_WIG;
}
let Predicates = [HasAVX2] in {
defm VPBLENDWY : SS41I_blend_rmi<0x0E, "vpblendw", X86Blendi, v16i16,
VR256, loadv4i64, i256mem, 0, SSEPackedInt,
DEFAULT_ITINS_BLENDSCHED, BlendCommuteImm8>,
SSE_INTALU_ITINS_BLEND_P, BlendCommuteImm8>,
VEX_4V, VEX_L, VEX_WIG;
}
@ -6641,14 +6636,14 @@ def : Pat<(insert_subvector (v8f32 VR256:$src1), (v4f32 VR128:$src2), (iPTR 0)),
multiclass SS41I_quaternary_int_avx<bits<8> opc, string OpcodeStr,
RegisterClass RC, X86MemOperand x86memop,
PatFrag mem_frag, Intrinsic IntId,
X86FoldableSchedWrite Sched> {
OpndItins itins> {
def rr : Ii8Reg<opc, MRMSrcReg, (outs RC:$dst),
(ins RC:$src1, RC:$src2, RC:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set RC:$dst, (IntId RC:$src1, RC:$src2, RC:$src3))],
NoItinerary, SSEPackedInt>, TAPD, VEX_4V,
Sched<[Sched]>;
itins.rr, SSEPackedInt>, TAPD, VEX_4V,
Sched<[itins.Sched]>;
def rm : Ii8Reg<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, RC:$src3),
@ -6657,36 +6652,36 @@ multiclass SS41I_quaternary_int_avx<bits<8> opc, string OpcodeStr,
[(set RC:$dst,
(IntId RC:$src1, (bitconvert (mem_frag addr:$src2)),
RC:$src3))],
NoItinerary, SSEPackedInt>, TAPD, VEX_4V,
Sched<[Sched.Folded, ReadAfterLd]>;
itins.rm, SSEPackedInt>, TAPD, VEX_4V,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
let Predicates = [HasAVX] in {
let ExeDomain = SSEPackedDouble in {
defm VBLENDVPD : SS41I_quaternary_int_avx<0x4B, "vblendvpd", VR128, f128mem,
loadv2f64, int_x86_sse41_blendvpd,
WriteFVarBlend>;
DEFAULT_ITINS_FVARBLENDSCHED>;
defm VBLENDVPDY : SS41I_quaternary_int_avx<0x4B, "vblendvpd", VR256, f256mem,
loadv4f64, int_x86_avx_blendv_pd_256,
WriteFVarBlend>, VEX_L;
DEFAULT_ITINS_FVARBLENDSCHED>, VEX_L;
} // ExeDomain = SSEPackedDouble
let ExeDomain = SSEPackedSingle in {
defm VBLENDVPS : SS41I_quaternary_int_avx<0x4A, "vblendvps", VR128, f128mem,
loadv4f32, int_x86_sse41_blendvps,
WriteFVarBlend>;
DEFAULT_ITINS_FVARBLENDSCHED>;
defm VBLENDVPSY : SS41I_quaternary_int_avx<0x4A, "vblendvps", VR256, f256mem,
loadv8f32, int_x86_avx_blendv_ps_256,
WriteFVarBlend>, VEX_L;
DEFAULT_ITINS_FVARBLENDSCHED>, VEX_L;
} // ExeDomain = SSEPackedSingle
defm VPBLENDVB : SS41I_quaternary_int_avx<0x4C, "vpblendvb", VR128, i128mem,
loadv2i64, int_x86_sse41_pblendvb,
WriteVarBlend>;
DEFAULT_ITINS_VARBLENDSCHED>;
}
let Predicates = [HasAVX2] in {
defm VPBLENDVBY : SS41I_quaternary_int_avx<0x4C, "vpblendvb", VR256, i256mem,
loadv4i64, int_x86_avx2_pblendvb,
WriteVarBlend>, VEX_L;
DEFAULT_ITINS_VARBLENDSCHED>, VEX_L;
}
let Predicates = [HasAVX] in {
@ -6796,11 +6791,11 @@ let Uses = [XMM0], Constraints = "$src1 = $dst" in {
let ExeDomain = SSEPackedDouble in
defm BLENDVPD : SS41I_ternary_int<0x15, "blendvpd", memopv2f64, f128mem,
int_x86_sse41_blendvpd,
DEFAULT_ITINS_FBLENDSCHED>;
DEFAULT_ITINS_FVARBLENDSCHED>;
let ExeDomain = SSEPackedSingle in
defm BLENDVPS : SS41I_ternary_int<0x14, "blendvps", memopv4f32, f128mem,
int_x86_sse41_blendvps,
DEFAULT_ITINS_FBLENDSCHED>;
DEFAULT_ITINS_FVARBLENDSCHED>;
defm PBLENDVB : SS41I_ternary_int<0x10, "pblendvb", memopv2i64, i128mem,
int_x86_sse41_pblendvb,
DEFAULT_ITINS_VARBLENDSCHED>;

View File

@ -167,84 +167,84 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: - - - 0.01 0.99 0.01 0.99 1.00 - - - - - - blendpd $11, (%rax), %xmm2
# CHECK-NEXT: - - - 0.99 0.01 0.99 0.01 - - - - - - - blendps $11, %xmm0, %xmm2
# CHECK-NEXT: - - - 0.01 0.99 0.01 0.99 1.00 - - - - - - blendps $11, (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - blendvpd %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - 0.99 0.01 0.99 0.01 1.00 - - - - - - blendvpd %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - 0.01 0.99 0.01 0.99 - - - - - - - blendvps %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - 0.99 0.01 - 1.00 1.00 - - - - - - blendvps %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - 3.94 0.06 0.99 0.01 - - - - - - - blendvpd %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - 0.06 3.94 0.01 0.99 1.00 - - - - - - blendvpd %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - 0.06 3.94 0.01 0.99 - - - - - - - blendvps %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - 3.94 0.06 - 1.00 1.00 - - - - - - blendvps %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 - - - - - - - dppd $22, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 1.00 - - - - - - dppd $22, (%rax), %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 - - - - - - - dpps $22, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 1.00 - - - - - - dpps $22, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - extractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - 0.99 0.01 0.99 0.01 - - - - - - - extractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - 0.01 0.99 - 1.00 1.00 - 1.00 - - - - extractps $1, %xmm0, (%rax)
# CHECK-NEXT: - - - 0.99 0.01 1.00 - - - - - - - - insertps $1, %xmm0, %xmm2
# CHECK-NEXT: - - - 0.01 0.99 - 1.00 1.00 - - - - - - insertps $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movntdqa (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 2.00 mpsadbw $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 2.00 mpsadbw $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - packusdw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - packusdw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 1.94 2.06 - pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - 2.06 1.94 - pblendvb %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pblendw $11, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pblendw $11, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.49 0.51 - pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pcmpeqq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.50 0.50 - pextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - 0.50 0.50 - pextrb $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 1.00 - 1.00 - 1.00 - 0.50 0.50 - pextrd $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - 0.50 0.50 - pextrq $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - 0.50 0.50 - pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 1.00 - - packusdw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - 1.00 - packusdw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 3.94 0.06 - pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 1.00 - - - 0.06 3.94 - pblendvb %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pblendw $11, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pblendw $11, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pcmpeqq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - - 1.00 - pextrb $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 1.00 - - pextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 1.00 - 1.00 - 1.00 - 1.00 - - pextrd $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - 1.00 - pextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - - 1.00 - pextrq $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - 1.00 - - pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 phminposuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 phminposuw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pinsrb $1, %eax, %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pinsrb $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - 0.51 0.49 - pinsrd $1, %eax, %xmm1
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.49 0.51 - pinsrd $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pinsrq $1, %rax, %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pinsrq $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.49 0.51 - pmaxsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmaxsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.49 0.51 - pmaxsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pmaxsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmaxud %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmaxud (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmaxuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmaxuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pminsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pminsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pminsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pminsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pminud %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pminud (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pminuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pminuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmovsxbd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovsxbd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmovsxbq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovsxbq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmovsxbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovsxbw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmovsxdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovsxdq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmovsxwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmovsxwd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovsxwq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmovsxwq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovzxbd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmovzxbd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovzxbq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmovzxbq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovzxbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmovzxbw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovzxdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovzxdq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovzxwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovzxwd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmovzxwq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmovzxwq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pinsrb $1, %eax, %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.01 0.99 - pinsrb $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - 1.00 - pinsrd $1, %eax, %xmm1
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pinsrd $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pinsrq $1, %rax, %xmm1
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pinsrq $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 1.00 - - pmaxsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmaxsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pmaxsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmaxsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pmaxud %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmaxud (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pmaxuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pmaxuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pminsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pminsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pminsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pminsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pminud %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pminud (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pminuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pminuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pmovsxbd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmovsxbd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pmovsxbq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pmovsxbq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pmovsxbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pmovsxbw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pmovsxdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pmovsxdq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pmovsxwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pmovsxwd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovsxwq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pmovsxwq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovzxbd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pmovzxbd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovzxbq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pmovzxbq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovzxbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pmovzxbw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovzxdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pmovzxdq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovzxwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - pmovzxwd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmovzxwq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmovzxwq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmuldq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmuldq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmulld %xmm0, %xmm2