From 659c66dfc1aab7902a61f17e21872f3180efc6d8 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Fri, 23 Mar 2018 06:41:41 +0000 Subject: [PATCH] [X86] Match vpblendvb/vblendvps/vblendvpd itineraries to the SSE equivalent. Change pblendvb/blendvps/blendvpd to use WriteFVarBlend llvm-svn: 328294 --- llvm/lib/Target/X86/X86InstrSSE.td | 53 ++++--- .../llvm-mca/X86/BtVer2/resources-sse41.s | 132 +++++++++--------- 2 files changed, 90 insertions(+), 95 deletions(-) diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index a05418518f4f..f9c4392e7324 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -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 opc, string OpcodeStr, RegisterClass RC, X86MemOperand x86memop, PatFrag mem_frag, Intrinsic IntId, - X86FoldableSchedWrite Sched> { + OpndItins itins> { def rr : Ii8Reg, TAPD, VEX_4V, - Sched<[Sched]>; + itins.rr, SSEPackedInt>, TAPD, VEX_4V, + Sched<[itins.Sched]>; def rm : Ii8Reg 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>; diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse41.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse41.s index 3ea5b853b5e8..cf9479b4834a 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse41.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse41.s @@ -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