diff --git a/llvm/lib/Target/X86/X86SchedIceLake.td b/llvm/lib/Target/X86/X86SchedIceLake.td --- a/llvm/lib/Target/X86/X86SchedIceLake.td +++ b/llvm/lib/Target/X86/X86SchedIceLake.td @@ -331,12 +331,12 @@ defm : ICXWriteResPair; // Floating point TEST instructions. defm : ICXWriteResPair; defm : ICXWriteResPair; -defm : ICXWriteResPair; // Floating point vector shuffles. -defm : ICXWriteResPair; -defm : ICXWriteResPair; -defm : ICXWriteResPair; // Floating point vector variable shuffles. -defm : ICXWriteResPair; -defm : ICXWriteResPair; +defm : ICXWriteResPair; // Floating point vector shuffles. +defm : ICXWriteResPair; +defm : ICXWriteResPair; +defm : ICXWriteResPair; // Floating point vector variable shuffles. +defm : ICXWriteResPair; +defm : ICXWriteResPair; defm : ICXWriteResPair; // Floating point vector blends. defm : ICXWriteResPair; defm : ICXWriteResPair; @@ -665,8 +665,14 @@ "KMOV(B|D|Q|W)kr", "UCOM_F(P?)r", "VPBROADCAST(D|Q)rr", + "(V?)INSERTPS(Z?)rr", + "(V?)MOV(HL|LH)PS(Z?)rr", + "(V?)MOVDDUP(Y|Z|Z128|Z256)?rr", "(V?)PALIGNR(Y|Z|Z128|Z256)?rri", - "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z128|Z256)?rr")>; + "(V?)PERMIL(PD|PS)(Y|Z|Z128|Z256)?ri", + "(V?)PERMIL(PD|PS)(Y|Z|Z128|Z256)?rr", + "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z128|Z256)?rr", + "(V?)UNPCK(L|H)(PD|PS)(Y|Z|Z128|Z256)?rr")>; def ICXWriteResGroup4 : SchedWriteRes<[ICXPort6]> { let Latency = 1; @@ -705,6 +711,7 @@ "VBLENDMPS(Z128|Z256)rr", "VPADD(B|D|Q|W)(Y|Z|Z128|Z256)rr", "(V?)PADD(B|D|Q|W)rr", + "(V?)MOV(SD|SS)(Z?)rr", "VPBLENDD(Y?)rri", "VPBLENDMB(Z128|Z256)rr", "VPBLENDMD(Z128|Z256)rr", @@ -1298,11 +1305,14 @@ let NumMicroOps = 2; let ResourceCycles = [1,1]; } -def: InstRW<[ICXWriteResGroup92], (instregex "VMOVSDZrm(b?)", - "VMOVSSZrm(b?)", +def: InstRW<[ICXWriteResGroup92], (instregex "VMOV(SD|SS)Zrm(b?)", "VPBROADCAST(B|W)(Z128)?rm", + "(V?)INSERTPS(Z?)rm", "(V?)PALIGNR(Z128)?rmi", - "(V?)PACK(U|S)S(DW|WB)(Z128)?rm")>; + "(V?)PERMIL(PD|PS)(Z128)?m(b?)i", + "(V?)PERMIL(PD|PS)(Z128)?rm", + "(V?)PACK(U|S)S(DW|WB)(Z128)?rm", + "(V?)UNPCK(L|H)(PD|PS)(Z128)?rm")>; def ICXWriteResGroup93 : SchedWriteRes<[ICXPort5,ICXPort015]> { let Latency = 7; @@ -1542,7 +1552,10 @@ "VPBROADCASTB(Z|Z256)rm(b?)", "VPBROADCASTW(Z|Z256)rm(b?)", "(V?)PALIGNR(Y|Z|Z256)rmi", - "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z256)rm")>; + "(V?)PERMIL(PD|PS)(Y|Z|Z256)m(b?)i", + "(V?)PERMIL(PD|PS)(Y|Z|Z256)rm", + "(V?)PACK(U|S)S(DW|WB)(Y|Z|Z256)rm", + "(V?)UNPCK(L|H)(PD|PS)(Y|Z|Z256)rm")>; def: InstRW<[ICXWriteResGroup119], (instrs VPBROADCASTBYrm, VPBROADCASTWYrm, VPMOVSXBDYrm, diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx1.s @@ -1311,18 +1311,18 @@ # CHECK-NEXT: 1 5 0.50 * vmovq (%rax), %xmm2 # CHECK-NEXT: 1 2 1.00 vmovq %xmm0, %rcx # CHECK-NEXT: 2 1 1.00 * vmovq %xmm0, (%rax) -# CHECK-NEXT: 1 1 1.00 vmovsd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: 1 1 0.33 vmovsd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 1 1.00 * vmovsd %xmm0, (%rax) # CHECK-NEXT: 1 5 0.50 * vmovsd (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm0, %xmm2 +# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm0, %xmm2 # CHECK-NEXT: 1 6 0.50 * vmovshdup (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm0, %ymm2 +# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm0, %ymm2 # CHECK-NEXT: 1 7 0.50 * vmovshdup (%rax), %ymm2 -# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm0, %xmm2 +# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm0, %xmm2 # CHECK-NEXT: 1 6 0.50 * vmovsldup (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm0, %ymm2 +# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm0, %ymm2 # CHECK-NEXT: 1 7 0.50 * vmovsldup (%rax), %ymm2 -# CHECK-NEXT: 1 1 1.00 vmovss %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: 1 1 0.33 vmovss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 1 1.00 * vmovss %xmm0, (%rax) # CHECK-NEXT: 1 5 0.50 * vmovss (%rax), %xmm2 # CHECK-NEXT: 1 1 0.33 vmovupd %xmm0, %xmm2 @@ -1650,14 +1650,14 @@ # CHECK-NEXT: 2 11 1.00 * vrsqrtps (%rax), %ymm2 # CHECK-NEXT: 1 4 1.00 vrsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: 2 9 1.00 * vrsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 1 1 1.00 vshufpd $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: 2 7 1.00 * vshufpd $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 1 1 1.00 vshufpd $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: 2 8 1.00 * vshufpd $1, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: 1 1 1.00 vshufps $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: 2 7 1.00 * vshufps $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: 1 1 1.00 vshufps $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: 2 8 1.00 * vshufps $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: 1 1 0.50 vshufpd $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: 2 7 0.50 * vshufpd $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: 1 1 0.50 vshufpd $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: 2 8 0.50 * vshufpd $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: 1 1 0.50 vshufps $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: 2 7 0.50 * vshufps $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: 1 1 0.50 vshufps $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: 2 8 0.50 * vshufps $1, (%rax), %ymm1, %ymm2 # CHECK-NEXT: 1 18 6.00 vsqrtpd %xmm0, %xmm2 # CHECK-NEXT: 2 24 6.00 * vsqrtpd (%rax), %xmm2 # CHECK-NEXT: 1 18 12.00 vsqrtpd %ymm0, %ymm2 @@ -1738,7 +1738,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - 123.00 317.42 221.42 173.17 173.17 34.00 312.92 6.25 12.67 - - +# CHECK-NEXT: - 123.00 318.08 228.08 173.17 173.17 34.00 305.58 6.25 12.67 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -2023,18 +2023,18 @@ # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovq (%rax), %xmm2 # CHECK-NEXT: - - 1.00 - - - - - - - - - vmovq %xmm0, %rcx # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovq %xmm0, (%rax) -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovsd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovsd %xmm0, (%rax) # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovsd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovshdup (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm0, %ymm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm0, %ymm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovshdup (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovsldup (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm0, %ymm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm0, %ymm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovsldup (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovss %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - vmovss %xmm0, (%rax) # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - vmovss (%rax), %xmm2 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - vmovupd %xmm0, %xmm2 @@ -2362,14 +2362,14 @@ # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - vrsqrtps (%rax), %ymm2 # CHECK-NEXT: - - 1.00 - - - - - - - - - vrsqrtss %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - vrsqrtss (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufpd $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufpd $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufpd $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufpd $1, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufps $1, %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufps $1, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vshufps $1, %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - vshufps $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufpd $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufpd $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufpd $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufpd $1, (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufps $1, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufps $1, (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vshufps $1, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - vshufps $1, (%rax), %ymm1, %ymm2 # CHECK-NEXT: - 6.00 1.00 - - - - - - - - - vsqrtpd %xmm0, %xmm2 # CHECK-NEXT: - 6.00 1.00 - 0.50 0.50 - - - - - - vsqrtpd (%rax), %xmm2 # CHECK-NEXT: - 12.00 1.00 - - - - - - - - - vsqrtpd %ymm0, %ymm2 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s @@ -1529,29 +1529,29 @@ # CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %ymm19 {%k1} # CHECK-NEXT: 1 1 1.00 vmovddup %ymm16, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vmovddup (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm16, %xmm19 +# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm16, %xmm19 # CHECK-NEXT: 2 7 0.50 * vmovshdup (%rax), %xmm19 -# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm16, %xmm19 {%k1} # CHECK-NEXT: 2 7 0.50 * vmovshdup (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 1 1.00 vmovshdup %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vmovshdup %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 2 7 0.50 * vmovshdup (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm16, %ymm19 +# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm16, %ymm19 # CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %ymm19 -# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm16, %ymm19 {%k1} # CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 1 1.00 vmovshdup %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vmovshdup %ymm16, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vmovshdup (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm16, %xmm19 +# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm16, %xmm19 # CHECK-NEXT: 2 7 0.50 * vmovsldup (%rax), %xmm19 -# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm16, %xmm19 {%k1} # CHECK-NEXT: 2 7 0.50 * vmovsldup (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 1 1.00 vmovsldup %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vmovsldup %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 2 7 0.50 * vmovsldup (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm16, %ymm19 +# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm16, %ymm19 # CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %ymm19 -# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm16, %ymm19 {%k1} +# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm16, %ymm19 {%k1} # CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 1 1.00 vmovsldup %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 1 0.50 vmovsldup %ymm16, %ymm19 {%k1} {z} # CHECK-NEXT: 2 8 0.50 * vmovsldup (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 4 0.50 vmulpd %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 2 10 0.50 * vmulpd (%rax), %xmm17, %xmm19 @@ -2352,7 +2352,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - 423.00 257.33 226.33 372.50 372.50 - 658.33 4.00 - - - +# CHECK-NEXT: - 423.00 257.33 232.33 372.50 372.50 - 652.33 4.00 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -2640,29 +2640,29 @@ # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %ymm19 {%k1} # CHECK-NEXT: - - - - - - - 1.00 - - - - vmovddup %ymm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovddup (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm16, %xmm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm16, %ymm19 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm16, %ymm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm16, %ymm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovshdup %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovshdup %ymm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovshdup (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm16, %xmm19 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm16, %xmm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm16, %ymm19 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm16, %ymm19 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm16, %ymm19 {%k1} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm16, %ymm19 {%k1} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - 1.00 - - - - vmovsldup %ymm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - vmovsldup %ymm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - vmovsldup (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - 0.50 0.50 - - - - - - - - vmulpd %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - - - vmulpd (%rax), %xmm17, %xmm19 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse1.s @@ -252,7 +252,7 @@ # CHECK-NEXT: 1 2 1.00 movmskps %xmm0, %ecx # CHECK-NEXT: 2 1 1.00 * movntps %xmm0, (%rax) # CHECK-NEXT: 2 1 1.00 * * U movntq %mm0, (%rax) -# CHECK-NEXT: 1 1 1.00 movss %xmm0, %xmm2 +# CHECK-NEXT: 1 1 0.33 movss %xmm0, %xmm2 # CHECK-NEXT: 2 1 1.00 * movss %xmm0, (%rax) # CHECK-NEXT: 1 5 0.50 * movss (%rax), %xmm2 # CHECK-NEXT: 1 1 0.33 movups %xmm0, %xmm2 @@ -299,8 +299,8 @@ # CHECK-NEXT: 1 4 1.00 rsqrtss %xmm0, %xmm2 # CHECK-NEXT: 2 9 1.00 * rsqrtss (%rax), %xmm2 # CHECK-NEXT: 2 2 0.33 * * U sfence -# CHECK-NEXT: 1 1 1.00 shufps $1, %xmm0, %xmm2 -# CHECK-NEXT: 2 7 1.00 * shufps $1, (%rax), %xmm2 +# CHECK-NEXT: 1 1 0.50 shufps $1, %xmm0, %xmm2 +# CHECK-NEXT: 2 7 0.50 * shufps $1, (%rax), %xmm2 # CHECK-NEXT: 1 12 3.00 sqrtps %xmm0, %xmm2 # CHECK-NEXT: 2 18 3.00 * sqrtps (%rax), %xmm2 # CHECK-NEXT: 1 12 3.00 sqrtss %xmm0, %xmm2 @@ -335,7 +335,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - 26.00 65.83 25.83 32.00 32.00 8.00 37.83 0.50 3.00 - - +# CHECK-NEXT: - 26.00 66.17 27.17 32.00 32.00 8.00 36.17 0.50 3.00 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -397,7 +397,7 @@ # CHECK-NEXT: - - 1.00 - - - - - - - - - movmskps %xmm0, %ecx # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movntps %xmm0, (%rax) # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movntq %mm0, (%rax) -# CHECK-NEXT: - - - - - - - 1.00 - - - - movss %xmm0, %xmm2 +# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movss %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movss %xmm0, (%rax) # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movss (%rax), %xmm2 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movups %xmm0, %xmm2 @@ -444,8 +444,8 @@ # CHECK-NEXT: - - 1.00 - - - - - - - - - rsqrtss %xmm0, %xmm2 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - - - rsqrtss (%rax), %xmm2 # CHECK-NEXT: - - 0.25 0.25 0.33 0.33 - 0.25 0.25 0.33 - - sfence -# CHECK-NEXT: - - - - - - - 1.00 - - - - shufps $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - shufps $1, (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - shufps $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - shufps $1, (%rax), %xmm2 # CHECK-NEXT: - 3.00 1.00 - - - - - - - - - sqrtps %xmm0, %xmm2 # CHECK-NEXT: - 3.00 1.00 - 0.50 0.50 - - - - - - sqrtps (%rax), %xmm2 # CHECK-NEXT: - 3.00 1.00 - - - - - - - - - sqrtss %xmm0, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse2.s @@ -504,7 +504,7 @@ # CHECK-NEXT: 1 2 1.00 movq %xmm0, %rcx # CHECK-NEXT: 2 1 1.00 * movq %xmm0, (%rax) # CHECK-NEXT: 2 2 2.00 movq2dq %mm0, %xmm2 -# CHECK-NEXT: 1 1 1.00 movsd %xmm0, %xmm2 +# CHECK-NEXT: 1 1 0.33 movsd %xmm0, %xmm2 # CHECK-NEXT: 2 1 1.00 * movsd %xmm0, (%rax) # CHECK-NEXT: 1 5 0.50 * movsd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.33 movupd %xmm0, %xmm2 @@ -656,8 +656,8 @@ # CHECK-NEXT: 2 7 0.50 * punpcklwd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.33 pxor %xmm0, %xmm2 # CHECK-NEXT: 2 7 0.50 * pxor (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 shufpd $1, %xmm0, %xmm2 -# CHECK-NEXT: 2 7 1.00 * shufpd $1, (%rax), %xmm2 +# CHECK-NEXT: 1 1 0.50 shufpd $1, %xmm0, %xmm2 +# CHECK-NEXT: 2 7 0.50 * shufpd $1, (%rax), %xmm2 # CHECK-NEXT: 1 18 6.00 sqrtpd %xmm0, %xmm2 # CHECK-NEXT: 2 24 6.00 * sqrtpd (%rax), %xmm2 # CHECK-NEXT: 1 18 6.00 sqrtsd %xmm0, %xmm2 @@ -691,7 +691,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - 38.00 103.58 94.58 63.50 63.50 14.00 85.58 2.25 5.00 - - +# CHECK-NEXT: - 38.00 103.92 95.92 63.50 63.50 14.00 83.92 2.25 5.00 - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -792,7 +792,7 @@ # CHECK-NEXT: - - 1.00 - - - - - - - - - movq %xmm0, %rcx # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movq %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 2.00 - - - - movq2dq %mm0, %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - movsd %xmm0, %xmm2 +# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movsd %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 - - movsd %xmm0, (%rax) # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movsd (%rax), %xmm2 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - movupd %xmm0, %xmm2 @@ -944,8 +944,8 @@ # CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - punpcklwd (%rax), %xmm2 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - - - pxor %xmm0, %xmm2 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - - - pxor (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - shufpd $1, %xmm0, %xmm2 -# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - - - shufpd $1, (%rax), %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - shufpd $1, %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 0.50 0.50 - 0.50 - - - - shufpd $1, (%rax), %xmm2 # CHECK-NEXT: - 6.00 1.00 - - - - - - - - - sqrtpd %xmm0, %xmm2 # CHECK-NEXT: - 6.00 1.00 - 0.50 0.50 - - - - - - sqrtpd (%rax), %xmm2 # CHECK-NEXT: - 6.00 1.00 - - - - - - - - - sqrtsd %xmm0, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-sse3.s @@ -59,9 +59,9 @@ # CHECK-NEXT: 1 100 0.25 U monitor # CHECK-NEXT: 1 1 1.00 movddup %xmm0, %xmm2 # CHECK-NEXT: 1 5 0.50 * movddup (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 movshdup %xmm0, %xmm2 +# CHECK-NEXT: 1 1 0.50 movshdup %xmm0, %xmm2 # CHECK-NEXT: 1 6 0.50 * movshdup (%rax), %xmm2 -# CHECK-NEXT: 1 1 1.00 movsldup %xmm0, %xmm2 +# CHECK-NEXT: 1 1 0.50 movsldup %xmm0, %xmm2 # CHECK-NEXT: 1 6 0.50 * movsldup (%rax), %xmm2 # CHECK-NEXT: 10 20 2.50 * * U mwait @@ -81,7 +81,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: - - 6.67 6.67 5.00 5.00 - 24.67 4.00 - - - +# CHECK-NEXT: - - 6.67 7.67 5.00 5.00 - 23.67 4.00 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -101,8 +101,8 @@ # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - - - monitor # CHECK-NEXT: - - - - - - - 1.00 - - - - movddup %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movddup (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - movshdup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - movshdup %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movshdup (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - movsldup %xmm0, %xmm2 +# CHECK-NEXT: - - - 0.50 - - - 0.50 - - - - movsldup %xmm0, %xmm2 # CHECK-NEXT: - - - - 0.50 0.50 - - - - - - movsldup (%rax), %xmm2 # CHECK-NEXT: - - 1.75 1.75 - - - 2.75 3.75 - - - mwait