[llvm-mca] Add flag -instruction-tables to print the theoretical resource pressure distribution for instructions (PR36874)

The goal of this patch is to address most of PR36874.  To fully fix PR36874 we
need to split the "InstructionInfo" view from the "SummaryView". That would make
easy to check the latency and rthroughput as well.

The patch reuses all the logic from ResourcePressureView to print out the
"instruction tables".

We have an entry for every instruction in the input sequence. Each entry reports
the theoretical resource pressure distribution. Resource pressure is uniformly
distributed across all the processor resource units of a group.

At the moment, the backend pipeline is not configurable, so the only way to fix
this is by creating a different driver that simply sends instruction events to
the resource pressure view.  That means, we don't use the Backend interface.
Instead, it is simpler to just have a different code-path for when flag
-instruction-tables is specified.

Once Clement addresses bug 36663, then we can port the "instruction tables"
logic into a stage of our configurable pipeline.

Updated the BtVer2 test cases (thanks Simon for the help). Now we pass flag
-instruction-tables to each modified test.

Differential Revision: https://reviews.llvm.org/D44839

llvm-svn: 328487
This commit is contained in:
Andrea Di Biagio 2018-03-26 12:04:53 +00:00
parent 5af3fb2b94
commit d1569290ef
16 changed files with 871 additions and 707 deletions

View File

@ -124,6 +124,14 @@ option specifies "``-``", then the output will also be sent to standard output.
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
-----------

View File

@ -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

View File

@ -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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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 @@ vzeroupper
# 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

View File

@ -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

View File

@ -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 @@ xorps (%rax), %xmm2
# 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 @@ xorps (%rax), %xmm2
# 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 @@ xorps (%rax), %xmm2
# 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 @@ xorps (%rax), %xmm2
# 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

View File

@ -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 @@ xorpd (%rax), %xmm2
# 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 @@ xorpd (%rax), %xmm2
# 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 @@ xorpd (%rax), %xmm2
# 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 @@ xorpd (%rax), %xmm2
# 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 @@ xorpd (%rax), %xmm2
# 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

View File

@ -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 @@ movshdup (%rax), %xmm2
movsldup %xmm0, %xmm2
movsldup (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
@ -60,10 +59,10 @@ movsldup (%rax), %xmm2
# 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

View File

@ -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 @@ roundss $1, (%rax), %xmm2
# 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

View File

@ -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 @@ pcmpgtq (%rax), %xmm2
# 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

View File

@ -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 @@ movntss %xmm0, (%rax)
# 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)

View File

@ -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 @@ psignw (%rax), %xmm2
# 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

View File

@ -18,6 +18,7 @@ add_llvm_tool(llvm-mca
InstrBuilder.cpp
Instruction.cpp
InstructionInfoView.cpp
InstructionTables.cpp
LSUnit.cpp
llvm-mca.cpp
ResourcePressureView.cpp

View File

@ -51,6 +51,13 @@ public:
}
const InstrDesc &getOrCreateInstrDesc(const llvm::MCInst &MCI);
// Returns an array of processor resource masks.
// Masks are computed by function mca::computeProcResourceMasks. see
// Support.h for a description of how masks are computed and how masks can be
// used to solve set membership problems.
llvm::ArrayRef<uint64_t> getProcResourceMasks() const {
return ProcResourceMasks;
}
std::unique_ptr<Instruction> createInstruction(unsigned Idx,
const llvm::MCInst &MCI);

View File

@ -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<uint64_t, uint64_t>;
void InstructionTables::run() {
ArrayRef<uint64_t> Masks = IB.getProcResourceMasks();
SmallVector<std::pair<ResourceRef, double>, 4> UsedResources;
// Create an instruction descriptor for every instruction in the sequence.
while (S.hasNext()) {
UsedResources.clear();
InstRef IR = S.peekNext();
std::unique_ptr<Instruction> Inst = IB.createInstruction(IR.first, *IR.second);
const InstrDesc &Desc = Inst->getDesc();
// Now identify the resources consumed by this instruction.
for (const std::pair<uint64_t, ResourceUsage> Resource : Desc.Resources) {
// Skip zero-cycle resources (i.e. unused resources).
if (!Resource.second.size())
continue;
double Cycles = static_cast<double>(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; I1 < NumUnits; ++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 / (NumUnits * 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

View File

@ -0,0 +1,47 @@
//===--------------------- 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.
/// See the description of command-line flag -instruction-tables in
/// docs/CommandGuide/lvm-mca.rst
///
//===----------------------------------------------------------------------===//
#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<HWEventListener *> 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

View File

@ -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<bool> AssumeNoAlias(
static cl::opt<unsigned>
LoadQueueSize("lqueue", cl::desc("Size of the load queue"), cl::init(0));
static cl::opt<unsigned>
StoreQueueSize("squeue", cl::desc("Size of the store queue"), cl::init(0));
static cl::opt<bool>
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 @@ int main(int argc, char **argv) {
MOFI.InitMCObjectFileInfo(TheTriple, /* PIC= */ false, Ctx);
std::unique_ptr<buffer_ostream> BOS;
std::unique_ptr<mca::SourceMgr> S =
llvm::make_unique<mca::SourceMgr>(Iterations);
llvm::make_unique<mca::SourceMgr>(PrintInstructionTables ? 1 : Iterations);
MCStreamerWrapper Str(Ctx, S->getSequence());
std::unique_ptr<MCInstrInfo> MCII(TheTarget->createMCInstrInfo());
@ -326,6 +334,18 @@ int main(int argc, char **argv) {
std::unique_ptr<mca::InstrBuilder> IB =
llvm::make_unique<mca::InstrBuilder>(*STI, *MCII);
if (PrintInstructionTables) {
mca::InstructionTables IT(STI->getSchedModel(), *IB, *S);
mca::ResourcePressureView RPV(*STI, *IP, *S);
mca::InstructionInfoView IIV(*STI, *MCII, *S, *IP);
IT.addEventListener(&IIV);
IT.addEventListener(&RPV);
IT.run();
RPV.printView(TOF->os());
TOF->keep();
return 0;
}
std::unique_ptr<mca::Backend> B = llvm::make_unique<mca::Backend>(
*STI, *MRI, *IB, *S, Width, RegisterFileSize, MaxRetirePerCycle,
LoadQueueSize, StoreQueueSize, AssumeNoAlias);