[X86][Btver2] Add llvm-mca tests to show pipe resource usage of most vector instructions

Hopefully these tests can be easily reused should any other subtarget get in depth llvm-mca coverage (we can either copy the tests or move them into a common dir and run it with multiple prefixes).

llvm-svn: 327788
This commit is contained in:
Simon Pilgrim 2018-03-18 09:32:38 +00:00
parent 2d451e73f9
commit 0ba4a0f3a6
11 changed files with 3206 additions and 0 deletions

View File

@ -0,0 +1,50 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
aesdec %xmm0, %xmm2
aesdec (%rax), %xmm2
aesdeclast %xmm0, %xmm2
aesdeclast (%rax), %xmm2
aesenc %xmm0, %xmm2
aesenc (%rax), %xmm2
aesenclast %xmm0, %xmm2
aesenclast (%rax), %xmm2
aesimc %xmm0, %xmm2
aesimc (%rax), %xmm2
aeskeygenassist $22, %xmm0, %xmm2
aeskeygenassist $22, (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 aesdec %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 aesdec (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 aesdeclast %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 aesdeclast (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 aesenc %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 aesenc (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 aesenclast %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 aesenclast (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 aesimc %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 aesimc (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 aeskeygenassist $22, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 aeskeygenassist $22, (%rax), %xmm2

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
pclmulqdq $11, %xmm0, %xmm2
pclmulqdq $11, (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 pclmulqdq $11, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pclmulqdq $11, (%rax), %xmm2

View File

@ -0,0 +1,40 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
vcvtph2ps %xmm0, %xmm2
vcvtph2ps (%rax), %xmm2
vcvtph2ps %xmm0, %ymm2
vcvtph2ps (%rax), %ymm2
vcvtps2ph $0, %xmm0, %xmm2
vcvtps2ph $0, %xmm0, (%rax)
vcvtps2ph $0, %ymm0, %xmm2
vcvtps2ph $0, %ymm0, (%rax)
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 - - - - - - - vcvtph2ps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - vcvtph2ps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 2.00 - - - - - - - vcvtph2ps %xmm0, %ymm2
# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vcvtph2ps (%rax), %ymm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - vcvtps2ph $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 - - - - vcvtps2ph $0, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - vcvtps2ph $0, %ymm0, %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 - - - - vcvtps2ph $0, %ymm0, (%rax)

View File

@ -0,0 +1,245 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
addps %xmm0, %xmm2
addps (%rax), %xmm2
addss %xmm0, %xmm2
addss (%rax), %xmm2
andnps %xmm0, %xmm2
andnps (%rax), %xmm2
andps %xmm0, %xmm2
andps (%rax), %xmm2
cmpps $0, %xmm0, %xmm2
cmpps $0, (%rax), %xmm2
cmpss $0, %xmm0, %xmm2
cmpss $0, (%rax), %xmm2
comiss %xmm0, %xmm1
comiss (%rax), %xmm1
cvtsi2ss %ecx, %xmm2
cvtsi2ss %rcx, %xmm2
cvtsi2ss (%rax), %xmm2
cvtsi2ss (%rax), %xmm2
cvtss2si %xmm0, %ecx
cvtss2si %xmm0, %rcx
cvtss2si (%rax), %ecx
cvtss2si (%rax), %rcx
cvttss2si %xmm0, %ecx
cvttss2si %xmm0, %rcx
cvttss2si (%rax), %ecx
cvttss2si (%rax), %rcx
divps %xmm0, %xmm2
divps (%rax), %xmm2
divss %xmm0, %xmm2
divss (%rax), %xmm2
ldmxcsr (%rax)
maxps %xmm0, %xmm2
maxps (%rax), %xmm2
maxss %xmm0, %xmm2
maxss (%rax), %xmm2
minps %xmm0, %xmm2
minps (%rax), %xmm2
minss %xmm0, %xmm2
minss (%rax), %xmm2
movaps %xmm0, %xmm2
movaps %xmm0, (%rax)
movaps (%rax), %xmm2
movhlps %xmm0, %xmm2
movlhps %xmm0, %xmm2
movhps %xmm0, (%rax)
movhps (%rax), %xmm2
movlps %xmm0, (%rax)
movlps (%rax), %xmm2
movmskps %xmm0, %rcx
movntps %xmm0, (%rax)
movss %xmm0, %xmm2
movss %xmm0, (%rax)
movss (%rax), %xmm2
movups %xmm0, %xmm2
movups %xmm0, (%rax)
movups (%rax), %xmm2
mulps %xmm0, %xmm2
mulps (%rax), %xmm2
mulss %xmm0, %xmm2
mulss (%rax), %xmm2
orps %xmm0, %xmm2
orps (%rax), %xmm2
pinsrw $1, %rax, %xmm1
pinsrw $1, (%rax), %xmm1
rcpps %xmm0, %xmm2
rcpps (%rax), %xmm2
rcpss %xmm0, %xmm2
rcpss (%rax), %xmm2
rsqrtps %xmm0, %xmm2
rsqrtps (%rax), %xmm2
rsqrtss %xmm0, %xmm2
rsqrtss (%rax), %xmm2
shufps $1, %xmm0, %xmm2
shufps $1, (%rax), %xmm2
sqrtps %xmm0, %xmm2
sqrtps (%rax), %xmm2
sqrtss %xmm0, %xmm2
sqrtss (%rax), %xmm2
stmxcsr (%rax)
subps %xmm0, %xmm2
subps (%rax), %xmm2
subss %xmm0, %xmm2
subss (%rax), %xmm2
ucomiss %xmm0, %xmm1
ucomiss (%rax), %xmm1
unpckhps %xmm0, %xmm2
unpckhps (%rax), %xmm2
unpcklps %xmm0, %xmm2
unpcklps (%rax), %xmm2
xorps %xmm0, %xmm2
xorps (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 - - - - - - - - addps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - addss %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addss (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - andnps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - - - - andps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsi2ssl %ecx, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsi2ssq %rcx, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsi2ssl (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsi2ssl (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtss2si %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtss2si %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtss2si (%rax), %ecx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtss2si (%rax), %rcx
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvttss2si %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvttss2si %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvttss2si (%rax), %ecx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvttss2si (%rax), %rcx
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - divps %xmm0, %xmm2
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - divps (%rax), %xmm2
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - divss %xmm0, %xmm2
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - divss (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - ldmxcsr (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - maxps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - maxps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - maxss %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - maxss (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - minps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - minps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - minss %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - minss (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - movaps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movaps %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movaps (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - movhlps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movlhps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movhps %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - - - - movhps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movlps %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - movlps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movmskps %xmm0, %ecx
# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - movntps %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - movss %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movss %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movss (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movups %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movups %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movups (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - mulps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - mulps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - mulss %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - mulss (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - orps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - orps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pinsrw $1, %eax, %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - pinsrw $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - rcpps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - rcpps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - rcpss %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - rcpss (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - rsqrtps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - rsqrtps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - rsqrtss %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - rsqrtss (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - shufps $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 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
# CHECK-NEXT: - - - - 21.00 - 1.00 1.00 - - - - - - sqrtss (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - stmxcsr (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - subps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - subps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - subss %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - subss (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - ucomiss %xmm0, %xmm1
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - ucomiss (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - unpckhps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - unpckhps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - unpcklps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - - - - unpcklps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - xorps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - - - - xorps (%rax), %xmm2

View File

@ -0,0 +1,649 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
addpd %xmm0, %xmm2
addpd (%rax), %xmm2
addsd %xmm0, %xmm2
addsd (%rax), %xmm2
addsubpd %xmm0, %xmm2
addsubpd (%rax), %xmm2
andnpd %xmm0, %xmm2
andnpd (%rax), %xmm2
andpd %xmm0, %xmm2
andpd (%rax), %xmm2
cmppd $0, %xmm0, %xmm2
cmppd $0, (%rax), %xmm2
cmpsd $0, %xmm0, %xmm2
cmpsd $0, (%rax), %xmm2
comisd %xmm0, %xmm1
comisd (%rax), %xmm1
cvtdq2pd %xmm0, %xmm2
cvtdq2pd (%rax), %xmm2
cvtdq2ps %xmm0, %xmm2
cvtdq2ps (%rax), %xmm2
cvtpd2dq %xmm0, %xmm2
cvtpd2dq (%rax), %xmm2
cvtpd2ps %xmm0, %xmm2
cvtpd2ps (%rax), %xmm2
cvtps2dq %xmm0, %xmm2
cvtps2dq (%rax), %xmm2
cvtps2pd %xmm0, %xmm2
cvtps2pd (%rax), %xmm2
cvtsd2si %xmm0, %ecx
cvtsd2si %xmm0, %rcx
cvtsd2si (%rax), %ecx
cvtsd2si (%rax), %rcx
cvtsd2ss %xmm0, %xmm2
cvtsd2ss (%rax), %xmm2
cvtsi2sd %ecx, %xmm2
cvtsi2sd %rcx, %xmm2
cvtsi2sd (%rax), %xmm2
cvtsi2sd (%rax), %xmm2
cvtss2sd %xmm0, %xmm2
cvtss2sd (%rax), %xmm2
cvttpd2dq %xmm0, %xmm2
cvttpd2dq (%rax), %xmm2
cvttps2dq %xmm0, %xmm2
cvttps2dq (%rax), %xmm2
cvttsd2si %xmm0, %ecx
cvttsd2si %xmm0, %rcx
cvttsd2si (%rax), %ecx
cvttsd2si (%rax), %rcx
divpd %xmm0, %xmm2
divpd (%rax), %xmm2
divsd %xmm0, %xmm2
divsd (%rax), %xmm2
maskmovdqu %xmm0, %xmm1
maxpd %xmm0, %xmm2
maxpd (%rax), %xmm2
maxsd %xmm0, %xmm2
maxsd (%rax), %xmm2
minpd %xmm0, %xmm2
minpd (%rax), %xmm2
minsd %xmm0, %xmm2
minsd (%rax), %xmm2
movapd %xmm0, %xmm2
movapd %xmm0, (%rax)
movapd (%rax), %xmm2
movd %eax, %xmm2
movd (%rax), %xmm2
movd %xmm0, %ecx
movd %xmm0, (%rax)
movdqa %xmm0, %xmm2
movdqa %xmm0, (%rax)
movdqa (%rax), %xmm2
movdqu %xmm0, %xmm2
movdqu %xmm0, (%rax)
movdqu (%rax), %xmm2
movhpd %xmm0, (%rax)
movhpd (%rax), %xmm2
movlpd %xmm0, (%rax)
movlpd (%rax), %xmm2
movmskpd %xmm0, %rcx
movntdq %xmm0, (%rax)
movntpd %xmm0, (%rax)
movq %xmm0, %xmm2
movq %rax, %xmm2
movq (%rax), %xmm2
movq %xmm0, %rcx
movq %xmm0, (%rax)
movsd %xmm0, %xmm2
movsd %xmm0, (%rax)
movsd (%rax), %xmm2
movupd %xmm0, %xmm2
movupd %xmm0, (%rax)
movupd (%rax), %xmm2
mulpd %xmm0, %xmm2
mulpd (%rax), %xmm2
mulsd %xmm0, %xmm2
mulsd (%rax), %xmm2
orpd %xmm0, %xmm2
orpd (%rax), %xmm2
pabsb %xmm0, %xmm2
pabsb (%rax), %xmm2
pabsd %xmm0, %xmm2
pabsd (%rax), %xmm2
pabsw %xmm0, %xmm2
pabsw (%rax), %xmm2
packssdw %xmm0, %xmm2
packssdw (%rax), %xmm2
packsswb %xmm0, %xmm2
packsswb (%rax), %xmm2
packuswb %xmm0, %xmm2
packuswb (%rax), %xmm2
paddb %xmm0, %xmm2
paddb (%rax), %xmm2
paddd %xmm0, %xmm2
paddd (%rax), %xmm2
paddq %xmm0, %xmm2
paddq (%rax), %xmm2
paddsb %xmm0, %xmm2
paddsb (%rax), %xmm2
paddsw %xmm0, %xmm2
paddsw (%rax), %xmm2
paddusb %xmm0, %xmm2
paddusb (%rax), %xmm2
paddusw %xmm0, %xmm2
paddusw (%rax), %xmm2
paddw %xmm0, %xmm2
paddw (%rax), %xmm2
pand %xmm0, %xmm2
pand (%rax), %xmm2
pandn %xmm0, %xmm2
pandn (%rax), %xmm2
pavgb %xmm0, %xmm2
pavgb (%rax), %xmm2
pavgw %xmm0, %xmm2
pavgw (%rax), %xmm2
pcmpeqb %xmm0, %xmm2
pcmpeqb (%rax), %xmm2
pcmpeqd %xmm0, %xmm2
pcmpeqd (%rax), %xmm2
pcmpeqw %xmm0, %xmm2
pcmpeqw (%rax), %xmm2
pcmpgtb %xmm0, %xmm2
pcmpgtb (%rax), %xmm2
pcmpgtd %xmm0, %xmm2
pcmpgtd (%rax), %xmm2
pcmpgtw %xmm0, %xmm2
pcmpgtw (%rax), %xmm2
pextrw $1, %xmm0, %rcx
pmaddwd %xmm0, %xmm2
pmaddwd (%rax), %xmm2
pmaxsw %xmm0, %xmm2
pmaxsw (%rax), %xmm2
pmaxub %xmm0, %xmm2
pmaxub (%rax), %xmm2
pminsw %xmm0, %xmm2
pminsw (%rax), %xmm2
pminub %xmm0, %xmm2
pminub (%rax), %xmm2
pmovmskb %xmm0, %rcx
pmulhuw %xmm0, %xmm2
pmulhuw (%rax), %xmm2
pmulhw %xmm0, %xmm2
pmulhw (%rax), %xmm2
pmullw %xmm0, %xmm2
pmullw (%rax), %xmm2
pmuludq %xmm0, %xmm2
pmuludq (%rax), %xmm2
por %xmm0, %xmm2
por (%rax), %xmm2
psadbw %xmm0, %xmm2
psadbw (%rax), %xmm2
pshufd $1, %xmm0, %xmm2
pshufd $1, (%rax), %xmm2
pshufhw $1, %xmm0, %xmm2
pshufhw $1, (%rax), %xmm2
pshuflw $1, %xmm0, %xmm2
pshuflw $1, (%rax), %xmm2
pslld $1, %xmm2
pslld %xmm0, %xmm2
pslld (%rax), %xmm2
pslldq $1, %xmm2
psllq $1, %xmm2
psllq %xmm0, %xmm2
psllq (%rax), %xmm2
psllw $1, %xmm2
psllw %xmm0, %xmm2
psllw (%rax), %xmm2
psrad $1, %xmm2
psrad %xmm0, %xmm2
psrad (%rax), %xmm2
psraw $1, %xmm2
psraw %xmm0, %xmm2
psraw (%rax), %xmm2
psrld $1, %xmm2
psrld %xmm0, %xmm2
psrld (%rax), %xmm2
psrldq $1, %xmm2
psrlq $1, %xmm2
psrlq %xmm0, %xmm2
psrlq (%rax), %xmm2
psrlw $1, %xmm2
psrlw %xmm0, %xmm2
psrlw (%rax), %xmm2
psubb %xmm0, %xmm2
psubb (%rax), %xmm2
psubd %xmm0, %xmm2
psubd (%rax), %xmm2
psubq %xmm0, %xmm2
psubq (%rax), %xmm2
psubsb %xmm0, %xmm2
psubsb (%rax), %xmm2
psubsw %xmm0, %xmm2
psubsw (%rax), %xmm2
psubusb %xmm0, %xmm2
psubusb (%rax), %xmm2
psubusw %xmm0, %xmm2
psubusw (%rax), %xmm2
psubw %xmm0, %xmm2
psubw (%rax), %xmm2
punpckhbw %xmm0, %xmm2
punpckhbw (%rax), %xmm2
punpckhdq %xmm0, %xmm2
punpckhdq (%rax), %xmm2
punpckhqdq %xmm0, %xmm2
punpckhqdq (%rax), %xmm2
punpckhwd %xmm0, %xmm2
punpckhwd (%rax), %xmm2
punpcklbw %xmm0, %xmm2
punpcklbw (%rax), %xmm2
punpckldq %xmm0, %xmm2
punpckldq (%rax), %xmm2
punpcklqdq %xmm0, %xmm2
punpcklqdq (%rax), %xmm2
punpcklwd %xmm0, %xmm2
punpcklwd (%rax), %xmm2
pxor %xmm0, %xmm2
pxor (%rax), %xmm2
shufpd $1, %xmm0, %xmm2
shufpd $1, (%rax), %xmm2
sqrtpd %xmm0, %xmm2
sqrtpd (%rax), %xmm2
sqrtsd %xmm0, %xmm2
sqrtsd (%rax), %xmm2
subpd %xmm0, %xmm2
subpd (%rax), %xmm2
subsd %xmm0, %xmm2
subsd (%rax), %xmm2
ucomisd %xmm0, %xmm1
ucomisd (%rax), %xmm1
unpckhpd %xmm0, %xmm2
unpckhpd (%rax), %xmm2
unpcklpd %xmm0, %xmm2
unpcklpd (%rax), %xmm2
xorpd %xmm0, %xmm2
xorpd (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 - - - - - - - - addpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - addsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - addsubpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addsubpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - andnpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - andnpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - andpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtdq2pd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtdq2pd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtdq2ps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtdq2ps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtpd2dq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtpd2dq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtpd2ps %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtpd2ps (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtps2dq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtps2dq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtps2pd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtps2pd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsd2si %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsd2si %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsd2si (%rax), %ecx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsd2si (%rax), %rcx
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsd2ss %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsd2ss (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsi2sdl %ecx, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtsi2sdq %rcx, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsi2sdl (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtsi2sdl (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvtss2sd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvtss2sd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvttpd2dq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvttpd2dq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvttps2dq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvttps2dq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvttsd2si %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - cvttsd2si %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvttsd2si (%rax), %ecx
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - cvttsd2si (%rax), %rcx
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - divpd %xmm0, %xmm2
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - divpd (%rax), %xmm2
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - divsd %xmm0, %xmm2
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - divsd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - maskmovdqu %xmm0, %xmm1
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - maxpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - maxpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - maxsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - maxsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - minpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - minpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - minsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - minsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - movapd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movapd %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movapd (%rax), %xmm2
# CHECK-NEXT: - 1.00 - - - - - - - - - - - - movd %eax, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movd (%rax), %xmm2
# CHECK-NEXT: 1.00 - - - - - - - - - - - - - movd %xmm0, %ecx
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movd %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - movdqa %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movdqa %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movdqa (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movdqu %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movdqu %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movdqu (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movhpd %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - movhpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movlpd %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - movlpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movmskpd %xmm0, %ecx
# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - movntdq %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - movntpd %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movq %xmm0, %xmm2
# CHECK-NEXT: - 1.00 - - - - - - - - - - - - movq %rax, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movq (%rax), %xmm2
# CHECK-NEXT: 1.00 - - - - - - - - - - - - - movq %xmm0, %rcx
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movq %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movsd %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movsd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movupd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movupd %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movupd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 2.00 - - - - - - - mulpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - mulpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 2.00 - - - - - - - mulsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - mulsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - orpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - orpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pabsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pabsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pabsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pabsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pabsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pabsw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - packssdw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - packssdw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - packsswb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - packsswb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - packuswb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - packuswb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddsw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddusb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddusb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddusw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddusw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - paddw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - paddw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pand %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pand (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pandn %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pandn (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pavgb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pavgb (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pavgw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pavgw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pcmpeqb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pcmpeqb (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pcmpeqd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pcmpeqd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pcmpeqw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pcmpeqw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pcmpgtb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pcmpgtb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pcmpgtd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pcmpgtd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pcmpgtw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pcmpgtw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pextrw $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmaddwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmaddwd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pmaxsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pmaxsw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmaxub %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pmaxub (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pminsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pminsw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pminub %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pminub (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pmovmskb %xmm0, %ecx
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmulhuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmulhuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmulhw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmulhw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmullw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmullw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmuludq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmuludq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - por %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - por (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psadbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psadbw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pshufd $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pshufd $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pshufhw $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pshufhw $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pshuflw $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pshuflw $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pslld $1, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pslld %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pslld (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pslldq $1, %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psllq $1, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psllq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psllq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psllw $1, %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psllw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psllw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrad $1, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrad %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psrad (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psraw $1, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psraw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psraw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrld $1, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrld %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psrld (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrldq $1, %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psrlq $1, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrlq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psrlq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psrlw $1, %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psrlw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psrlw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubsw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubusb %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubusb (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubusw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubusw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - psubw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - psubw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - punpckhbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - punpckhbw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - punpckhdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - punpckhdq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - punpckhqdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - punpckhqdq (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - punpckhwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - punpckhwd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - punpcklbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - punpcklbw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - punpckldq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - punpckldq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - punpcklqdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - punpcklqdq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - punpcklwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - punpcklwd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pxor %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pxor (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - shufpd $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 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
# CHECK-NEXT: - - - - 21.00 - 1.00 1.00 - - - - - - sqrtsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - subpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - subpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - subsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - subsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - ucomisd %xmm0, %xmm1
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - ucomisd (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - unpckhpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - unpckhpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - unpcklpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - unpcklpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - xorpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - - - - xorpd (%rax), %xmm2

View File

@ -0,0 +1,69 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
addsubpd %xmm0, %xmm2
addsubpd (%rax), %xmm2
addsubps %xmm0, %xmm2
addsubps (%rax), %xmm2
haddpd %xmm0, %xmm2
haddpd (%rax), %xmm2
haddps %xmm0, %xmm2
haddps (%rax), %xmm2
hsubpd %xmm0, %xmm2
hsubpd (%rax), %xmm2
hsubps %xmm0, %xmm2
hsubps (%rax), %xmm2
lddqu (%rax), %xmm2
movddup %xmm0, %xmm2
movddup (%rax), %xmm2
movshdup %xmm0, %xmm2
movshdup (%rax), %xmm2
movsldup %xmm0, %xmm2
movsldup (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 - - - - - - - - addsubpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addsubpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - addsubps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - addsubps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - haddpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - haddpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - haddps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - haddps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - hsubpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - hsubpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - hsubps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - hsubps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - lddqu (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - movddup %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - movddup (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - movshdup %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - movshdup (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.04 0.96 - - - - - - - movsldup %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - movsldup (%rax), %xmm2

View File

@ -0,0 +1,261 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
blendpd $11, %xmm0, %xmm2
blendpd $11, (%rax), %xmm2
blendps $11, %xmm0, %xmm2
blendps $11, (%rax), %xmm2
blendvpd %xmm0, %xmm2
blendvpd (%rax), %xmm2
blendvps %xmm0, %xmm2
blendvps (%rax), %xmm2
dppd $22, %xmm0, %xmm2
dppd $22, (%rax), %xmm2
dpps $22, %xmm0, %xmm2
dpps $22, (%rax), %xmm2
extractps $1, %xmm0, %rcx
extractps $1, %xmm0, (%rax)
insertps $1, %xmm0, %xmm2
insertps $1, (%rax), %xmm2
movntdqa (%rax), %xmm2
mpsadbw $1, %xmm0, %xmm2
mpsadbw $1, (%rax), %xmm2
packusdw %xmm0, %xmm2
packusdw (%rax), %xmm2
pblendvb %xmm0, %xmm2
pblendvb (%rax), %xmm2
pblendw $11, %xmm0, %xmm2
pblendw $11, (%rax), %xmm2
pcmpeqq %xmm0, %xmm2
pcmpeqq (%rax), %xmm2
pextrb $1, %xmm0, %ecx
pextrb $1, %xmm0, (%rax)
pextrd $1, %xmm0, %ecx
pextrd $1, %xmm0, (%rax)
pextrq $1, %xmm0, %rcx
pextrq $1, %xmm0, (%rax)
pextrw $1, %xmm0, (%rax)
phminposuw %xmm0, %xmm2
phminposuw (%rax), %xmm2
pinsrb $1, %eax, %xmm1
pinsrb $1, (%rax), %xmm1
pinsrd $1, %eax, %xmm1
pinsrd $1, (%rax), %xmm1
pinsrq $1, %rax, %xmm1
pinsrq $1, (%rax), %xmm1
pmaxsb %xmm0, %xmm2
pmaxsb (%rax), %xmm2
pmaxsd %xmm0, %xmm2
pmaxsd (%rax), %xmm2
pmaxud %xmm0, %xmm2
pmaxud (%rax), %xmm2
pmaxuw %xmm0, %xmm2
pmaxuw (%rax), %xmm2
pminsb %xmm0, %xmm2
pminsb (%rax), %xmm2
pminsd %xmm0, %xmm2
pminsd (%rax), %xmm2
pminud %xmm0, %xmm2
pminud (%rax), %xmm2
pminuw %xmm0, %xmm2
pminuw (%rax), %xmm2
pmovsxbd %xmm0, %xmm2
pmovsxbd (%rax), %xmm2
pmovsxbq %xmm0, %xmm2
pmovsxbq (%rax), %xmm2
pmovsxbw %xmm0, %xmm2
pmovsxbw (%rax), %xmm2
pmovsxdq %xmm0, %xmm2
pmovsxdq (%rax), %xmm2
pmovsxwd %xmm0, %xmm2
pmovsxwd (%rax), %xmm2
pmovsxwq %xmm0, %xmm2
pmovsxwq (%rax), %xmm2
pmovzxbd %xmm0, %xmm2
pmovzxbd (%rax), %xmm2
pmovzxbq %xmm0, %xmm2
pmovzxbq (%rax), %xmm2
pmovzxbw %xmm0, %xmm2
pmovzxbw (%rax), %xmm2
pmovzxdq %xmm0, %xmm2
pmovzxdq (%rax), %xmm2
pmovzxwd %xmm0, %xmm2
pmovzxwd (%rax), %xmm2
pmovzxwq %xmm0, %xmm2
pmovzxwq (%rax), %xmm2
pmuldq %xmm0, %xmm2
pmuldq (%rax), %xmm2
pmulld %xmm0, %xmm2
pmulld (%rax), %xmm2
ptest %xmm0, %xmm1
ptest (%rax), %xmm1
roundpd $1, %xmm0, %xmm2
roundpd $1, (%rax), %xmm2
roundps $1, %xmm0, %xmm2
roundps $1, (%rax), %xmm2
roundsd $1, %xmm0, %xmm2
roundsd $1, (%rax), %xmm2
roundss $1, %xmm0, %xmm2
roundss $1, (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 - - - - - - - blendpd $11, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - blendpd $11, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - blendps $11, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - blendps $11, (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - blendvpd %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.99 0.01 1.00 - - - - - - blendvpd %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - blendvps %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - blendvps %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 - - - - - - - dppd $22, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 1.00 - - - - - - dppd $22, (%rax), %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 - - - - - - - dpps $22, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 3.00 3.00 1.00 - - - - - - dpps $22, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - extractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - - - - extractps $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - insertps $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - insertps $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movntdqa (%rax), %xmm2
# CHECK-NEXT: - - - - - 2.00 - - - - - - - - mpsadbw $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 2.00 - 1.00 - - - - - - mpsadbw $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - packusdw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - packusdw (%rax), %xmm2
# CHECK-NEXT: - - - - - 3.94 0.06 - - - - - - - pblendvb %xmm0, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.06 3.94 1.00 - - - - - - pblendvb %xmm0, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pblendw $11, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pblendw $11, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.49 0.51 - - - - - - - pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pcmpeqq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.49 0.51 - - - - - - - pextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - - - - pextrb $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - - - - pextrd $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - - - - pextrq $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 1.00 - 1.00 - - - - pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - phminposuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phminposuw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pinsrb $1, %eax, %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 1.00 - - - - - - pinsrb $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 0.01 0.99 - - - - - - - pinsrd $1, %eax, %xmm1
# CHECK-NEXT: - - - - - 0.49 0.51 1.00 - - - - - - pinsrd $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pinsrq $1, %rax, %xmm1
# CHECK-NEXT: - - - - - 0.51 0.49 1.00 - - - - - - pinsrq $1, (%rax), %xmm1
# CHECK-NEXT: - - - - - 0.99 0.01 - - - - - - - pmaxsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmaxsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.49 0.51 - - - - - - - pmaxsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.51 0.49 1.00 - - - - - - pmaxsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmaxud %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmaxud (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmaxuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmaxuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pminsb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pminsb (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pminsd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pminsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pminud %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pminud (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pminuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pminuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovsxbd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovsxbd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovsxbq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovsxbq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovsxbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovsxbw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovsxdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovsxdq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovsxwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovsxwd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovsxwq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovsxwq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovzxbd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovzxbd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovzxbq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovzxbq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovzxbw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovzxbw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovzxdq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovzxdq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovzxwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - - - - pmovzxwd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - pmovzxwq %xmm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 1.00 - - - - - - pmovzxwq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmuldq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmuldq (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmulld %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmulld (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - ptest %xmm0, %xmm1
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - ptest (%rax), %xmm1
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - roundpd $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - roundpd $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - roundps $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - roundps $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - roundsd $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - roundsd $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - roundss $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - roundss $1, (%rax), %xmm2

View File

@ -0,0 +1,45 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
pcmpestri $1, %xmm0, %xmm2
pcmpestri $1, (%rax), %xmm2
pcmpestrm $1, %xmm0, %xmm2
pcmpestrm $1, (%rax), %xmm2
pcmpistri $1, %xmm0, %xmm2
pcmpistri $1, (%rax), %xmm2
pcmpistrm $1, %xmm0, %xmm2
pcmpistrm $1, (%rax), %xmm2
pcmpgtq %xmm0, %xmm2
pcmpgtq (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
# CHECK-NEXT: - - - - - 5.00 10.00 5.00 - - - - - - pcmpestri $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 5.00 10.00 6.00 - - - - - - pcmpestri $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 5.00 10.00 5.00 - - - - - - pcmpestrm $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 5.00 10.00 6.00 - - - - - - pcmpestrm $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - pcmpistri $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 1.00 - - - - - - pcmpistri $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - pcmpistrm $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 1.00 - - - - - - pcmpistrm $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - pcmpgtq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pcmpgtq (%rax), %xmm2

View File

@ -0,0 +1,35 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
extrq %xmm0, %xmm2
extrq $22, $2, %xmm2
insertq %xmm0, %xmm2
insertq $22, $22, %xmm0, %xmm2
movntsd %xmm0, (%rax)
movntss %xmm0, (%rax)
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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.49 0.51 - - - - - - - extrq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - extrq $22, $2, %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - insertq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - - insertq $22, $22, %xmm0, %xmm2
# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - movntsd %xmm0, (%rax)
# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - movntss %xmm0, (%rax)

View File

@ -0,0 +1,85 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 < %s | FileCheck %s --check-prefixes=CHECK,BTVER2
palignr $1, %xmm0, %xmm2
palignr $1, (%rax), %xmm2
phaddd %xmm0, %xmm2
phaddd (%rax), %xmm2
phaddsw %xmm0, %xmm2
phaddsw (%rax), %xmm2
phaddw %xmm0, %xmm2
phaddw (%rax), %xmm2
phsubd %xmm0, %xmm2
phsubd (%rax), %xmm2
phsubsw %xmm0, %xmm2
phsubsw (%rax), %xmm2
phsubw %xmm0, %xmm2
phsubw (%rax), %xmm2
pmaddubsw %xmm0, %xmm2
pmaddubsw (%rax), %xmm2
pmulhrsw %xmm0, %xmm2
pmulhrsw (%rax), %xmm2
pshufb %xmm0, %xmm2
pshufb (%rax), %xmm2
psignb %xmm0, %xmm2
psignb (%rax), %xmm2
psignd %xmm0, %xmm2
psignd (%rax), %xmm2
psignw %xmm0, %xmm2
psignw (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK-NEXT: [1] - JALU1
# CHECK-NEXT: [2] - JDiv
# CHECK-NEXT: [3] - JFPA
# CHECK-NEXT: [4] - JFPM
# CHECK-NEXT: [5] - JFPU0
# CHECK-NEXT: [6] - JFPU1
# CHECK-NEXT: [7] - JLAGU
# CHECK-NEXT: [8] - JMul
# CHECK-NEXT: [9] - JSAGU
# CHECK-NEXT: [10] - JSTC
# CHECK-NEXT: [11] - JVALU0
# CHECK-NEXT: [12] - JVALU1
# CHECK-NEXT: [13] - JVIMUL
# 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 - - - - - - - palignr $1, %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - palignr $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - phaddd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phaddd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - phaddsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phaddsw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - phaddw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phaddw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - phsubd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phsubd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - phsubsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phsubsw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - phsubw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - phsubw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmaddubsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmaddubsw (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - - - - - - - pmulhrsw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - pmulhrsw (%rax), %xmm2
# CHECK-NEXT: - - - - - - 4.00 - - - - - - - pshufb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 4.00 - 1.00 - - - - - - pshufb (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psignb %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psignb (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psignd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psignd (%rax), %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - - - - - - psignw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - - psignw (%rax), %xmm2