diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512.s index 94da64e23dbcae..e91da22aa9e000 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512.s @@ -50,6 +50,20 @@ valignq $1, %zmm16, %zmm17, %zmm19 {z}{k1} valignq $1, (%rax), %zmm17, %zmm19 {z}{k1} valignq $1, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vbroadcastsd %xmm16, %zmm19 +vbroadcastsd (%rax), %zmm19 +vbroadcastsd %xmm16, %zmm19 {k1} +vbroadcastsd (%rax), %zmm19 {k1} +vbroadcastsd %xmm16, %zmm19 {z}{k1} +vbroadcastsd (%rax), %zmm19 {z}{k1} + +vbroadcastss %xmm16, %zmm19 +vbroadcastss (%rax), %zmm19 +vbroadcastss %xmm16, %zmm19 {k1} +vbroadcastss (%rax), %zmm19 {k1} +vbroadcastss %xmm16, %zmm19 {z}{k1} +vbroadcastss (%rax), %zmm19 {z}{k1} + vcmppd $0, %zmm0, %zmm1, %k2 vcmppd $0, (%rax), %zmm1, %k2 vcmppd $0, (%rax){1to8}, %zmm1, %k2 @@ -242,6 +256,20 @@ vpaddq %zmm16, %zmm17, %zmm19 {z}{k1} vpaddq (%rax), %zmm17, %zmm19 {z}{k1} vpaddq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vpbroadcastd %xmm16, %zmm19 +vpbroadcastd (%rax), %zmm19 +vpbroadcastd %xmm16, %zmm19 {k1} +vpbroadcastd (%rax), %zmm19 {k1} +vpbroadcastd %xmm16, %zmm19 {z}{k1} +vpbroadcastd (%rax), %zmm19 {z}{k1} + +vpbroadcastq %xmm16, %zmm19 +vpbroadcastq (%rax), %zmm19 +vpbroadcastq %xmm16, %zmm19 {k1} +vpbroadcastq (%rax), %zmm19 {k1} +vpbroadcastq %xmm16, %zmm19 {z}{k1} +vpbroadcastq (%rax), %zmm19 {z}{k1} + vpcmpd $0, %zmm0, %zmm1, %k2 vpcmpd $0, (%rax), %zmm1, %k2 vpcmpd $0, (%rax){1to16}, %zmm1, %k2 @@ -791,6 +819,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 1 1.00 valignq $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * valignq $1, (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * valignq $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vbroadcastsd %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vbroadcastsd (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vbroadcastsd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vbroadcastsd (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vbroadcastsd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vbroadcastsd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 3 1.00 vcmpeqpd %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %zmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax){1to8}, %zmm1, %k2 @@ -961,6 +1001,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 1 0.50 vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastd (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastd (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastq (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastq (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastq (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpcmpeqd %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 8 0.50 * vpcmpeqd (%rax), %zmm1, %k2 # CHECK-NEXT: 2 8 0.50 * vpcmpeqd (%rax){1to16}, %zmm1, %k2 @@ -1412,7 +1464,7 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - 1506.00 138.67 201.67 - 384.67 209.00 209.00 +# CHECK-NEXT: - 1506.00 138.67 201.67 - 408.67 215.00 215.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -1460,6 +1512,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - - - 1.00 - - valignq $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - 1.00 0.50 0.50 valignq $1, (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - 1.00 0.50 0.50 valignq $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastsd %xmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastsd (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastsd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastsd (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastsd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastsd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %zmm1, %k2 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax){1to8}, %zmm1, %k2 @@ -1630,6 +1694,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastd (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastd (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastq (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastq (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastq (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpcmpeqd %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpcmpeqd (%rax), %zmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpcmpeqd (%rax){1to16}, %zmm1, %k2 diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s index 3ccb8740de142e..a1ea3bb5e5e6d6 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bw.s @@ -83,6 +83,20 @@ vpalignr $1, (%rax), %zmm17, %zmm19 {k1} vpalignr $1, %zmm16, %zmm17, %zmm19 {z}{k1} vpalignr $1, (%rax), %zmm17, %zmm19 {z}{k1} +vpbroadcastb %xmm16, %zmm19 +vpbroadcastb (%rax), %zmm19 +vpbroadcastb %xmm16, %zmm19 {k1} +vpbroadcastb (%rax), %zmm19 {k1} +vpbroadcastb %xmm16, %zmm19 {z}{k1} +vpbroadcastb (%rax), %zmm19 {z}{k1} + +vpbroadcastw %xmm16, %zmm19 +vpbroadcastw (%rax), %zmm19 +vpbroadcastw %xmm16, %zmm19 {k1} +vpbroadcastw (%rax), %zmm19 {k1} +vpbroadcastw %xmm16, %zmm19 {z}{k1} +vpbroadcastw (%rax), %zmm19 {z}{k1} + vpcmpb $0, %zmm0, %zmm1, %k2 vpcmpb $0, (%rax), %zmm1, %k2 vpcmpb $0, %zmm0, %zmm1, %k2 {k3} @@ -320,6 +334,18 @@ vpmovw2m %zmm0, %k0 # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 1.00 vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpcmpeqb %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 8 0.50 * vpcmpeqb (%rax), %zmm1, %k2 # CHECK-NEXT: 1 1 0.50 vpcmpeqb %zmm0, %zmm1, %k2 {%k3} @@ -461,7 +487,7 @@ vpmovw2m %zmm0, %k0 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - 10.67 47.67 - 141.67 44.50 44.50 +# CHECK-NEXT: - - 10.67 47.67 - 153.67 47.50 47.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -537,6 +563,18 @@ vpmovw2m %zmm0, %k0 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - - - - 1.00 - - vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastb (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastb (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastb (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %zmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastw (%rax), %zmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastw (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastw (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpcmpeqb %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpcmpeqb (%rax), %zmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpcmpeqb %zmm0, %zmm1, %k2 {%k3} diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s index 207660a754e028..d0eeeabcdb25f7 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512bwvl.s @@ -127,6 +127,34 @@ vpalignr $1, (%rax), %ymm17, %ymm19 {k1} vpalignr $1, %ymm16, %ymm17, %ymm19 {z}{k1} vpalignr $1, (%rax), %ymm17, %ymm19 {z}{k1} +vpbroadcastb %xmm16, %xmm19 +vpbroadcastb (%rax), %xmm19 +vpbroadcastb %xmm16, %xmm19 {k1} +vpbroadcastb (%rax), %xmm19 {k1} +vpbroadcastb %xmm16, %xmm19 {z}{k1} +vpbroadcastb (%rax), %xmm19 {z}{k1} + +vpbroadcastb %xmm16, %ymm19 +vpbroadcastb (%rax), %ymm19 +vpbroadcastb %xmm16, %ymm19 {k1} +vpbroadcastb (%rax), %ymm19 {k1} +vpbroadcastb %xmm16, %ymm19 {z}{k1} +vpbroadcastb (%rax), %ymm19 {z}{k1} + +vpbroadcastw %xmm16, %xmm19 +vpbroadcastw (%rax), %xmm19 +vpbroadcastw %xmm16, %xmm19 {k1} +vpbroadcastw (%rax), %xmm19 {k1} +vpbroadcastw %xmm16, %xmm19 {z}{k1} +vpbroadcastw (%rax), %xmm19 {z}{k1} + +vpbroadcastw %xmm16, %ymm19 +vpbroadcastw (%rax), %ymm19 +vpbroadcastw %xmm16, %ymm19 {k1} +vpbroadcastw (%rax), %ymm19 {k1} +vpbroadcastw %xmm16, %ymm19 {z}{k1} +vpbroadcastw (%rax), %ymm19 {z}{k1} + vpcmpb $0, %xmm0, %xmm1, %k2 vpcmpb $0, (%rax), %xmm1, %k2 vpcmpb $0, %xmm0, %xmm1, %k2 {k3} @@ -556,6 +584,30 @@ vpmovw2m %ymm0, %k0 # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 1.00 vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastb (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastb (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastb (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastw (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastw (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastw (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpcmpeqb %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 7 0.50 * vpcmpeqb (%rax), %xmm1, %k2 # CHECK-NEXT: 1 1 0.50 vpcmpeqb %xmm0, %xmm1, %k2 {%k3} @@ -825,7 +877,7 @@ vpmovw2m %ymm0, %k0 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - - 13.33 128.33 - 222.33 89.00 89.00 +# CHECK-NEXT: - - 13.33 131.33 - 243.33 95.00 95.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -937,6 +989,30 @@ vpmovw2m %ymm0, %k0 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - - - - 1.00 - - vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastb (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastb (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastb (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastb (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastb (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastb %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastb (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastw (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastw (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastw (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastw (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastw (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpcmpeqb %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpcmpeqb (%rax), %xmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 - - vpcmpeqb %xmm0, %xmm1, %k2 {%k3} diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s index 1e6e6711aa2de1..65b6d4196040ba 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s @@ -81,6 +81,27 @@ valignq $1, %ymm16, %ymm17, %ymm19 {z}{k1} valignq $1, (%rax), %ymm17, %ymm19 {z}{k1} valignq $1, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} +vbroadcastsd %xmm16, %ymm19 +vbroadcastsd (%rax), %ymm19 +vbroadcastsd %xmm16, %ymm19 {k1} +vbroadcastsd (%rax), %ymm19 {k1} +vbroadcastsd %xmm16, %ymm19 {z}{k1} +vbroadcastsd (%rax), %ymm19 {z}{k1} + +vbroadcastss %xmm16, %xmm19 +vbroadcastss (%rax), %xmm19 +vbroadcastss %xmm16, %xmm19 {k1} +vbroadcastss (%rax), %xmm19 {k1} +vbroadcastss %xmm16, %xmm19 {z}{k1} +vbroadcastss (%rax), %xmm19 {z}{k1} + +vbroadcastss %xmm16, %ymm19 +vbroadcastss (%rax), %ymm19 +vbroadcastss %xmm16, %ymm19 {k1} +vbroadcastss (%rax), %ymm19 {k1} +vbroadcastss %xmm16, %ymm19 {z}{k1} +vbroadcastss (%rax), %ymm19 {z}{k1} + vcmppd $0, %xmm0, %xmm1, %k2 vcmppd $0, (%rax), %xmm1, %k2 vcmppd $0, (%rax){1to2}, %xmm1, %k2 @@ -359,6 +380,34 @@ vpaddq %ymm16, %ymm17, %ymm19 {z}{k1} vpaddq (%rax), %ymm17, %ymm19 {z}{k1} vpaddq (%rax){1to4}, %ymm17, %ymm19 {z}{k1} +vpbroadcastd %xmm16, %xmm19 +vpbroadcastd (%rax), %xmm19 +vpbroadcastd %xmm16, %xmm19 {k1} +vpbroadcastd (%rax), %xmm19 {k1} +vpbroadcastd %xmm16, %xmm19 {z}{k1} +vpbroadcastd (%rax), %xmm19 {z}{k1} + +vpbroadcastd %xmm16, %ymm19 +vpbroadcastd (%rax), %ymm19 +vpbroadcastd %xmm16, %ymm19 {k1} +vpbroadcastd (%rax), %ymm19 {k1} +vpbroadcastd %xmm16, %ymm19 {z}{k1} +vpbroadcastd (%rax), %ymm19 {z}{k1} + +vpbroadcastq %xmm16, %xmm19 +vpbroadcastq (%rax), %xmm19 +vpbroadcastq %xmm16, %xmm19 {k1} +vpbroadcastq (%rax), %xmm19 {k1} +vpbroadcastq %xmm16, %xmm19 {z}{k1} +vpbroadcastq (%rax), %xmm19 {z}{k1} + +vpbroadcastq %xmm16, %ymm19 +vpbroadcastq (%rax), %ymm19 +vpbroadcastq %xmm16, %ymm19 {k1} +vpbroadcastq (%rax), %ymm19 {k1} +vpbroadcastq %xmm16, %ymm19 {z}{k1} +vpbroadcastq (%rax), %ymm19 {z}{k1} + vpcmpd $0, %xmm0, %xmm1, %k2 vpcmpd $0, (%rax), %xmm1, %k2 vpcmpd $0, (%rax){1to4}, %xmm1, %k2 @@ -1218,6 +1267,24 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 1 1.00 valignq $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * valignq $1, (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * valignq $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vbroadcastsd %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vbroadcastsd (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vbroadcastsd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vbroadcastsd (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vbroadcastsd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vbroadcastsd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %xmm19 +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vbroadcastss %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vbroadcastss (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %k2 # CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax){1to2}, %xmm1, %k2 @@ -1466,6 +1533,30 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 1 0.50 vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastd (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastd (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastq (%rax), %ymm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastq (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 1 0.50 vpcmpeqd %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 7 0.50 * vpcmpeqd (%rax), %xmm1, %k2 # CHECK-NEXT: 2 7 0.50 * vpcmpeqd (%rax){1to4}, %xmm1, %k2 @@ -2165,7 +2256,7 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - 1935.00 196.00 356.50 - 527.50 328.00 328.00 +# CHECK-NEXT: - 1935.00 196.00 359.50 - 566.50 338.50 338.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -2241,6 +2332,24 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - - - 1.00 - - valignq $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - 1.00 0.50 0.50 valignq $1, (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - 1.00 0.50 0.50 valignq $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastsd %xmm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastsd (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastsd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastsd (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastsd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastsd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %xmm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vbroadcastss %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vbroadcastss (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %k2 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax){1to2}, %xmm1, %k2 @@ -2489,6 +2598,30 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddq (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastd (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastd (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastd (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastd (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastd (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastq (%rax), %xmm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastq (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpbroadcastq (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastq (%rax), %ymm19 +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastq (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - 1.00 - - vpbroadcastq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vpbroadcastq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - 0.50 - 0.50 - - vpcmpeqd %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpcmpeqd (%rax), %xmm1, %k2 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpcmpeqd (%rax){1to4}, %xmm1, %k2 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s index b843e7ac84a541..c9a1befd1d7c2e 100644 --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s @@ -50,6 +50,20 @@ valignq $1, %zmm16, %zmm17, %zmm19 {z}{k1} valignq $1, (%rax), %zmm17, %zmm19 {z}{k1} valignq $1, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vbroadcastsd %xmm16, %zmm19 +vbroadcastsd (%rax), %zmm19 +vbroadcastsd %xmm16, %zmm19 {k1} +vbroadcastsd (%rax), %zmm19 {k1} +vbroadcastsd %xmm16, %zmm19 {z}{k1} +vbroadcastsd (%rax), %zmm19 {z}{k1} + +vbroadcastss %xmm16, %zmm19 +vbroadcastss (%rax), %zmm19 +vbroadcastss %xmm16, %zmm19 {k1} +vbroadcastss (%rax), %zmm19 {k1} +vbroadcastss %xmm16, %zmm19 {z}{k1} +vbroadcastss (%rax), %zmm19 {z}{k1} + vcmppd $0, %zmm0, %zmm1, %k2 vcmppd $0, (%rax), %zmm1, %k2 vcmppd $0, (%rax){1to8}, %zmm1, %k2 @@ -242,6 +256,20 @@ vpaddq %zmm16, %zmm17, %zmm19 {z}{k1} vpaddq (%rax), %zmm17, %zmm19 {z}{k1} vpaddq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vpbroadcastd %xmm16, %zmm19 +vpbroadcastd (%rax), %zmm19 +vpbroadcastd %xmm16, %zmm19 {k1} +vpbroadcastd (%rax), %zmm19 {k1} +vpbroadcastd %xmm16, %zmm19 {z}{k1} +vpbroadcastd (%rax), %zmm19 {z}{k1} + +vpbroadcastq %xmm16, %zmm19 +vpbroadcastq (%rax), %zmm19 +vpbroadcastq %xmm16, %zmm19 {k1} +vpbroadcastq (%rax), %zmm19 {k1} +vpbroadcastq %xmm16, %zmm19 {z}{k1} +vpbroadcastq (%rax), %zmm19 {z}{k1} + vpcmpd $0, %zmm0, %zmm1, %k2 vpcmpd $0, (%rax), %zmm1, %k2 vpcmpd $0, (%rax){1to16}, %zmm1, %k2 @@ -791,6 +819,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 3 1.00 valignq $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vcmpeqpd %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vcmpeqpd (%rax), %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vcmpeqpd (%rax){1to8}, %zmm1, %k2 @@ -961,6 +1001,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 1 0.33 vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqd %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vpcmpeqd (%rax), %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vpcmpeqd (%rax){1to16}, %zmm1, %k2 @@ -1416,7 +1468,7 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - 612.00 209.67 30.67 245.00 245.00 - 507.67 2.00 - - - +# CHECK-NEXT: - 612.00 213.67 34.67 251.00 251.00 - 523.67 2.00 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -1464,6 +1516,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - - - - - 1.00 - - - - valignq $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - valignq $1, (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - valignq $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastsd %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastsd (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastsd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastsd (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastsd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastsd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vcmpeqpd (%rax), %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vcmpeqpd (%rax){1to8}, %zmm1, %k2 @@ -1634,6 +1698,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqd %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqd (%rax), %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqd (%rax){1to16}, %zmm1, %k2 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s index 31a755f3999329..12ee08425c2d65 100644 --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bw.s @@ -83,6 +83,20 @@ vpalignr $1, (%rax), %zmm17, %zmm19 {k1} vpalignr $1, %zmm16, %zmm17, %zmm19 {z}{k1} vpalignr $1, (%rax), %zmm17, %zmm19 {z}{k1} +vpbroadcastb %xmm16, %zmm19 +vpbroadcastb (%rax), %zmm19 +vpbroadcastb %xmm16, %zmm19 {k1} +vpbroadcastb (%rax), %zmm19 {k1} +vpbroadcastb %xmm16, %zmm19 {z}{k1} +vpbroadcastb (%rax), %zmm19 {z}{k1} + +vpbroadcastw %xmm16, %zmm19 +vpbroadcastw (%rax), %zmm19 +vpbroadcastw %xmm16, %zmm19 {k1} +vpbroadcastw (%rax), %zmm19 {k1} +vpbroadcastw %xmm16, %zmm19 {z}{k1} +vpbroadcastw (%rax), %zmm19 {z}{k1} + vpcmpb $0, %zmm0, %zmm1, %k2 vpcmpb $0, (%rax), %zmm1, %k2 vpcmpb $0, %zmm0, %zmm1, %k2 {k3} @@ -320,6 +334,18 @@ vpmovw2m %zmm0, %k0 # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 1.00 vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqb %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vpcmpeqb (%rax), %zmm1, %k2 # CHECK-NEXT: 1 4 1.00 vpcmpeqb %zmm0, %zmm1, %k2 {%k3} @@ -465,7 +491,7 @@ vpmovw2m %zmm0, %k0 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - - 32.50 8.50 44.50 44.50 - 164.50 0.50 - - - +# CHECK-NEXT: - - 32.50 8.50 47.50 47.50 - 176.50 0.50 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -541,6 +567,18 @@ vpmovw2m %zmm0, %k0 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - - - - - - 1.00 - - - - vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqb %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqb (%rax), %zmm1, %k2 # CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqb %zmm0, %zmm1, %k2 {%k3} diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bwvl.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bwvl.s index 8b2300ef2da5ca..e013b4a20bed28 100644 --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bwvl.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512bwvl.s @@ -127,6 +127,34 @@ vpalignr $1, (%rax), %ymm17, %ymm19 {k1} vpalignr $1, %ymm16, %ymm17, %ymm19 {z}{k1} vpalignr $1, (%rax), %ymm17, %ymm19 {z}{k1} +vpbroadcastb %xmm16, %xmm19 +vpbroadcastb (%rax), %xmm19 +vpbroadcastb %xmm16, %xmm19 {k1} +vpbroadcastb (%rax), %xmm19 {k1} +vpbroadcastb %xmm16, %xmm19 {z}{k1} +vpbroadcastb (%rax), %xmm19 {z}{k1} + +vpbroadcastb %xmm16, %ymm19 +vpbroadcastb (%rax), %ymm19 +vpbroadcastb %xmm16, %ymm19 {k1} +vpbroadcastb (%rax), %ymm19 {k1} +vpbroadcastb %xmm16, %ymm19 {z}{k1} +vpbroadcastb (%rax), %ymm19 {z}{k1} + +vpbroadcastw %xmm16, %xmm19 +vpbroadcastw (%rax), %xmm19 +vpbroadcastw %xmm16, %xmm19 {k1} +vpbroadcastw (%rax), %xmm19 {k1} +vpbroadcastw %xmm16, %xmm19 {z}{k1} +vpbroadcastw (%rax), %xmm19 {z}{k1} + +vpbroadcastw %xmm16, %ymm19 +vpbroadcastw (%rax), %ymm19 +vpbroadcastw %xmm16, %ymm19 {k1} +vpbroadcastw (%rax), %ymm19 {k1} +vpbroadcastw %xmm16, %ymm19 {z}{k1} +vpbroadcastw (%rax), %ymm19 {z}{k1} + vpcmpb $0, %xmm0, %xmm1, %k2 vpcmpb $0, (%rax), %xmm1, %k2 vpcmpb $0, %xmm0, %xmm1, %k2 {k3} @@ -556,6 +584,30 @@ vpmovw2m %ymm0, %k0 # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 1.00 vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpbroadcastw (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastw (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastw (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqb %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vpcmpeqb (%rax), %xmm1, %k2 # CHECK-NEXT: 1 4 1.00 vpcmpeqb %xmm0, %xmm1, %k2 {%k3} @@ -829,7 +881,7 @@ vpmovw2m %ymm0, %k0 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - - 33.00 29.00 89.00 89.00 - 313.00 1.00 - - - +# CHECK-NEXT: - - 33.00 29.00 95.00 95.00 - 337.00 1.00 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -941,6 +993,30 @@ vpmovw2m %ymm0, %k0 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - 1.00 - - - - vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastb %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastb (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpbroadcastw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqb %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqb (%rax), %xmm1, %k2 # CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqb %xmm0, %xmm1, %k2 {%k3} diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s index 4e4668d2d5ebac..e00b1d90c585aa 100644 --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s @@ -81,6 +81,27 @@ valignq $1, %ymm16, %ymm17, %ymm19 {z}{k1} valignq $1, (%rax), %ymm17, %ymm19 {z}{k1} valignq $1, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} +vbroadcastsd %xmm16, %ymm19 +vbroadcastsd (%rax), %ymm19 +vbroadcastsd %xmm16, %ymm19 {k1} +vbroadcastsd (%rax), %ymm19 {k1} +vbroadcastsd %xmm16, %ymm19 {z}{k1} +vbroadcastsd (%rax), %ymm19 {z}{k1} + +vbroadcastss %xmm16, %xmm19 +vbroadcastss (%rax), %xmm19 +vbroadcastss %xmm16, %xmm19 {k1} +vbroadcastss (%rax), %xmm19 {k1} +vbroadcastss %xmm16, %xmm19 {z}{k1} +vbroadcastss (%rax), %xmm19 {z}{k1} + +vbroadcastss %xmm16, %ymm19 +vbroadcastss (%rax), %ymm19 +vbroadcastss %xmm16, %ymm19 {k1} +vbroadcastss (%rax), %ymm19 {k1} +vbroadcastss %xmm16, %ymm19 {z}{k1} +vbroadcastss (%rax), %ymm19 {z}{k1} + vcmppd $0, %xmm0, %xmm1, %k2 vcmppd $0, (%rax), %xmm1, %k2 vcmppd $0, (%rax){1to2}, %xmm1, %k2 @@ -359,6 +380,34 @@ vpaddq %ymm16, %ymm17, %ymm19 {z}{k1} vpaddq (%rax), %ymm17, %ymm19 {z}{k1} vpaddq (%rax){1to4}, %ymm17, %ymm19 {z}{k1} +vpbroadcastd %xmm16, %xmm19 +vpbroadcastd (%rax), %xmm19 +vpbroadcastd %xmm16, %xmm19 {k1} +vpbroadcastd (%rax), %xmm19 {k1} +vpbroadcastd %xmm16, %xmm19 {z}{k1} +vpbroadcastd (%rax), %xmm19 {z}{k1} + +vpbroadcastd %xmm16, %ymm19 +vpbroadcastd (%rax), %ymm19 +vpbroadcastd %xmm16, %ymm19 {k1} +vpbroadcastd (%rax), %ymm19 {k1} +vpbroadcastd %xmm16, %ymm19 {z}{k1} +vpbroadcastd (%rax), %ymm19 {z}{k1} + +vpbroadcastq %xmm16, %xmm19 +vpbroadcastq (%rax), %xmm19 +vpbroadcastq %xmm16, %xmm19 {k1} +vpbroadcastq (%rax), %xmm19 {k1} +vpbroadcastq %xmm16, %xmm19 {z}{k1} +vpbroadcastq (%rax), %xmm19 {z}{k1} + +vpbroadcastq %xmm16, %ymm19 +vpbroadcastq (%rax), %ymm19 +vpbroadcastq %xmm16, %ymm19 {k1} +vpbroadcastq (%rax), %ymm19 {k1} +vpbroadcastq %xmm16, %ymm19 {z}{k1} +vpbroadcastq (%rax), %ymm19 {z}{k1} + vpcmpd $0, %xmm0, %xmm1, %k2 vpcmpd $0, (%rax), %xmm1, %k2 vpcmpd $0, (%rax){1to4}, %xmm1, %k2 @@ -1218,6 +1267,24 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 3 1.00 valignq $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vbroadcastss (%rax), %xmm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vbroadcastss (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vbroadcastss (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vcmpeqpd %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax){1to2}, %xmm1, %k2 @@ -1466,6 +1533,30 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 1 0.33 vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqd %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vpcmpeqd (%rax), %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vpcmpeqd (%rax){1to4}, %xmm1, %k2 @@ -2169,7 +2260,7 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - 423.00 242.33 154.33 350.00 350.00 - 661.33 4.00 - - - +# CHECK-NEXT: - 423.00 249.33 161.33 360.50 360.50 - 689.33 4.00 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -2245,6 +2336,24 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - - - - - 1.00 - - - - valignq $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - valignq $1, (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - valignq $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastsd %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastsd (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastsd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastsd (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastsd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastsd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %xmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vbroadcastss %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vbroadcastss (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vcmpeqpd (%rax), %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vcmpeqpd (%rax){1to2}, %xmm1, %k2 @@ -2493,6 +2602,30 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpaddq (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %xmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %xmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - - - vpbroadcastq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vpbroadcastq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - - - vpcmpeqd %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqd (%rax), %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vpcmpeqd (%rax){1to4}, %xmm1, %k2 diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s index 6994323cbf79f7..bf2b6a3ed86a6f 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s @@ -50,6 +50,20 @@ valignq $1, %zmm16, %zmm17, %zmm19 {z}{k1} valignq $1, (%rax), %zmm17, %zmm19 {z}{k1} valignq $1, (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vbroadcastsd %xmm16, %zmm19 +vbroadcastsd (%rax), %zmm19 +vbroadcastsd %xmm16, %zmm19 {k1} +vbroadcastsd (%rax), %zmm19 {k1} +vbroadcastsd %xmm16, %zmm19 {z}{k1} +vbroadcastsd (%rax), %zmm19 {z}{k1} + +vbroadcastss %xmm16, %zmm19 +vbroadcastss (%rax), %zmm19 +vbroadcastss %xmm16, %zmm19 {k1} +vbroadcastss (%rax), %zmm19 {k1} +vbroadcastss %xmm16, %zmm19 {z}{k1} +vbroadcastss (%rax), %zmm19 {z}{k1} + vcmppd $0, %zmm0, %zmm1, %k2 vcmppd $0, (%rax), %zmm1, %k2 vcmppd $0, (%rax){1to8}, %zmm1, %k2 @@ -242,6 +256,20 @@ vpaddq %zmm16, %zmm17, %zmm19 {z}{k1} vpaddq (%rax), %zmm17, %zmm19 {z}{k1} vpaddq (%rax){1to8}, %zmm17, %zmm19 {z}{k1} +vpbroadcastd %xmm16, %zmm19 +vpbroadcastd (%rax), %zmm19 +vpbroadcastd %xmm16, %zmm19 {k1} +vpbroadcastd (%rax), %zmm19 {k1} +vpbroadcastd %xmm16, %zmm19 {z}{k1} +vpbroadcastd (%rax), %zmm19 {z}{k1} + +vpbroadcastq %xmm16, %zmm19 +vpbroadcastq (%rax), %zmm19 +vpbroadcastq %xmm16, %zmm19 {k1} +vpbroadcastq (%rax), %zmm19 {k1} +vpbroadcastq %xmm16, %zmm19 {z}{k1} +vpbroadcastq (%rax), %zmm19 {z}{k1} + vpcmpd $0, %zmm0, %zmm1, %k2 vpcmpd $0, (%rax), %zmm1, %k2 vpcmpd $0, (%rax){1to16}, %zmm1, %k2 @@ -791,6 +819,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 3 1.00 valignq $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vcmpeqpd %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vcmpeqpd (%rax), %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vcmpeqpd (%rax){1to8}, %zmm1, %k2 @@ -961,6 +1001,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: 1 1 0.33 vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %zmm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqd %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vpcmpeqd (%rax), %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vpcmpeqd (%rax){1to16}, %zmm1, %k2 @@ -1414,7 +1466,7 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 612.00 209.67 30.67 245.00 245.00 - 507.67 2.00 - +# CHECK-NEXT: - 612.00 213.67 34.67 251.00 251.00 - 523.67 2.00 - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1462,6 +1514,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - - - - - - 1.00 - - valignq $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - valignq $1, (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - valignq $1, (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastsd %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastsd (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastsd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastsd (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastsd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastsd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - vcmpeqpd %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vcmpeqpd (%rax), %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vcmpeqpd (%rax){1to8}, %zmm1, %k2 @@ -1632,6 +1696,18 @@ vunpcklps (%rax){1to16}, %zmm17, %zmm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpaddq %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddq (%rax), %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddq (%rax){1to8}, %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %zmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - vpcmpeqd %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpcmpeqd (%rax), %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpcmpeqd (%rax){1to16}, %zmm1, %k2 diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s index 011547634ba2a1..389f51f937f992 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bw.s @@ -83,6 +83,20 @@ vpalignr $1, (%rax), %zmm17, %zmm19 {k1} vpalignr $1, %zmm16, %zmm17, %zmm19 {z}{k1} vpalignr $1, (%rax), %zmm17, %zmm19 {z}{k1} +vpbroadcastb %xmm16, %zmm19 +vpbroadcastb (%rax), %zmm19 +vpbroadcastb %xmm16, %zmm19 {k1} +vpbroadcastb (%rax), %zmm19 {k1} +vpbroadcastb %xmm16, %zmm19 {z}{k1} +vpbroadcastb (%rax), %zmm19 {z}{k1} + +vpbroadcastw %xmm16, %zmm19 +vpbroadcastw (%rax), %zmm19 +vpbroadcastw %xmm16, %zmm19 {k1} +vpbroadcastw (%rax), %zmm19 {k1} +vpbroadcastw %xmm16, %zmm19 {z}{k1} +vpbroadcastw (%rax), %zmm19 {z}{k1} + vpcmpb $0, %zmm0, %zmm1, %k2 vpcmpb $0, (%rax), %zmm1, %k2 vpcmpb $0, %zmm0, %zmm1, %k2 {k3} @@ -320,6 +334,18 @@ vpmovw2m %zmm0, %k0 # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: 1 1 1.00 vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %zmm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %zmm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqb %zmm0, %zmm1, %k2 # CHECK-NEXT: 2 11 1.00 * vpcmpeqb (%rax), %zmm1, %k2 # CHECK-NEXT: 1 4 1.00 vpcmpeqb %zmm0, %zmm1, %k2 {%k3} @@ -463,7 +489,7 @@ vpmovw2m %zmm0, %k0 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 32.50 8.50 44.50 44.50 - 164.50 0.50 - +# CHECK-NEXT: - - 32.50 8.50 47.50 47.50 - 176.50 0.50 - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -539,6 +565,18 @@ vpmovw2m %zmm0, %k0 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} # CHECK-NEXT: - - - - - - - 1.00 - - vpalignr $1, %zmm16, %zmm17, %zmm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpalignr $1, (%rax), %zmm17, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %zmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %zmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %zmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %zmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %zmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %zmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - vpcmpeqb %zmm0, %zmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpcmpeqb (%rax), %zmm1, %k2 # CHECK-NEXT: - - - - - - - 1.00 - - vpcmpeqb %zmm0, %zmm1, %k2 {%k3} diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s index 45179307e96c11..042108d1c7849a 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512bwvl.s @@ -127,6 +127,34 @@ vpalignr $1, (%rax), %ymm17, %ymm19 {k1} vpalignr $1, %ymm16, %ymm17, %ymm19 {z}{k1} vpalignr $1, (%rax), %ymm17, %ymm19 {z}{k1} +vpbroadcastb %xmm16, %xmm19 +vpbroadcastb (%rax), %xmm19 +vpbroadcastb %xmm16, %xmm19 {k1} +vpbroadcastb (%rax), %xmm19 {k1} +vpbroadcastb %xmm16, %xmm19 {z}{k1} +vpbroadcastb (%rax), %xmm19 {z}{k1} + +vpbroadcastb %xmm16, %ymm19 +vpbroadcastb (%rax), %ymm19 +vpbroadcastb %xmm16, %ymm19 {k1} +vpbroadcastb (%rax), %ymm19 {k1} +vpbroadcastb %xmm16, %ymm19 {z}{k1} +vpbroadcastb (%rax), %ymm19 {z}{k1} + +vpbroadcastw %xmm16, %xmm19 +vpbroadcastw (%rax), %xmm19 +vpbroadcastw %xmm16, %xmm19 {k1} +vpbroadcastw (%rax), %xmm19 {k1} +vpbroadcastw %xmm16, %xmm19 {z}{k1} +vpbroadcastw (%rax), %xmm19 {z}{k1} + +vpbroadcastw %xmm16, %ymm19 +vpbroadcastw (%rax), %ymm19 +vpbroadcastw %xmm16, %ymm19 {k1} +vpbroadcastw (%rax), %ymm19 {k1} +vpbroadcastw %xmm16, %ymm19 {z}{k1} +vpbroadcastw (%rax), %ymm19 {z}{k1} + vpcmpb $0, %xmm0, %xmm1, %k2 vpcmpb $0, (%rax), %xmm1, %k2 vpcmpb $0, %xmm0, %xmm1, %k2 {k3} @@ -556,6 +584,30 @@ vpmovw2m %ymm0, %k0 # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: 1 1 1.00 vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 1.00 * vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastb %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastb (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastb %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastb (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 +# CHECK-NEXT: 2 7 1.00 * vpbroadcastw (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastw (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 1.00 * vpbroadcastw (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %ymm19 +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 1.00 * vpbroadcastw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqb %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vpcmpeqb (%rax), %xmm1, %k2 # CHECK-NEXT: 1 4 1.00 vpcmpeqb %xmm0, %xmm1, %k2 {%k3} @@ -827,7 +879,7 @@ vpmovw2m %ymm0, %k0 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - - 33.00 29.00 89.00 89.00 - 313.00 1.00 - +# CHECK-NEXT: - - 33.00 29.00 95.00 95.00 - 337.00 1.00 - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -939,6 +991,30 @@ vpmovw2m %ymm0, %k0 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - 1.00 - - vpalignr $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpalignr $1, (%rax), %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastb %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastb (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %xmm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %ymm19 +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpbroadcastw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - vpcmpeqb %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpcmpeqb (%rax), %xmm1, %k2 # CHECK-NEXT: - - - - - - - 1.00 - - vpcmpeqb %xmm0, %xmm1, %k2 {%k3} diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s index 98f92d0acc4c5b..9fdf26503769af 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s @@ -81,6 +81,27 @@ valignq $1, %ymm16, %ymm17, %ymm19 {z}{k1} valignq $1, (%rax), %ymm17, %ymm19 {z}{k1} valignq $1, (%rax){1to4}, %ymm17, %ymm19 {z}{k1} +vbroadcastsd %xmm16, %ymm19 +vbroadcastsd (%rax), %ymm19 +vbroadcastsd %xmm16, %ymm19 {k1} +vbroadcastsd (%rax), %ymm19 {k1} +vbroadcastsd %xmm16, %ymm19 {z}{k1} +vbroadcastsd (%rax), %ymm19 {z}{k1} + +vbroadcastss %xmm16, %xmm19 +vbroadcastss (%rax), %xmm19 +vbroadcastss %xmm16, %xmm19 {k1} +vbroadcastss (%rax), %xmm19 {k1} +vbroadcastss %xmm16, %xmm19 {z}{k1} +vbroadcastss (%rax), %xmm19 {z}{k1} + +vbroadcastss %xmm16, %ymm19 +vbroadcastss (%rax), %ymm19 +vbroadcastss %xmm16, %ymm19 {k1} +vbroadcastss (%rax), %ymm19 {k1} +vbroadcastss %xmm16, %ymm19 {z}{k1} +vbroadcastss (%rax), %ymm19 {z}{k1} + vcmppd $0, %xmm0, %xmm1, %k2 vcmppd $0, (%rax), %xmm1, %k2 vcmppd $0, (%rax){1to2}, %xmm1, %k2 @@ -359,6 +380,34 @@ vpaddq %ymm16, %ymm17, %ymm19 {z}{k1} vpaddq (%rax), %ymm17, %ymm19 {z}{k1} vpaddq (%rax){1to4}, %ymm17, %ymm19 {z}{k1} +vpbroadcastd %xmm16, %xmm19 +vpbroadcastd (%rax), %xmm19 +vpbroadcastd %xmm16, %xmm19 {k1} +vpbroadcastd (%rax), %xmm19 {k1} +vpbroadcastd %xmm16, %xmm19 {z}{k1} +vpbroadcastd (%rax), %xmm19 {z}{k1} + +vpbroadcastd %xmm16, %ymm19 +vpbroadcastd (%rax), %ymm19 +vpbroadcastd %xmm16, %ymm19 {k1} +vpbroadcastd (%rax), %ymm19 {k1} +vpbroadcastd %xmm16, %ymm19 {z}{k1} +vpbroadcastd (%rax), %ymm19 {z}{k1} + +vpbroadcastq %xmm16, %xmm19 +vpbroadcastq (%rax), %xmm19 +vpbroadcastq %xmm16, %xmm19 {k1} +vpbroadcastq (%rax), %xmm19 {k1} +vpbroadcastq %xmm16, %xmm19 {z}{k1} +vpbroadcastq (%rax), %xmm19 {z}{k1} + +vpbroadcastq %xmm16, %ymm19 +vpbroadcastq (%rax), %ymm19 +vpbroadcastq %xmm16, %ymm19 {k1} +vpbroadcastq (%rax), %ymm19 {k1} +vpbroadcastq %xmm16, %ymm19 {z}{k1} +vpbroadcastq (%rax), %ymm19 {z}{k1} + vpcmpd $0, %xmm0, %xmm1, %k2 vpcmpd $0, (%rax), %xmm1, %k2 vpcmpd $0, (%rax){1to4}, %xmm1, %k2 @@ -1218,6 +1267,24 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 3 1.00 valignq $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 10 1.00 * valignq $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastsd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastsd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vbroadcastss (%rax), %xmm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vbroadcastss (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vbroadcastss (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vbroadcastss %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vbroadcastss (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vcmpeqpd %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax){1to2}, %xmm1, %k2 @@ -1466,6 +1533,30 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 1 0.33 vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastd (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 {%k1} +# CHECK-NEXT: 1 1 1.00 vpbroadcastq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 2 7 0.50 * vpbroadcastq (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %ymm19 +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %ymm19 +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %ymm19 {%k1} +# CHECK-NEXT: 1 3 1.00 vpbroadcastq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 2 8 0.50 * vpbroadcastq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 1.00 vpcmpeqd %xmm0, %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vpcmpeqd (%rax), %xmm1, %k2 # CHECK-NEXT: 2 10 1.00 * vpcmpeqd (%rax){1to4}, %xmm1, %k2 @@ -2167,7 +2258,7 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 423.00 242.33 154.33 350.00 350.00 - 661.33 4.00 - +# CHECK-NEXT: - 423.00 249.33 161.33 360.50 360.50 - 689.33 4.00 - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -2243,6 +2334,24 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - - - - - 1.00 - - valignq $1, %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - valignq $1, (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - valignq $1, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastsd %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastsd (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastsd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastsd (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastsd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastsd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %xmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vbroadcastss %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vbroadcastss (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - vcmpeqpd %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vcmpeqpd (%rax), %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vcmpeqpd (%rax){1to2}, %xmm1, %k2 @@ -2491,6 +2600,30 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vpaddq %ymm16, %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddq (%rax), %ymm17, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpaddq (%rax){1to4}, %ymm17, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %xmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastd (%rax), %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %xmm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %xmm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %ymm19 +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %ymm19 +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - 1.00 - - vpbroadcastq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vpbroadcastq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - 1.00 - - vpcmpeqd %xmm0, %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpcmpeqd (%rax), %xmm1, %k2 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vpcmpeqd (%rax){1to4}, %xmm1, %k2