diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td index 2994b31fe66a..808750eb08c1 100644 --- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td @@ -395,7 +395,8 @@ def JWriteFHAddYLd: SchedWriteRes<[JLAGU, JFPU0, JFPA]> { let Latency = 8; let ResourceCycles = [2, 2, 2]; } -def : InstRW<[JWriteFHAddYLd], (instrs VHADDPDYrm, VHADDPSYrm, VHSUBPDYrm, VHSUBPSYrm)>; +def : InstRW<[JWriteFHAddYLd, ReadAfterLd], (instrs VHADDPDYrm, VHADDPSYrm, + VHSUBPDYrm, VHSUBPSYrm)>; //////////////////////////////////////////////////////////////////////////////// // Carry-less multiplication instructions. @@ -510,10 +511,14 @@ def : InstRW<[JWriteFLogic], (instrs ORPDrr, ORPSrr, VORPDrr, VORPSrr, def JWriteFLogicLd: SchedWriteRes<[JLAGU, JFPU01, JFPX]> { let Latency = 6; } -def : InstRW<[JWriteFLogicLd], (instrs ORPDrm, ORPSrm, VORPDrm, VORPSrm, - XORPDrm, XORPSrm, VXORPDrm, VXORPSrm, - ANDPDrm, ANDPSrm, VANDPDrm, VANDPSrm, - ANDNPDrm, ANDNPSrm, VANDNPDrm, VANDNPSrm)>; +def : InstRW<[JWriteFLogicLd, ReadAfterLd], (instrs ORPDrm, ORPSrm, + VORPDrm, VORPSrm, + XORPDrm, XORPSrm, + VXORPDrm, VXORPSrm, + ANDPDrm, ANDPSrm, + VANDPDrm, VANDPSrm, + ANDNPDrm, ANDNPSrm, + VANDNPDrm, VANDNPSrm)>; def JWriteFLogicY: SchedWriteRes<[JFPU01, JFPX]> { let ResourceCycles = [2, 2]; @@ -529,10 +534,10 @@ def JWriteFLogicYLd: SchedWriteRes<[JLAGU, JFPU01, JFPX]> { let ResourceCycles = [2, 2, 2]; let NumMicroOps = 2; } -def : InstRW<[JWriteFLogicYLd], (instrs VORPDYrm, VORPSYrm, - VXORPDYrm, VXORPSYrm, - VANDPDYrm, VANDPSYrm, - VANDNPDYrm, VANDNPSYrm)>; +def : InstRW<[JWriteFLogicYLd, ReadAfterLd], (instrs VORPDYrm, VORPSYrm, + VXORPDYrm, VXORPSYrm, + VANDPDYrm, VANDPSYrm, + VANDNPDYrm, VANDNPSYrm)>; def JWriteVDPPSY: SchedWriteRes<[JFPU1, JFPM, JFPA]> { let Latency = 12; diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-2.s index 524b078d793c..391a41285977 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-2.s @@ -17,7 +17,7 @@ vhaddps (%rdi), %ymm1, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: 01 -# CHECK-NEXT: Index 0123456789 -# CHECK: [0,0] DeER . .. vshufps $0, %xmm0, %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eeeeeeeeER vhaddps (%rdi), %ymm1, %ymm2 +# CHECK-NEXT: 0 +# CHECK-NEXT: Index 0123456789 +# CHECK: [0,0] DeER . . vshufps $0, %xmm0, %xmm1, %xmm1 +# CHECK-NEXT: [0,1] DeeeeeeeeER vhaddps (%rdi), %ymm1, %ymm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-1.s index ed3cb232f272..9a1d9bdcbeb9 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-1.s @@ -17,7 +17,6 @@ vandps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 01 -# CHECK-NEXT: Index 0123456789 -# CHECK: [0,0] DeeeER .. vaddps %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [0,1] D===eeeeeeER vandps (%rdi), %xmm1, %xmm2 +# CHECK: Index 012345678 +# CHECK: [0,0] DeeeER . vaddps %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DeeeeeeER vandps (%rdi), %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-2.s index b6d94d00ac1b..6f218f85445b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/vec-logic-read-after-ld-2.s @@ -17,7 +17,6 @@ vandps (%rdi), %ymm1, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: 01 -# CHECK-NEXT: Index 0123456789 -# CHECK: [0,0] DeeeER .. vaddps %ymm0, %ymm0, %ymm1 -# CHECK-NEXT: [0,1] .D==eeeeeeER vandps (%rdi), %ymm1, %ymm2 +# CHECK: Index 0123456789 +# CHECK: [0,0] DeeeER . vaddps %ymm0, %ymm0, %ymm1 +# CHECK-NEXT: [0,1] .DeeeeeeER vandps (%rdi), %ymm1, %ymm2