Index: docs/CommandGuide/llvm-mca.rst =================================================================== --- docs/CommandGuide/llvm-mca.rst +++ docs/CommandGuide/llvm-mca.rst @@ -124,6 +124,14 @@ Limit the number of cycles in the timeline view. By default, the number of cycles is set to 80. +.. option:: -instruction-tables + + Prints resource pressure information based on the static information + available from the processor model. This differs from the resource pressure + view because it doesn't require that the code is simulated. It instead prints + the theoretical uniform distribution of resource pressure for every + instruction in sequence. + EXIT STATUS ----------- Index: test/tools/llvm-mca/X86/BtVer2/resources-aes.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-aes.s +++ test/tools/llvm-mca/X86/BtVer2/resources-aes.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 aesdec %xmm0, %xmm2 aesdec (%rax), %xmm2 Index: test/tools/llvm-mca/X86/BtVer2/resources-avx1.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 vaddpd %xmm0, %xmm1, %xmm2 vaddpd (%rax), %xmm1, %xmm2 @@ -1053,42 +1053,42 @@ # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vaesimc (%rax), %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vaeskeygenassist $22, %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vaeskeygenassist $22, (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vandnpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 - - - - - - - vandnpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vandnpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vandnps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 2.00 - - 2.00 - - - - - - - vandnps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vandnps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vandpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vandpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 - - - - - - - vandpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 2.00 - - 2.00 1.00 - - - - - - vandpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vandps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vandps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 2.00 - - 2.00 - - - - - - - vandps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 2.00 - - 2.00 1.00 - - - - - - vandps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vblendpd $11, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vblendpd $11, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vblendpd $11, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vblendpd $11, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vblendps $11, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vblendps $11, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vblendps $11, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vblendps $11, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 4.00 1.00 - - - - - - - - vblendvpd %xmm3, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 4.00 - 1.00 - 1.00 - - - - - - vblendvpd %xmm3, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 6.00 - 1.00 - - - - - - - vblendvpd %ymm3, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 6.00 - 1.00 - 1.00 - - - - - - vblendvpd %ymm3, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 - - - - - - - vblendvps %xmm3, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 4.00 - 1.00 - 1.00 - - - - - - vblendvps %xmm3, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 6.00 - 1.00 - - - - - - - vblendvps %ymm3, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 6.00 - 1.00 - 1.00 - - - - - - vblendvps %ymm3, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vbroadcastf128 (%rax), %ymm2 -# CHECK-NEXT: - - - - 4.00 1.00 - 1.00 - - - - - - vbroadcastsd (%rax), %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vbroadcastss (%rax), %xmm2 -# CHECK-NEXT: - - - 4.00 - 1.00 - 1.00 - - - - - - vbroadcastss (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vandnpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vandnpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vandnpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vandnpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vandnps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vandnps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vandnps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vandnps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vandpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vandpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vandpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vandpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vandps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vandps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vandps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vandps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vblendpd $11, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vblendpd $11, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vblendpd $11, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vblendpd $11, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vblendps $11, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vblendps $11, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vblendps $11, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vblendps $11, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - - - - - - vblendvpd %xmm3, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vblendvpd %xmm3, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 - - - - - - - vblendvpd %ymm3, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 1.00 - - - - - - vblendvpd %ymm3, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - - - - - - vblendvps %xmm3, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vblendvps %xmm3, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 - - - - - - - vblendvps %ymm3, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 1.00 - - - - - - vblendvps %ymm3, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vbroadcastf128 (%rax), %ymm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vbroadcastsd (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vbroadcastss (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vbroadcastss (%rax), %ymm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmppd $0, (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 2.00 - 1.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2 @@ -1115,12 +1115,12 @@ # CHECK-NEXT: - - - - - - 1.00 1.00 - - 2.00 - - - vcvtdq2ps (%rax), %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtpd2dq %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtpd2dqx (%rax), %xmm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 - - - 2.00 - - - vcvtpd2dq %ymm0, %xmm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 1.00 - - 2.00 - - - vcvtpd2dqy (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 - 1.00 - - - 2.00 - - - vcvtpd2dq %ymm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 - 1.00 1.00 - - 2.00 - - - vcvtpd2dqy (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtpd2ps %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtpd2psx (%rax), %xmm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 - - - 2.00 - - - vcvtpd2ps %ymm0, %xmm2 -# CHECK-NEXT: - - - 4.00 - - 1.00 1.00 - - 2.00 - - - vcvtpd2psy (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 - 1.00 - - - 2.00 - - - vcvtpd2ps %ymm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 - 1.00 1.00 - - 2.00 - - - vcvtpd2psy (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtps2dq %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtps2dq (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 2.00 - - - vcvtps2dq %ymm0, %ymm2 @@ -1151,8 +1151,8 @@ # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtss2si (%rax), %rcx # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvttpd2dq %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvttpd2dqx (%rax), %xmm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 - - - 2.00 - - - vcvttpd2dq %ymm0, %xmm2 -# CHECK-NEXT: - - - 4.00 - - 1.00 1.00 - - 2.00 - - - vcvttpd2dqy (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 - 1.00 - - - 2.00 - - - vcvttpd2dq %ymm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 - 1.00 1.00 - - 2.00 - - - vcvttpd2dqy (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvttps2dq %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvttps2dq (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 2.00 - - - vcvttps2dq %ymm0, %ymm2 @@ -1179,10 +1179,10 @@ # CHECK-NEXT: - - - 3.00 3.00 - 1.00 1.00 - - - - - - vdpps $22, (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 6.00 6.00 - 1.00 - - - - - - - vdpps $22, %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - 6.00 6.00 - 1.00 1.00 - - - - - - vdpps $22, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vextractf128 $1, %ymm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vextractf128 $1, %ymm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vextractf128 $1, %ymm0, (%rax) -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vextractps $1, %xmm0, %ecx -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - 1.00 - - - - vextractps $1, %xmm0, (%rax) +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vextractps $1, %xmm0, %ecx +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - 1.00 - - - - vextractps $1, %xmm0, (%rax) # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vhaddpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vhaddpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vhaddpd %ymm0, %ymm1, %ymm2 @@ -1199,22 +1199,22 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vhsubps (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vhsubps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - 2.00 - 2.00 - 1.00 - - - - - - vhsubps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vinsertf128 $1, %xmm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vinsertf128 $1, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vinsertps $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vinsertps $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vlddqu (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vlddqu (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vinsertf128 $1, %xmm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vinsertf128 $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vinsertps $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vinsertps $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vlddqu (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vlddqu (%rax), %ymm2 # CHECK-NEXT: - - - - - - - 1.00 - - - - - - vldmxcsr (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmaskmovdqu %xmm0, %xmm1 -# CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - vmaskmovpd (%rax), %xmm0, %xmm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 1.00 - - - - - - vmaskmovpd (%rax), %ymm0, %ymm2 -# CHECK-NEXT: - - - 4.00 - 1.00 - - - 1.00 - - - - vmaskmovpd %xmm0, %xmm1, (%rax) -# CHECK-NEXT: - - - 4.00 - 1.00 - - - 1.00 - - - - vmaskmovpd %ymm0, %ymm1, (%rax) -# CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - vmaskmovps (%rax), %xmm0, %xmm2 -# CHECK-NEXT: - - - 4.00 - 1.00 - 1.00 - - - - - - vmaskmovps (%rax), %ymm0, %ymm2 -# CHECK-NEXT: - - - - 4.00 - 1.00 - - 1.00 - - - - vmaskmovps %xmm0, %xmm1, (%rax) -# CHECK-NEXT: - - - 4.00 - 1.00 - - - 1.00 - - - - vmaskmovps %ymm0, %ymm1, (%rax) +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vmaskmovpd (%rax), %xmm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vmaskmovpd (%rax), %ymm0, %ymm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - 1.00 - - - - vmaskmovpd %xmm0, %xmm1, (%rax) +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - 1.00 - - - - vmaskmovpd %ymm0, %ymm1, (%rax) +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vmaskmovps (%rax), %xmm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vmaskmovps (%rax), %ymm0, %ymm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - 1.00 - - - - vmaskmovps %xmm0, %xmm1, (%rax) +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - 1.00 - - - - vmaskmovps %ymm0, %ymm1, (%rax) # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmaxpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vmaxpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 2.00 - 1.00 - - - - - - - - vmaxpd %ymm0, %ymm1, %ymm2 @@ -1239,91 +1239,91 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vminsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vminss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vminss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovapd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovapd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovapd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmovapd (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovapd %ymm0, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovapd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovapd %ymm0, %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovapd %ymm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmovapd (%rax), %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovaps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovapd (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovaps %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmovaps (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovaps %ymm0, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovaps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovaps %ymm0, %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %ymm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmovaps (%rax), %ymm2 -# CHECK-NEXT: - 1.00 - - - - - - - - - - - - vmovd %eax, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovaps (%rax), %ymm2 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - vmovd %eax, %xmm2 # CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovd (%rax), %xmm2 -# CHECK-NEXT: 1.00 - - - - - - - - - - - - - vmovd %xmm0, %ecx +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - vmovd %xmm0, %ecx # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovddup %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmovddup (%rax), %xmm2 -# CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - vmovddup %ymm0, %ymm2 -# CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - vmovddup (%rax), %ymm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vmovdqa %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovddup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovddup (%rax), %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vmovddup %ymm0, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vmovddup (%rax), %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqa %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqa %xmm0, (%rax) -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vmovdqa (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vmovdqa %ymm0, %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqa (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqa %ymm0, %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqa %ymm0, (%rax) -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vmovdqa (%rax), %ymm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vmovdqu %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqa (%rax), %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqu %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqu %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vmovdqu (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vmovdqu %ymm0, %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqu (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqu %ymm0, %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqu %ymm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vmovdqu (%rax), %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovhlps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovlhps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqu (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovhlps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovlhps %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovhpd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vmovhpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovhpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovhps %xmm0, (%rax) -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vmovhps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovhps (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovlpd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vmovlpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovlpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovlps %xmm0, (%rax) -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vmovlps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovlps (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmovmskpd %xmm0, %ecx # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmovmskpd %ymm0, %ecx # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmovmskps %xmm0, %ecx # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmovmskps %ymm0, %ecx # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovntdq %xmm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 2.00 - - - vmovntdq %ymm0, (%rax) -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vmovntdqa (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vmovntdqa (%rax), %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovntdqa (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovntdqa (%rax), %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovntpd %xmm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 2.00 - - - vmovntpd %ymm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovntps %xmm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 2.00 - - - vmovntps %ymm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vmovq %xmm0, %xmm2 -# CHECK-NEXT: - 1.00 - - - - - - - - - - - - vmovq %rax, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovq %xmm0, %xmm2 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - vmovq %rax, %xmm2 # CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovq (%rax), %xmm2 -# CHECK-NEXT: 1.00 - - - - - - - - - - - - - vmovq %xmm0, %rcx +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - vmovq %xmm0, %rcx # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovq %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vmovsd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovsd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovsd %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovsd (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vmovshdup %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vmovshdup (%rax), %xmm2 -# CHECK-NEXT: - - - - 2.00 1.00 - - - - - - - - vmovshdup %ymm0, %ymm2 -# CHECK-NEXT: - - - 2.00 - 1.00 - 1.00 - - - - - - vmovshdup (%rax), %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmovsldup %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vmovsldup (%rax), %xmm2 -# CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - vmovsldup %ymm0, %ymm2 -# CHECK-NEXT: - - - 2.00 - 1.00 - 1.00 - - - - - - vmovsldup (%rax), %ymm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vmovss %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovshdup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovshdup (%rax), %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vmovshdup %ymm0, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vmovshdup (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovsldup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovsldup (%rax), %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vmovsldup %ymm0, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vmovsldup (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovss %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovss (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vmovupd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovupd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovupd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vmovupd (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmovupd %ymm0, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovupd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovupd %ymm0, %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovupd %ymm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmovupd (%rax), %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vmovups %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovupd (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovups %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovups %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vmovups (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vmovups %ymm0, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovups (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovups %ymm0, %ymm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovups %ymm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vmovups (%rax), %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovups (%rax), %ymm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 2.00 vmpsadbw $1, %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 2.00 vmpsadbw $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - vmulpd %xmm0, %xmm1, %xmm2 @@ -1338,177 +1338,177 @@ # CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - vmulsd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmulss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmulss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vorpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vorpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vorpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 2.00 - 2.00 - 1.00 - - - - - - vorpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vorps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vorps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vorps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 2.00 - 2.00 - 1.00 - - - - - - vorps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpabsb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpabsb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpabsd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpabsd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpabsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpabsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpackssdw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpackssdw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpacksswb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpacksswb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpackusdw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpackusdw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpackuswb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpackuswb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddsb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddsb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddsw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddsw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddusb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddusb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddusw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddusw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpaddw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpalignr $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpalignr $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpand %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpand (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpandn %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpandn (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpavgb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpavgb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpavgw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpavgw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 4.00 - - vpblendvb %xmm3, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 4.00 - vpblendvb %xmm3, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpblendw $11, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpblendw $11, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vorpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vorpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vorpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vorpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vorps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vorps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vorps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vorps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpabsb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpabsb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpabsd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpabsd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpabsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpabsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpackssdw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpackssdw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpacksswb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpacksswb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpackusdw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpackusdw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpackuswb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpackuswb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddsb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddsb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddsw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddsw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddusb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddusb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddusw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddusw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpaddw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpaddw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpalignr $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpalignr $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpand %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpand (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpandn %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpandn (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpavgb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpavgb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpavgw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpavgw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 2.00 2.00 - vpblendvb %xmm3, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 2.00 2.00 - vpblendvb %xmm3, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpblendw $11, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpblendw $11, (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vpclmulqdq $11, %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vpclmulqdq $11, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpeqb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpeqd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpeqq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpeqw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpgtb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpgtb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpgtd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpgtd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpgtq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpgtq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpgtw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpcmpgtw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vperm2f128 $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vperm2f128 $1, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vpermilpd $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vpermilpd $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - 4.00 1.00 - - - - - - - - vpermilpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 4.00 - - 1.00 1.00 - - - - - - vpermilpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 2.00 1.00 - - - - - - - - vpermilpd $1, %ymm0, %ymm2 -# CHECK-NEXT: - - - 2.00 - - 1.00 1.00 - - - - - - vpermilpd $1, (%rax), %ymm2 -# CHECK-NEXT: - - - - 6.00 1.00 - - - - - - - - vpermilpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 6.00 - - 1.00 1.00 - - - - - - vpermilpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vpermilps $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vpermilps $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - 4.00 1.00 - - - - - - - - vpermilps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 4.00 - - 1.00 1.00 - - - - - - vpermilps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 2.00 1.00 - - - - - - - - vpermilps $1, %ymm0, %ymm2 -# CHECK-NEXT: - - - 2.00 - - 1.00 1.00 - - - - - - vpermilps $1, (%rax), %ymm2 -# CHECK-NEXT: - - - - 6.00 1.00 - - - - - - - - vpermilps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 6.00 - - 1.00 1.00 - - - - - - vpermilps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpextrb $1, %xmm0, %ecx -# CHECK-NEXT: - - - - - 1.00 - 1.00 - 1.00 - 1.00 - - vpextrb $1, %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpextrd $1, %xmm0, %ecx -# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - - 1.00 - vpextrd $1, %xmm0, (%rax) -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpextrq $1, %xmm0, %rcx -# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - 1.00 - - vpextrq $1, %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpextrw $1, %xmm0, %ecx -# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - - 1.00 - vpextrw $1, %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vphaddd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vphaddd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vphaddsw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vphaddsw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vphaddw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vphaddw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpeqb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpeqd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpeqq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpeqw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpgtb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpgtb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpgtd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpgtd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpgtq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpgtq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpgtw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpcmpgtw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vperm2f128 $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vperm2f128 $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vpermilpd $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vpermilpd $1, (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - - - - - - vpermilpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vpermilpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vpermilpd $1, %ymm0, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vpermilpd $1, (%rax), %ymm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 - - - - - - - vpermilpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 1.00 - - - - - - vpermilpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vpermilps $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vpermilps $1, (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - - - - - - vpermilps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - vpermilps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vpermilps $1, %ymm0, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vpermilps $1, (%rax), %ymm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 - - - - - - - vpermilps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 3.00 3.00 0.50 0.50 1.00 - - - - - - vpermilps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrb $1, %xmm0, %ecx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrb $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrd $1, %xmm0, %ecx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrd $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrq $1, %xmm0, %rcx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrq $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrw $1, %xmm0, %ecx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrw $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphaddd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphaddd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphaddsw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphaddsw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphaddw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphaddw (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vphminposuw %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vphminposuw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vphsubd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vphsubd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vphsubsw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vphsubsw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vphsubw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vphsubw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpinsrb $1, %eax, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpinsrb $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpinsrd $1, %eax, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpinsrd $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpinsrq $1, %rax, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpinsrq $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpinsrw $1, %eax, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpinsrw $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphsubd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphsubd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphsubsw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphsubsw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphsubw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphsubw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpinsrb $1, %eax, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpinsrb $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpinsrd $1, %eax, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpinsrd $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpinsrq $1, %rax, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpinsrq $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpinsrw $1, %eax, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpinsrw $1, (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vpmaddubsw %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vpmaddubsw (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vpmaddwd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vpmaddwd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpmaxsb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmaxsb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpmaxsd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmaxsd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpmaxsw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmaxsw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpmaxub %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmaxub (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpmaxud %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmaxud (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpmaxuw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmaxuw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpminsb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpminsb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpminsd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpminsd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpminsw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpminsw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpminub %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpminub (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpminud %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpminud (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpminuw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpminuw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmaxsb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmaxsb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmaxsd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmaxsd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmaxsw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmaxsw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmaxub %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmaxub (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmaxud %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmaxud (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmaxuw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmaxuw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpminsb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpminsb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpminsd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpminsd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpminsw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpminsw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpminub %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpminub (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpminud %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpminud (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpminuw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpminuw (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vpmovmskb %xmm0, %ecx -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovsxbd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovsxbd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovsxbq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovsxbq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovsxbw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovsxbw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovsxdq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovsxdq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovsxwd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovsxwd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovsxwq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovsxwq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovzxbd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovzxbd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovzxbq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovzxbq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovzxbw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovzxbw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovzxdq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmovzxdq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovzxwd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpmovzxwd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpmovzxwq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpmovzxwq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovsxbd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovsxbd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovsxbq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovsxbq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovsxbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovsxbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovsxdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovsxdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovsxwd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovsxwd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovsxwq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovsxwq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovzxbd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovzxbd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovzxbq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovzxbq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovzxbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovzxbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovzxdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovzxdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovzxwd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovzxwd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpmovzxwq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpmovzxwq (%rax), %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vpmuldq %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vpmuldq (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vpmulhrsw %xmm0, %xmm1, %xmm2 @@ -1523,88 +1523,88 @@ # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vpmullw (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 vpmuludq %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vpmuludq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpor %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpor (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpsadbw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsadbw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 4.00 - vpshufb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 4.00 - - vpshufb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpshufd $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - vpshufd $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpshufhw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpshufhw $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpshuflw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpshuflw $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsignb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsignb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsignd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsignd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsignw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsignw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpslld $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpslld %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpslld (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpslldq $1, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsllq $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsllq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpsllq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsllw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsllw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsllw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsrad $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsrad %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpsrad (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsraw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsraw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsraw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsrld $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsrld %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpsrld (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsrldq $1, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsrlq $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsrlq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpsrlq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpsrlw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsrlw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsrlw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubsb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubsb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubsw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubsw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubusb %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubusb (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubusw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubusw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - vpsubw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - vpsubw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpor %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpor (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsadbw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsadbw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 2.00 2.00 - vpshufb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 2.00 2.00 - vpshufb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpshufd $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpshufd $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpshufhw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpshufhw $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpshuflw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpshuflw $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsignb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsignb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsignd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsignd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsignw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsignw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpslld $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpslld %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpslld (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpslldq $1, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsllq $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsllq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsllq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsllw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsllw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsllw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrad $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrad %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsrad (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsraw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsraw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsraw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrld $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrld %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsrld (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrldq $1, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrlq $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrlq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsrlq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrlw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsrlw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsrlw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubsb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubsb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubsw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubsw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubusb %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubusb (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubusw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubusw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpsubw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpsubw (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vptest %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vptest (%rax), %xmm1 -# CHECK-NEXT: - - - 2.00 2.00 - 1.00 - - - - - - - vptest %ymm0, %ymm1 -# CHECK-NEXT: - - - 2.00 2.00 1.00 - 1.00 - - - - - - vptest (%rax), %ymm1 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpunpckhbw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpckhbw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpckhdq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpckhdq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpckhqdq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpckhqdq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpckhwd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpckhwd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpcklbw %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpcklbw (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpckldq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpckldq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpcklqdq %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpcklqdq (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpunpcklwd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpunpcklwd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpxor %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - vpxor (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 3.00 1.00 0.50 0.50 - - - - - - - vptest %ymm0, %ymm1 +# CHECK-NEXT: - - - 3.00 1.00 0.50 0.50 1.00 - - - - - - vptest (%rax), %ymm1 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpckhbw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpckhbw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpckhdq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpckhdq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpckhqdq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpckhqdq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpckhwd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpckhwd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpcklbw %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpcklbw (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpckldq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpckldq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpcklqdq %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpcklqdq (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpunpcklwd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpunpcklwd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpxor %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vpxor (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vrcpps %xmm0, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vrcpps (%rax), %xmm2 # CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - vrcpps %ymm0, %ymm2 @@ -1629,14 +1629,14 @@ # CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - vrsqrtps (%rax), %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vrsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vrsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vshufpd $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vshufpd $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 2.00 - 1.00 - - - - - - - - vshufpd $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 2.00 - 1.00 - 1.00 - - - - - - vshufpd $1, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vshufps $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vshufps $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - vshufps $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 2.00 - 1.00 - 1.00 - - - - - - vshufps $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vshufpd $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vshufpd $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vshufpd $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vshufpd $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vshufps $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vshufps $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 - - - - - - - vshufps $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 0.50 0.50 1.00 - - - - - - vshufps $1, (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - 21.00 - 1.00 - - - - - - - vsqrtpd %xmm0, %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 1.00 - - - - - - vsqrtpd (%rax), %xmm2 # CHECK-NEXT: - - - - 54.00 - 1.00 - - - - - - - vsqrtpd %ymm0, %ymm2 @@ -1664,39 +1664,39 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vsubss (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vtestpd %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vtestpd (%rax), %xmm1 -# CHECK-NEXT: - - - 2.00 2.00 1.00 - - - - - - - - vtestpd %ymm0, %ymm1 -# CHECK-NEXT: - - - 2.00 2.00 1.00 - 1.00 - - - - - - vtestpd (%rax), %ymm1 +# CHECK-NEXT: - - - 3.00 1.00 0.50 0.50 - - - - - - - vtestpd %ymm0, %ymm1 +# CHECK-NEXT: - - - 3.00 1.00 0.50 0.50 1.00 - - - - - - vtestpd (%rax), %ymm1 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vtestps %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vtestps (%rax), %xmm1 -# CHECK-NEXT: - - - 2.00 2.00 - 1.00 - - - - - - - vtestps %ymm0, %ymm1 -# CHECK-NEXT: - - - 2.00 2.00 - 1.00 1.00 - - - - - - vtestps (%rax), %ymm1 +# CHECK-NEXT: - - - 3.00 1.00 0.50 0.50 - - - - - - - vtestps %ymm0, %ymm1 +# CHECK-NEXT: - - - 3.00 1.00 0.50 0.50 1.00 - - - - - - vtestps (%rax), %ymm1 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vucomisd %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vucomisd (%rax), %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vucomiss %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vucomiss (%rax), %xmm1 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpckhpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpckhpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpckhpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpckhpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpckhps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vunpckhps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpckhps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpckhps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpcklpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpcklpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpcklpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpcklpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpcklps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vunpcklps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpcklps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpcklps (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vxorpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vxorpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 - - - - - - - vxorpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vxorpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vxorps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vxorps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vxorps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vxorps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpckhpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpckhpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpckhpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpckhpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpckhps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpckhps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpckhps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpckhps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpcklpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpcklpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpcklpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpcklpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpcklps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpcklps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vunpcklps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vunpcklps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vxorpd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vxorpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vxorpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vxorpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vxorps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vxorps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vxorps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 1.00 - - - - - - vxorps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - - - - - - - - - - - vzeroall # CHECK-NEXT: - - - - - - - - - - - - - - vzeroupper Index: test/tools/llvm-mca/X86/BtVer2/resources-clmul.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-clmul.s +++ test/tools/llvm-mca/X86/BtVer2/resources-clmul.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 pclmulqdq $11, %xmm0, %xmm2 pclmulqdq $11, (%rax), %xmm2 Index: test/tools/llvm-mca/X86/BtVer2/resources-sse1.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-sse1.s +++ test/tools/llvm-mca/X86/BtVer2/resources-sse1.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 addps %xmm0, %xmm2 addps (%rax), %xmm2 @@ -150,16 +150,17 @@ # CHECK-NEXT: [12] - JVALU1 # CHECK-NEXT: [13] - JVIMUL -# CHECK: Resource pressure by instruction: + +# CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - addps %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - addps (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - addss %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - addss (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 0.01 0.99 - - - - - - - andnps %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 0.01 0.99 1.00 - - - - - - andnps (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 0.01 0.99 - - - - - - - andps %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 0.99 0.01 1.00 - - - - - - andps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andnps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andnps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andps (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpps $0, (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2 @@ -191,31 +192,31 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - minps (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - minss %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - minss (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 0.99 0.01 - - - - - - - movaps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movaps %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movaps %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movaps (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - movhlps %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - movlhps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movaps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movhlps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movlhps %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movhps %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movhps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movhps (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movlps %xmm0, (%rax) -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - movlps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movlps (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - movmskps %xmm0, %ecx # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntps %xmm0, (%rax) -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - movss %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movss %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movss %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 - - - - - - movss (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - movups %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movups %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movups %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movups (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movups (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - mulps %xmm0, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - mulps (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - mulss %xmm0, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - mulss (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - orps %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - orps (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pinsrw $1, %eax, %xmm1 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pinsrw $1, (%rax), %xmm1 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - orps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - orps (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pinsrw $1, %eax, %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pinsrw $1, (%rax), %xmm1 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - rcpps %xmm0, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - rcpps (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - rcpss %xmm0, %xmm2 @@ -224,8 +225,8 @@ # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - rsqrtps (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - rsqrtss %xmm0, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - rsqrtss (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - shufps $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - shufps $1, (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - shufps $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - shufps $1, (%rax), %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 - - - - - - - sqrtps %xmm0, %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 1.00 - - - - - - sqrtps (%rax), %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 - - - - - - - sqrtss %xmm0, %xmm2 @@ -237,9 +238,9 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - subss (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - ucomiss %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - ucomiss (%rax), %xmm1 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - unpckhps %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - unpckhps (%rax), %xmm2 -# CHECK-NEXT: - - - 0.01 0.99 1.00 - - - - - - - - unpcklps %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 0.99 0.01 1.00 - - - - - - unpcklps (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - xorps %xmm0, %xmm2 -# CHECK-NEXT: - - - 0.99 0.01 0.99 0.01 1.00 - - - - - - xorps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - unpckhps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - unpckhps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - unpcklps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - unpcklps (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - xorps %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - xorps (%rax), %xmm2 Index: test/tools/llvm-mca/X86/BtVer2/resources-sse2.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-sse2.s +++ test/tools/llvm-mca/X86/BtVer2/resources-sse2.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 addpd %xmm0, %xmm2 addpd (%rax), %xmm2 @@ -391,7 +391,8 @@ # CHECK-NEXT: [12] - JVALU1 # CHECK-NEXT: [13] - JVIMUL -# CHECK: Resource pressure by instruction: + +# CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - addpd %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - addpd (%rax), %xmm2 @@ -399,10 +400,10 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - addsd (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - addsubpd %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - addsubpd (%rax), %xmm2 -# CHECK-NEXT: - - - 0.99 0.01 1.00 - - - - - - - - andnpd %xmm0, %xmm2 -# CHECK-NEXT: - - - 0.99 0.01 0.01 0.99 1.00 - - - - - - andnpd (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - andpd %xmm0, %xmm2 -# CHECK-NEXT: - - - 0.99 0.01 0.01 0.99 1.00 - - - - - - andpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andnpd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andnpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andpd (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmppd $0, (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2 @@ -454,102 +455,102 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - minpd (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - minsd %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - minsd (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 0.99 0.01 - - - - - - - movapd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movapd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movapd %xmm0, (%rax) -# CHECK-NEXT: - - - 0.01 0.99 1.00 - 1.00 - - - - - - movapd (%rax), %xmm2 -# CHECK-NEXT: - 1.00 - - - - - - - - - - - - movd %eax, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movapd (%rax), %xmm2 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movd %eax, %xmm2 # CHECK-NEXT: - - - - - - - 1.00 - - - - - - movd (%rax), %xmm2 -# CHECK-NEXT: 1.00 - - - - - - - - - - - - - movd %xmm0, %ecx +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movd %xmm0, %ecx # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movd %xmm0, (%rax) -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - movdqa %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - movdqa %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movdqa %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - movdqa (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - movdqu %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - movdqa (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - movdqu %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movdqu %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - movdqu (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - movdqu (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movhpd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movhpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movhpd (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movlpd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movlpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movlpd (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - movmskpd %xmm0, %ecx # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntdq %xmm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntpd %xmm0, (%rax) -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - movq %xmm0, %xmm2 -# CHECK-NEXT: - 1.00 - - - - - - - - - - - - movq %rax, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - movq %xmm0, %xmm2 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movq %rax, %xmm2 # CHECK-NEXT: - - - - - - - 1.00 - - - - - - movq (%rax), %xmm2 -# CHECK-NEXT: 1.00 - - - - - - - - - - - - - movq %xmm0, %rcx +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - movq %xmm0, %rcx # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movq %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - movsd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movsd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movsd %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 - - - - - - movsd (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - movupd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movupd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movupd %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movupd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movupd (%rax), %xmm2 # CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - mulpd %xmm0, %xmm2 # CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - mulpd (%rax), %xmm2 # CHECK-NEXT: - - - - 2.00 - 1.00 - - - - - - - mulsd %xmm0, %xmm2 # CHECK-NEXT: - - - - 2.00 - 1.00 1.00 - - - - - - mulsd (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - orpd %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - orpd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pabsb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pabsb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pabsd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pabsd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pabsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pabsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - packssdw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - packssdw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - packsswb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - packsswb (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - packuswb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - packuswb (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddb (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddq (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddsb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddsb (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddusb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddusb (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddusw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddusw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - paddw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - paddw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pand %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pand (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pandn %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pandn (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pavgb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pavgb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pavgw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pavgw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pcmpeqb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pcmpeqb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pcmpeqd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pcmpeqd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pcmpeqw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pcmpeqw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpgtb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pcmpgtb (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpgtd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pcmpgtd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pcmpgtw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pcmpgtw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pextrw $1, %xmm0, %ecx +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - orpd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - orpd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pabsb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pabsb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pabsd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pabsd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pabsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pabsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - packssdw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - packssdw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - packsswb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - packsswb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - packuswb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - packuswb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddsb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddsb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddusb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddusb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddusw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddusw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - paddw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - paddw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pand %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pand (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pandn %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pandn (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pavgb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pavgb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pavgw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pavgw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpeqb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpeqd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpeqw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpgtb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpgtb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpgtd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpgtd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpgtw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpgtw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrw $1, %xmm0, %ecx # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmaddwd %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmaddwd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - pmaxsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmaxsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pmaxub %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pmaxub (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pminsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pminsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pminub %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pminub (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmaxsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxub %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmaxub (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pminsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pminsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pminub %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pminub (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - pmovmskb %xmm0, %ecx # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmulhuw %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmulhuw (%rax), %xmm2 @@ -559,78 +560,78 @@ # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmullw (%rax), %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmuludq %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmuludq (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - por %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - por (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psadbw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - psadbw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pshufd $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pshufd $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pshufhw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pshufhw $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pshuflw $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - pshuflw $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pslld $1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pslld %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - pslld (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - pslldq $1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psllq $1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psllq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - 1.00 - psllq (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psllw $1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psllw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psllw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - psrad $1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psrad %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - psrad (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psraw $1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - psraw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - psraw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - psrld $1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psrld %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - psrld (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psrldq $1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psrlq $1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psrlq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - psrlq (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - psrlw $1, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psrlw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psrlw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubsb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubsb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubusb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubusb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubusw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubusw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psubw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psubw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - punpckhbw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - punpckhbw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - punpckhdq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - punpckhdq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - punpckhqdq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - punpckhqdq (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - punpckhwd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - punpckhwd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - punpcklbw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - punpcklbw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - punpckldq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - punpckldq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - punpcklqdq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - punpcklqdq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - punpcklwd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - punpcklwd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - pxor %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pxor (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - shufpd $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - shufpd $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - por %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - por (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psadbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psadbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pshufd $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pshufd $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pshufhw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pshufhw $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pshuflw $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pshuflw $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pslld $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pslld %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pslld (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pslldq $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psllq $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psllq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psllq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psllw $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psllw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psllw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrad $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrad %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psrad (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psraw $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psraw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psraw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrld $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrld %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psrld (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrldq $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrlq $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrlq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psrlq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrlw $1, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psrlw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psrlw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubsb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubsb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubusb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubusb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubusw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubusw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psubw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psubw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpckhbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpckhbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpckhdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpckhdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpckhqdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpckhqdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpckhwd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpckhwd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpcklbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpcklbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpckldq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpckldq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpcklqdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpcklqdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - punpcklwd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - punpcklwd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pxor %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pxor (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - shufpd $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - shufpd $1, (%rax), %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 - - - - - - - sqrtpd %xmm0, %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 1.00 - - - - - - sqrtpd (%rax), %xmm2 # CHECK-NEXT: - - - - 21.00 - 1.00 - - - - - - - sqrtsd %xmm0, %xmm2 @@ -641,9 +642,9 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - subsd (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - ucomisd %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - ucomisd (%rax), %xmm1 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - unpckhpd %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - unpckhpd (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - unpcklpd %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - unpcklpd (%rax), %xmm2 -# CHECK-NEXT: - - - 0.01 0.99 1.00 - - - - - - - - xorpd %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 0.99 0.01 1.00 - - - - - - xorpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - unpckhpd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - unpckhpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - unpcklpd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - unpcklpd (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - xorpd %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - xorpd (%rax), %xmm2 Index: test/tools/llvm-mca/X86/BtVer2/resources-sse3.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-sse3.s +++ test/tools/llvm-mca/X86/BtVer2/resources-sse3.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 addsubpd %xmm0, %xmm2 addsubpd (%rax), %xmm2 @@ -29,7 +29,6 @@ movsldup %xmm0, %xmm2 movsldup (%rax), %xmm2 - # CHECK: Resources: # CHECK-NEXT: [0] - JALU0 # CHECK-NEXT: [1] - JALU1 @@ -60,10 +59,10 @@ # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - hsubpd (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - hsubps %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - hsubps (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - lddqu (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 0.01 0.99 - - - - - - - movddup %xmm0, %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - movddup (%rax), %xmm2 -# CHECK-NEXT: - - - 0.03 0.97 0.03 0.97 - - - - - - - movshdup %xmm0, %xmm2 -# CHECK-NEXT: - - - 0.01 0.99 0.01 0.99 1.00 - - - - - - movshdup (%rax), %xmm2 -# CHECK-NEXT: - - - 0.03 0.97 0.03 0.97 - - - - - - - movsldup %xmm0, %xmm2 -# CHECK-NEXT: - - - 0.96 0.04 0.96 0.04 1.00 - - - - - - movsldup (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - lddqu (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movddup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movddup (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movshdup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movshdup (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movsldup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movsldup (%rax), %xmm2 Index: test/tools/llvm-mca/X86/BtVer2/resources-sse41.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-sse41.s +++ test/tools/llvm-mca/X86/BtVer2/resources-sse41.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 blendpd $11, %xmm0, %xmm2 blendpd $11, (%rax), %xmm2 @@ -163,88 +163,88 @@ # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - blendpd $11, %xmm0, %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: - - - 3.94 0.06 0.99 0.01 - - - - - - - blendvpd %xmm0, %xmm0, %xmm2 -# CHECK-NEXT: - - - 0.06 3.94 1.00 - 1.00 - - - - - - blendvpd %xmm0, (%rax), %xmm2 -# CHECK-NEXT: - - - 4.00 - 0.99 0.01 - - - - - - - blendvps %xmm0, %xmm0, %xmm2 -# CHECK-NEXT: - - - - 4.00 0.01 0.99 1.00 - - - - - - blendvps %xmm0, (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - blendpd $11, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - blendpd $11, (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - blendps $11, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - blendps $11, (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - - - - - - blendvpd %xmm0, %xmm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - blendvpd %xmm0, (%rax), %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 - - - - - - - blendvps %xmm0, %xmm0, %xmm2 +# CHECK-NEXT: - - - 2.00 2.00 0.50 0.50 1.00 - - - - - - blendvps %xmm0, (%rax), %xmm2 # CHECK-NEXT: - - - 3.00 3.00 - 1.00 - - - - - - - dppd $22, %xmm0, %xmm2 # CHECK-NEXT: - - - 3.00 3.00 - 1.00 1.00 - - - - - - dppd $22, (%rax), %xmm2 # CHECK-NEXT: - - - 3.00 3.00 - 1.00 - - - - - - - dpps $22, %xmm0, %xmm2 # CHECK-NEXT: - - - 3.00 3.00 - 1.00 1.00 - - - - - - dpps $22, (%rax), %xmm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - extractps $1, %xmm0, %ecx -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - 1.00 - - - - extractps $1, %xmm0, (%rax) -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - insertps $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - insertps $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.50 0.50 - movntdqa (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - extractps $1, %xmm0, %ecx +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - 1.00 - - - - extractps $1, %xmm0, (%rax) +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - insertps $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - insertps $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - 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 - - - - 2.00 2.00 - pblendvb %xmm0, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 2.00 2.00 - 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: - - - - - 1.00 - - - - - 0.50 0.50 - pcmpeqq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pcmpeqq (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 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: - - - - - 0.01 0.99 - - - - 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: - - - - - 0.99 0.01 - - - - 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.50 0.50 - - - - 0.50 0.50 - packusdw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - packusdw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 2.00 2.00 - pblendvb %xmm0, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 2.00 2.00 - pblendvb %xmm0, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pblendw $11, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pblendw $11, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpeqq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrb $1, %xmm0, %ecx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrb $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrd $1, %xmm0, %ecx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrd $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrq $1, %xmm0, %rcx +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrq $1, %xmm0, (%rax) +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - 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.50 0.50 - pinsrb $1, (%rax), %xmm1 -# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pinsrd $1, %eax, %xmm1 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pinsrd $1, (%rax), %xmm1 -# CHECK-NEXT: - - - - - 0.01 0.99 - - - - 0.50 0.50 - pinsrq $1, %rax, %xmm1 -# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - 0.50 0.50 - pinsrq $1, (%rax), %xmm1 -# CHECK-NEXT: - - - - - - 1.00 - - - - 0.50 0.50 - pmaxsb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 0.50 0.50 - pmaxsb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmaxsd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 0.50 0.50 - pmaxsd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmaxud %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.50 0.50 - pmaxud (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.51 0.49 - 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.51 0.49 - pminuw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.50 0.50 - pmovsxbd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.49 0.51 - 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: - - - - - 0.99 0.01 - - - - 0.49 0.51 - pmovsxwq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pmovsxwq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.49 0.51 - pmovzxbd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pmovzxbd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.49 0.51 - pmovzxbq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pmovzxbq (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.49 0.51 - pmovzxbw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 0.51 0.49 - pmovzxbw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - pmovzxdq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - 0.49 0.51 - 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: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pinsrb $1, %eax, %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pinsrb $1, (%rax), %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pinsrd $1, %eax, %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pinsrd $1, (%rax), %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pinsrq $1, %rax, %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pinsrq $1, (%rax), %xmm1 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxsb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmaxsb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxsd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmaxsd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxud %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmaxud (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxuw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmaxuw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pminsb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pminsb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pminsd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pminsd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pminud %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pminud (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pminuw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pminuw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovsxbd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovsxbd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovsxbq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovsxbq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovsxbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovsxbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovsxdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovsxdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovsxwd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovsxwd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovsxwq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovsxwq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovzxbd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovzxbd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovzxbq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovzxbq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovzxbw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovzxbw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovzxdq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovzxdq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovzxwd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pmovzxwd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmovzxwq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - 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 Index: test/tools/llvm-mca/X86/BtVer2/resources-sse42.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-sse42.s +++ test/tools/llvm-mca/X86/BtVer2/resources-sse42.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 crc32b %al, %ecx crc32b (%rax), %ecx @@ -48,23 +48,23 @@ # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - 4.00 - - - - - - - - - - - - crc32b %al, %ecx -# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32b (%rax), %ecx -# CHECK-NEXT: - 4.00 - - - - - - - - - - - - crc32l %eax, %ecx -# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32l (%rax), %ecx -# CHECK-NEXT: - 4.00 - - - - - - - - - - - - crc32w %ax, %ecx -# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32w (%rax), %ecx -# CHECK-NEXT: - 4.00 - - - - - - - - - - - - crc32b %al, %rcx -# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32b (%rax), %rcx -# CHECK-NEXT: - 4.00 - - - - - - - - - - - - crc32q %rax, %rcx -# CHECK-NEXT: 4.00 - - - - - - 1.00 - - - - - - crc32q (%rax), %rcx -# CHECK-NEXT: - - - 1.00 - - 1.00 2.00 - 2.00 - 6.00 4.00 - pcmpestri $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 3.00 - 2.00 - 6.00 4.00 - pcmpestri $1, (%rax), %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 2.00 - 2.00 - 6.00 4.00 - pcmpestrm $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 3.00 - 2.00 - 6.00 4.00 - pcmpestrm $1, (%rax), %xmm2 +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - crc32b %al, %ecx +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - crc32b (%rax), %ecx +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - crc32l %eax, %ecx +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - crc32l (%rax), %ecx +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - crc32w %ax, %ecx +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - crc32w (%rax), %ecx +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - crc32b %al, %rcx +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - crc32b (%rax), %rcx +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - crc32q %rax, %rcx +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - crc32q (%rax), %rcx +# CHECK-NEXT: - - - 1.00 - - 1.00 2.00 - 2.00 - 3.00 7.00 - pcmpestri $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 1.00 - - 1.00 3.00 - 2.00 - 3.00 7.00 - pcmpestri $1, (%rax), %xmm2 +# CHECK-NEXT: - - - 1.00 - - 1.00 2.00 - 2.00 - 3.00 7.00 - pcmpestrm $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 1.00 - - 1.00 3.00 - 2.00 - 3.00 7.00 - pcmpestrm $1, (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - 2.00 - pcmpistri $1, %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - 2.00 - pcmpistri $1, (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - 2.00 - pcmpistrm $1, %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - 2.00 - pcmpistrm $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - pcmpgtq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - 1.00 - - pcmpgtq (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpgtq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpgtq (%rax), %xmm2 Index: test/tools/llvm-mca/X86/BtVer2/resources-sse4a.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-sse4a.s +++ test/tools/llvm-mca/X86/BtVer2/resources-sse4a.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 extrq %xmm0, %xmm2 extrq $22, $2, %xmm2 @@ -27,9 +27,9 @@ # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - 0.49 0.51 - extrq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 0.50 0.50 - extrq $22, $2, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - 2.00 2.00 - insertq %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - 2.00 2.00 - insertq $22, $22, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - extrq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - extrq $22, $2, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 2.00 2.00 - insertq %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 2.00 2.00 - insertq $22, $22, %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntsd %xmm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntss %xmm0, (%rax) Index: test/tools/llvm-mca/X86/BtVer2/resources-ssse3.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-ssse3.s +++ test/tools/llvm-mca/X86/BtVer2/resources-ssse3.s @@ -1,4 +1,4 @@ -# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 +# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s --check-prefixes=CHECK,BTVER2 palignr $1, %xmm0, %xmm2 palignr $1, (%rax), %xmm2 @@ -57,29 +57,29 @@ # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - palignr $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - palignr $1, (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - phaddd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - phaddd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - phaddsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - phaddsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - phaddw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - phaddw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - phsubd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - phsubd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - phsubsw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - phsubsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - 1.00 - phsubw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - 1.00 - - phsubw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - palignr $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - palignr $1, (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - phaddd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - phaddd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - phaddsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - phaddsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - phaddw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - phaddw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - phsubd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - phsubd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - phsubsw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - phsubsw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - phsubw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - phsubw (%rax), %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmaddubsw %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmaddubsw (%rax), %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmulhrsw %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmulhrsw (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - - - 4.00 - pshufb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 4.00 - - pshufb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psignb %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psignb (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psignd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psignd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 1.00 - - - - - - 1.00 - psignw %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - - 1.00 - - psignw (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 2.00 2.00 - pshufb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 2.00 2.00 - pshufb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psignb %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psignb (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psignd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psignd (%rax), %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - psignw %xmm0, %xmm2 +# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - psignw (%rax), %xmm2 Index: tools/llvm-mca/CMakeLists.txt =================================================================== --- tools/llvm-mca/CMakeLists.txt +++ tools/llvm-mca/CMakeLists.txt @@ -18,6 +18,7 @@ InstrBuilder.cpp Instruction.cpp InstructionInfoView.cpp + InstructionTables.cpp LSUnit.cpp llvm-mca.cpp ResourcePressureView.cpp Index: tools/llvm-mca/InstrBuilder.h =================================================================== --- tools/llvm-mca/InstrBuilder.h +++ tools/llvm-mca/InstrBuilder.h @@ -51,6 +51,9 @@ } const InstrDesc &getOrCreateInstrDesc(const llvm::MCInst &MCI); + llvm::ArrayRef getProcResourceMasks() const { + return ProcResourceMasks; + } std::unique_ptr createInstruction(unsigned Idx, const llvm::MCInst &MCI); Index: tools/llvm-mca/InstructionTables.h =================================================================== --- tools/llvm-mca/InstructionTables.h +++ tools/llvm-mca/InstructionTables.h @@ -0,0 +1,45 @@ +//===--------------------- InstructionTables.h ------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// \file +/// +/// This file implements a custom driver to generate instruction tables. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVM_MCA_INSTRUCTIONTABLES_H +#define LLVM_TOOLS_LLVM_MCA_INSTRUCTIONTABLES_H + +#include "HWEventListener.h" +#include "InstrBuilder.h" +#include "SourceMgr.h" +#include "llvm/MC/MCSchedule.h" + +namespace mca { + +class InstructionTables { + const llvm::MCSchedModel &SM; + InstrBuilder &IB; + SourceMgr &S; + std::set Listeners; + +public: + InstructionTables(const llvm::MCSchedModel &Model, InstrBuilder &Builder, + SourceMgr &Source) + : SM(Model), IB(Builder), S(Source) {} + + void addEventListener(HWEventListener *Listener) { + if (Listener) + Listeners.insert(Listener); + } + + void run(); +}; +} // namespace mca + +#endif Index: tools/llvm-mca/InstructionTables.cpp =================================================================== --- tools/llvm-mca/InstructionTables.cpp +++ tools/llvm-mca/InstructionTables.cpp @@ -0,0 +1,80 @@ +//===--------------------- InstructionTables.cpp ----------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// \file +/// +/// This file implements method InstructionTables::run(). +/// Method run() prints a theoretical resource pressure distribution based on +/// the information available in the scheduling model, and without running +/// the backend pipeline. +/// +//===----------------------------------------------------------------------===// + +#include "InstructionTables.h" + +namespace mca { + +using namespace llvm; + +using ResourceRef = std::pair; + +void InstructionTables::run() { + ArrayRef Masks = IB.getProcResourceMasks(); + SmallVector, 4> UsedResources; + + // Create an instruction descriptor for every instruction in the sequence. + while (S.hasNext()) { + UsedResources.clear(); + InstRef IR = S.peekNext(); + std::unique_ptr Inst = IB.createInstruction(IR.first, *IR.second); + const InstrDesc &Desc = Inst->getDesc(); + // Now identify the resources consumed by this instruction. + for (const std::pair Resource : Desc.Resources) { + // Skip zero-cycle resources (i.e. unused resources). + if (!Resource.second.size()) + continue; + double Cycles = static_cast(Resource.second.size()); + unsigned Index = + std::distance(Masks.begin(), std::find(Masks.begin(), Masks.end(), + Resource.first)); + const MCProcResourceDesc &ProcResource = *SM.getProcResource(Index); + unsigned NumUnits = ProcResource.NumUnits; + if (!ProcResource.SubUnitsIdxBegin) { + // The number of cycles consumed by each unit. + Cycles /= NumUnits; + for (unsigned I = 0, E = NumUnits; I < E; ++I) { + ResourceRef ResourceUnit = std::make_pair(Index, 1U << I); + UsedResources.emplace_back(std::make_pair(ResourceUnit, Cycles)); + } + continue; + } + + // This is a group. Obtain the set of resources contained in this + // group. Some of these resources may implement multiple units. + // Uniformly distribute Cycles across all of the units. + for (unsigned I1 = 0, E1 = NumUnits; I1 < E1; ++I1) { + unsigned SubUnitIdx = ProcResource.SubUnitsIdxBegin[I1]; + const MCProcResourceDesc &SubUnit = *SM.getProcResource(SubUnitIdx); + // Compute the number of cycles consumed by each resource unit. + double RUCycles = Cycles / (E1 * SubUnit.NumUnits); + for (unsigned I2 = 0, E2 = SubUnit.NumUnits; I2 < E2; ++I2) { + ResourceRef ResourceUnit = std::make_pair(SubUnitIdx, 1U << I2); + UsedResources.emplace_back(std::make_pair(ResourceUnit, RUCycles)); + } + } + } + + // Now send a fake instruction issued event to all the listeners. + HWInstructionIssuedEvent Event(IR.first, UsedResources); + for (HWEventListener *Listener : Listeners) + Listener->onInstructionEvent(Event); + S.updateNext(); + } +} + +} // namespace mca Index: tools/llvm-mca/llvm-mca.cpp =================================================================== --- tools/llvm-mca/llvm-mca.cpp +++ tools/llvm-mca/llvm-mca.cpp @@ -24,6 +24,7 @@ #include "BackendPrinter.h" #include "BackendStatistics.h" #include "InstructionInfoView.h" +#include "InstructionTables.h" #include "ResourcePressureView.h" #include "SummaryView.h" #include "TimelineView.h" @@ -121,9 +122,15 @@ static cl::opt LoadQueueSize("lqueue", cl::desc("Size of the load queue"), cl::init(0)); + static cl::opt StoreQueueSize("squeue", cl::desc("Size of the store queue"), cl::init(0)); +static cl::opt + PrintInstructionTables("instruction-tables", + cl::desc("Print instruction tables"), + cl::init(false)); + static const Target *getTarget(const char *ProgName) { TripleName = Triple::normalize(TripleName); if (TripleName.empty()) @@ -260,8 +267,9 @@ MOFI.InitMCObjectFileInfo(TheTriple, /* PIC= */ false, Ctx); std::unique_ptr BOS; + std::unique_ptr S = - llvm::make_unique(Iterations); + llvm::make_unique(PrintInstructionTables ? 1 : Iterations); MCStreamerWrapper Str(Ctx, S->getSequence()); std::unique_ptr MCII(TheTarget->createMCInstrInfo()); @@ -326,6 +334,16 @@ std::unique_ptr IB = llvm::make_unique(*STI, *MCII); + if (PrintInstructionTables) { + mca::InstructionTables IT(STI->getSchedModel(), *IB, *S); + mca::ResourcePressureView RPV(*STI, *IP, *S); + IT.addEventListener(&RPV); + IT.run(); + RPV.printView(TOF->os()); + TOF->keep(); + return 0; + } + std::unique_ptr B = llvm::make_unique( *STI, *MRI, *IB, *S, Width, RegisterFileSize, MaxRetirePerCycle, LoadQueueSize, StoreQueueSize, AssumeNoAlias);