diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-18 13:13:59 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-18 13:13:59 +0000 |
commit | d749b321b2a97e4b46cfa1c87395b8cc3b647542 (patch) | |
tree | f35cf33c1db7dd3845a5f0b274a284be70b2da88 | |
parent | 8892c7db080d6e0ede37e4551eecf5e6dcfadaf0 (diff) | |
download | bcm5719-llvm-d749b321b2a97e4b46cfa1c87395b8cc3b647542.tar.gz bcm5719-llvm-d749b321b2a97e4b46cfa1c87395b8cc3b647542.zip |
[X86][SSE] Ensure float load/stores use the WriteFLoad/WriteFStore scheduler classes
Retag some instructions that were missed when we split off vector load/store/moves - MOVSS/MOVSD/MOVHPD/MOVHPD/MOVLPD/MOVLPS etc.
Fixes BtVer2/SLM which have different behaviours for GPR stores.
llvm-svn: 332714
-rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 32 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrSSE.td | 15 | ||||
-rw-r--r-- | llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s | 18 | ||||
-rw-r--r-- | llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s | 10 | ||||
-rw-r--r-- | llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s | 10 | ||||
-rw-r--r-- | llvm/test/tools/llvm-mca/X86/SLM/resources-sse1.s | 8 | ||||
-rw-r--r-- | llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s | 8 |
7 files changed, 51 insertions, 50 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index 5bb2521a16c..9580f8ef782 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -3409,26 +3409,26 @@ defm VMOVDQU64 : avx512_load_vl<0x6F, "vmovdqu64", avx512vl_i64_info, HasAVX512, // to load or store from a ZMM register instead. These are converted in // expandPostRAPseudos. let isReMaterializable = 1, canFoldAsLoad = 1, - isPseudo = 1, SchedRW = [WriteLoad], mayLoad = 1, hasSideEffects = 0 in { + isPseudo = 1, mayLoad = 1, hasSideEffects = 0 in { def VMOVAPSZ128rm_NOVLX : I<0, Pseudo, (outs VR128X:$dst), (ins f128mem:$src), - "", []>; + "", []>, Sched<[WriteFLoadX]>; def VMOVAPSZ256rm_NOVLX : I<0, Pseudo, (outs VR256X:$dst), (ins f256mem:$src), - "", []>; + "", []>, Sched<[WriteFLoadY]>; def VMOVUPSZ128rm_NOVLX : I<0, Pseudo, (outs VR128X:$dst), (ins f128mem:$src), - "", []>; + "", []>, Sched<[WriteFLoadX]>; def VMOVUPSZ256rm_NOVLX : I<0, Pseudo, (outs VR256X:$dst), (ins f256mem:$src), - "", []>; + "", []>, Sched<[WriteFLoadY]>; } -let isPseudo = 1, SchedRW = [WriteStore], mayStore = 1, hasSideEffects = 0 in { +let isPseudo = 1, mayStore = 1, hasSideEffects = 0 in { def VMOVAPSZ128mr_NOVLX : I<0, Pseudo, (outs), (ins f128mem:$dst, VR128X:$src), - "", []>; + "", []>, Sched<[WriteFStoreX]>; def VMOVAPSZ256mr_NOVLX : I<0, Pseudo, (outs), (ins f256mem:$dst, VR256X:$src), - "", []>; + "", []>, Sched<[WriteFStoreY]>; def VMOVUPSZ128mr_NOVLX : I<0, Pseudo, (outs), (ins f128mem:$dst, VR128X:$src), - "", []>; + "", []>, Sched<[WriteFStoreX]>; def VMOVUPSZ256mr_NOVLX : I<0, Pseudo, (outs), (ins f256mem:$dst, VR256X:$src), - "", []>; + "", []>, Sched<[WriteFStoreY]>; } def : Pat<(v8i64 (vselect VK8WM:$mask, (bc_v8i64 (v16i32 immAllZerosV)), @@ -3779,29 +3779,29 @@ multiclass avx512_move_scalar<string asm, SDNode OpNode, def rm : AVX512PI<0x10, MRMSrcMem, (outs _.FRC:$dst), (ins _.ScalarMemOp:$src), !strconcat(asm, "\t{$src, $dst|$dst, $src}"), [(set _.FRC:$dst, (_.ScalarLdFrag addr:$src))], - _.ExeDomain>, EVEX, Sched<[WriteLoad]>; + _.ExeDomain>, EVEX, Sched<[WriteFLoad]>; let mayLoad = 1, hasSideEffects = 0 in { let Constraints = "$src0 = $dst" in def rmk : AVX512PI<0x10, MRMSrcMem, (outs _.RC:$dst), (ins _.RC:$src0, _.KRCWM:$mask, _.ScalarMemOp:$src), !strconcat(asm, "\t{$src, $dst {${mask}}|", "$dst {${mask}}, $src}"), - [], _.ExeDomain>, EVEX, EVEX_K, Sched<[WriteLoad]>; + [], _.ExeDomain>, EVEX, EVEX_K, Sched<[WriteFLoad]>; def rmkz : AVX512PI<0x10, MRMSrcMem, (outs _.RC:$dst), (ins _.KRCWM:$mask, _.ScalarMemOp:$src), !strconcat(asm, "\t{$src, $dst {${mask}} {z}|", "$dst {${mask}} {z}, $src}"), - [], _.ExeDomain>, EVEX, EVEX_KZ, Sched<[WriteLoad]>; + [], _.ExeDomain>, EVEX, EVEX_KZ, Sched<[WriteFLoad]>; } def mr: AVX512PI<0x11, MRMDestMem, (outs), (ins _.ScalarMemOp:$dst, _.FRC:$src), !strconcat(asm, "\t{$src, $dst|$dst, $src}"), [(store _.FRC:$src, addr:$dst)], _.ExeDomain>, - EVEX, Sched<[WriteStore]>; + EVEX, Sched<[WriteFStore]>; let mayStore = 1, hasSideEffects = 0 in def mrk: AVX512PI<0x11, MRMDestMem, (outs), (ins _.ScalarMemOp:$dst, VK1WM:$mask, _.FRC:$src), !strconcat(asm, "\t{$src, $dst {${mask}}|$dst {${mask}}, $src}"), - [], _.ExeDomain>, EVEX, EVEX_K, Sched<[WriteStore]>; + [], _.ExeDomain>, EVEX, EVEX_K, Sched<[WriteFStore]>; } defm VMOVSSZ : avx512_move_scalar<"vmovss", X86Movss, f32x_info>, @@ -6253,7 +6253,7 @@ let Predicates = [HasAVX512] in { (VMOVLPDZ128rm VR128X:$src1, addr:$src2)>; } -let SchedRW = [WriteStore] in { +let SchedRW = [WriteFStore] in { def VMOVHPSZ128mr : AVX512PSI<0x17, MRMDestMem, (outs), (ins f64mem:$dst, VR128X:$src), "vmovhps\t{$src, $dst|$dst, $src}", diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index 22bf465a2b2..c2d285e7933 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -201,7 +201,7 @@ multiclass sse12_move<RegisterClass RC, SDNode OpNode, ValueType vt, def V#NAME#mr : SI<0x11, MRMDestMem, (outs), (ins x86memop:$dst, RC:$src), !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), [(store RC:$src, addr:$dst)], d>, - VEX, VEX_LIG, Sched<[WriteStore]>, VEX_WIG; + VEX, VEX_LIG, Sched<[WriteFStore]>, VEX_WIG; // SSE1 & 2 let Constraints = "$src1 = $dst" in { defm NAME : sse12_move_rr<OpNode, vt, x86memop, OpcodeStr, @@ -211,7 +211,7 @@ multiclass sse12_move<RegisterClass RC, SDNode OpNode, ValueType vt, def NAME#mr : SI<0x11, MRMDestMem, (outs), (ins x86memop:$dst, RC:$src), !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), [(store RC:$src, addr:$dst)], d>, - Sched<[WriteStore]>; + Sched<[WriteFStore]>; } // Loading from memory automatically zeroing upper bits. @@ -220,11 +220,11 @@ multiclass sse12_move_rm<RegisterClass RC, X86MemOperand x86memop, def V#NAME#rm : SI<0x10, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src), !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), [(set RC:$dst, (mem_pat addr:$src))], d>, - VEX, VEX_LIG, Sched<[WriteLoad]>, VEX_WIG; + VEX, VEX_LIG, Sched<[WriteFLoad]>, VEX_WIG; def NAME#rm : SI<0x10, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src), !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), [(set RC:$dst, (mem_pat addr:$src))], d>, - Sched<[WriteLoad]>; + Sched<[WriteFLoad]>; } defm MOVSS : sse12_move<FR32, X86Movss, v4f32, f32mem, "movss", @@ -689,7 +689,7 @@ let AddedComplexity = 20 in { defm MOVL : sse12_mov_hilo_packed<0x12, X86Movlps, X86Movlpd, "movlp">; } -let SchedRW = [WriteStore] in { +let SchedRW = [WriteFStore] in { let Predicates = [UseAVX] in { def VMOVLPSmr : VPSI<0x13, MRMDestMem, (outs), (ins f64mem:$dst, VR128:$src), "movlps\t{$src, $dst|$dst, $src}", @@ -774,7 +774,7 @@ let AddedComplexity = 20 in { defm MOVH : sse12_mov_hilo_packed<0x16, X86Movlhps, X86Unpckl, "movhp">; } -let SchedRW = [WriteStore] in { +let SchedRW = [WriteFStore] in { // v2f64 extract element 1 is always custom lowered to unpack high to low // and extract element 0 so the non-store version isn't too horrible. let Predicates = [UseAVX] in { @@ -3080,7 +3080,7 @@ def MOVNTI_64mr : RI<0xC3, MRMDestMem, (outs), (ins i64mem:$dst, GR64:$src), "movnti{q}\t{$src, $dst|$dst, $src}", [(nontemporalstore (i64 GR64:$src), addr:$dst)]>, PS, Requires<[HasSSE2]>; -} // SchedRW = [WriteStore] +} // SchedRW = [WriteStoreNT] let Predicates = [HasAVX, NoVLX] in { def : Pat<(alignednontemporalstore (v8i32 VR256:$src), addr:$dst), @@ -4062,6 +4062,7 @@ def MOVPDI2DImr : S2I<0x7E, MRMDestMem, (outs), (ins i32mem:$dst, VR128:$src), (iPTR 0))), addr:$dst)]>, Sched<[WriteStore]>; } // ExeDomain = SSEPackedInt + //===---------------------------------------------------------------------===// // Move Packed Doubleword Int first element to Doubleword Int // diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s index 209a6e75c87..f33c887bf75 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1720,7 +1720,7 @@ vzeroupper # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 48.00 2.00 - 349.50 909.50 397.00 411.00 382.00 - 43.00 124.00 118.50 118.50 38.00 +# CHECK-NEXT: 48.00 2.00 - 350.50 910.50 398.00 418.00 382.00 - 43.00 130.00 118.50 118.50 38.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -1980,13 +1980,13 @@ vzeroupper # CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqu (%rax), %ymm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovhlps %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovlhps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovhpd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovhpd %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovhpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovhps %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovhps %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovhps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovlpd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovlpd %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovlpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovlps %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovlps %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovlps (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vmovmskpd %xmm0, %ecx # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vmovmskpd %ymm0, %ecx @@ -2006,8 +2006,8 @@ vzeroupper # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - vmovq %xmm0, %rcx # CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovq %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovsd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovsd %xmm0, (%rax) -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovsd (%rax), %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovsd %xmm0, (%rax) +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovsd (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovshdup %xmm0, %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovshdup (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vmovshdup %ymm0, %ymm2 @@ -2017,8 +2017,8 @@ vzeroupper # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vmovsldup %ymm0, %ymm2 # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 2.00 - - - - - - vmovsldup (%rax), %ymm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovss %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - vmovss %xmm0, (%rax) -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - vmovss (%rax), %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovss %xmm0, (%rax) +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovss (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovupd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovupd %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovupd (%rax), %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s index 0e870ede129..8dfc0d3c175 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s @@ -337,7 +337,7 @@ xorps (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 15.00 - - 46.50 183.50 50.00 63.00 58.00 - 9.00 22.00 9.50 9.50 2.00 +# CHECK-NEXT: 15.00 - - 47.00 184.00 50.50 66.50 58.00 - 9.00 25.00 9.50 9.50 2.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -392,16 +392,16 @@ xorps (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movaps (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movhlps %xmm0, %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movlhps %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movhps %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movhps %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movhps (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movlps %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movlps %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movlps (%rax), %xmm2 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - movmskps %xmm0, %ecx # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntps %xmm0, (%rax) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movntq %mm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movss %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movss %xmm0, (%rax) -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movss (%rax), %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movss %xmm0, (%rax) +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movss (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movups %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movups %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movups (%rax), %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s index 3975b474cd1..710de6f494f 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s @@ -685,7 +685,7 @@ xorpd (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 17.00 2.00 - 45.50 202.50 115.00 133.00 117.00 - 15.00 49.00 65.50 65.50 12.00 +# CHECK-NEXT: 17.00 2.00 - 46.00 203.00 115.50 136.50 117.00 - 15.00 52.00 65.50 65.50 12.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -770,9 +770,9 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movdqu %xmm0, (%rax) # CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - movdqu (%rax), %xmm2 # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - movdq2q %xmm0, %mm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movhpd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movhpd %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movhpd (%rax), %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movlpd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movlpd %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movlpd (%rax), %xmm2 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - movmskpd %xmm0, %ecx # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movntil %eax, (%rax) @@ -786,8 +786,8 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - 1.00 - - - - movq %xmm0, (%rax) # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - movq2dq %mm0, %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movsd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - - - - 1.00 - - - - movsd %xmm0, (%rax) -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - movsd (%rax), %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movsd %xmm0, (%rax) +# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movsd (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - movupd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - movupd %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - movupd (%rax), %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse1.s index 941594acf94..4bc37ccb4de 100644 --- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse1.s +++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse1.s @@ -331,7 +331,7 @@ xorps (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] -# CHECK-NEXT: - 232.00 8.00 61.00 46.00 2.00 2.00 67.00 +# CHECK-NEXT: - 232.00 8.00 61.00 46.00 0.50 0.50 67.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -386,15 +386,15 @@ xorps (%rax), %xmm2 # CHECK-NEXT: - - - - - - - 1.00 movaps (%rax), %xmm2 # CHECK-NEXT: - - - 1.00 - - - - movhlps %xmm0, %xmm2 # CHECK-NEXT: - - - 1.00 - - - - movlhps %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movhps %xmm0, (%rax) +# CHECK-NEXT: - - - - - - - 1.00 movhps %xmm0, (%rax) # CHECK-NEXT: - - - 1.00 - - - 1.00 movhps (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movlps %xmm0, (%rax) +# CHECK-NEXT: - - - - - - - 1.00 movlps %xmm0, (%rax) # CHECK-NEXT: - - - 1.00 - - - 1.00 movlps (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - - - movmskps %xmm0, %ecx # CHECK-NEXT: - - - - - - - 1.00 movntps %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 movntq %mm0, (%rax) # CHECK-NEXT: - - - 1.00 - - - - movss %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movss %xmm0, (%rax) +# CHECK-NEXT: - - - - - - - 1.00 movss %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 movss (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 - - - movups %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - 1.00 movups %xmm0, (%rax) diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s index 6c3766c8098..51cfbec9371 100644 --- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s +++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s @@ -679,7 +679,7 @@ xorpd (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] -# CHECK-NEXT: - 412.00 8.00 150.50 86.50 5.50 5.50 132.00 +# CHECK-NEXT: - 412.00 8.00 150.50 86.50 4.00 4.00 132.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -764,9 +764,9 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: - - - - - - - 1.00 movdqu %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 movdqu (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 - - - movdq2q %xmm0, %mm2 -# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movhpd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - - 1.00 movhpd %xmm0, (%rax) # CHECK-NEXT: - - - 1.00 - - - 1.00 movhpd (%rax), %xmm2 -# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movlpd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - - 1.00 movlpd %xmm0, (%rax) # CHECK-NEXT: - - - 1.00 - - - 1.00 movlpd (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - - - movmskpd %xmm0, %ecx # CHECK-NEXT: - - - - - 0.50 0.50 1.00 movntil %eax, (%rax) @@ -780,7 +780,7 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: - - - - - 0.50 0.50 1.00 movq %xmm0, (%rax) # CHECK-NEXT: - - - 0.50 0.50 - - - movq2dq %mm0, %xmm2 # CHECK-NEXT: - - - 1.00 - - - - movsd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movsd %xmm0, (%rax) +# CHECK-NEXT: - - - - - - - 1.00 movsd %xmm0, (%rax) # CHECK-NEXT: - - - - - - - 1.00 movsd (%rax), %xmm2 # CHECK-NEXT: - - - 0.50 0.50 - - - movupd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - 1.00 movupd %xmm0, (%rax) |