diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A510-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A510-writeback.s index 94439acafe370..595c2f8ac440f 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A510-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A510-writeback.s @@ -1171,7 +1171,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . . ld1 { v1.1d }, [x27], #8 @@ -1217,7 +1224,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . . ld1 { v1.8b }, [x27], #8 @@ -1263,7 +1277,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . . ld1 { v1.2s }, [x27], x28 @@ -1309,7 +1330,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.16b }, [x27], x28 @@ -1355,7 +1383,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.4s, v2.4s }, [x27], #32 @@ -1401,7 +1436,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.2d, v2.2d }, [x27], x28 @@ -1447,7 +1489,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.8h, v2.8h }, [x27], x28 @@ -1493,7 +1542,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 @@ -1539,7 +1595,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 @@ -1585,7 +1648,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -1631,7 +1701,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 @@ -1677,7 +1754,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 @@ -1723,7 +1807,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeE. . . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 @@ -1769,7 +1860,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ld1 { v1.b }[8], [x27], #1 @@ -1815,7 +1913,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ld1 { v1.h }[0], [x27], x28 @@ -1861,7 +1966,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ld1 { v1.d }[0], [x27], x28 @@ -1907,7 +2019,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ld1r { v1.4s }, [x27], #4 @@ -1953,7 +2072,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ld1r { v1.2d }, [x27], x28 @@ -1999,7 +2125,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ld1r { v1.8h }, [x27], x28 @@ -2045,7 +2178,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeE . . . . . ld2 { v1.4s, v2.4s }, [x27], #32 @@ -2091,7 +2231,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeE. . . . . ld2 { v1.2s, v2.2s }, [x27], x28 @@ -2137,7 +2284,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeeE . . . . ld2 { v1.16b, v2.16b }, [x27], x28 @@ -2183,7 +2337,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2 { v1.h, v2.h }[0], [x27], #4 @@ -2229,7 +2390,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2 { v1.s, v2.s }[0], [x27], x28 @@ -2275,7 +2443,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2r { v1.2s, v2.2s }, [x27], #8 @@ -2321,7 +2496,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2r { v1.16b, v2.16b }, [x27], #2 @@ -2367,7 +2549,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeE. . . .. ld2r { v1.4s, v2.4s }, [x27], x28 @@ -2413,7 +2602,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 @@ -2459,7 +2655,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 @@ -2505,7 +2708,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -2551,7 +2761,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 @@ -2597,7 +2814,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 @@ -2643,7 +2867,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -2689,7 +2920,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 @@ -2735,7 +2973,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -2781,7 +3026,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeE. . . . . . ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -2827,7 +3079,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2873,7 +3132,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2919,7 +3185,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 @@ -2965,7 +3238,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 @@ -3011,7 +3291,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 @@ -3057,7 +3344,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -3103,7 +3397,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 @@ -3149,7 +3450,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeE. . . . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 @@ -3195,7 +3503,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ldp q1, q2, [x27], #992 @@ -3241,7 +3556,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . . ldp x1, x2, [x27], #496 @@ -3287,7 +3609,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeE . . ldr b1, [x27], #254 @@ -3333,7 +3662,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeE . . ldr b1, [x27, #254]! @@ -3379,7 +3715,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeE . . ldr w1, [x27], #254 @@ -3425,7 +3768,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeE . . ldrb w1, [x27, #254]! @@ -3471,7 +3821,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeE . . ldrsb w1, [x27, #254]! @@ -3517,7 +3874,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeE . . . ldrsh x1, [x27, #254]! @@ -3563,7 +3927,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.2s }, [x27], #8 @@ -3609,7 +3980,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.16b }, [x27], #16 @@ -3655,7 +4033,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.4s }, [x27], x28 @@ -3701,7 +4086,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.2d, v2.2d }, [x27], #32 @@ -3747,7 +4139,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.8h, v2.8h }, [x27], #32 @@ -3793,7 +4192,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.4h, v2.4h }, [x27], x28 @@ -3839,7 +4245,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -3885,7 +4298,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 @@ -3931,7 +4351,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -3977,7 +4404,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 18.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -4023,7 +4457,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 @@ -4069,7 +4510,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 @@ -4115,7 +4563,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 11.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeE . . . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4161,7 +4616,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.b }[8], [x27], x28 @@ -4207,7 +4669,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeE. . . .. st1 { v1.s }[0], [x27], #4 @@ -4253,7 +4722,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.2s, v2.2s }, [x27], #16 @@ -4299,7 +4775,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.16b, v2.16b }, [x27], #32 @@ -4345,7 +4828,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.8b, v2.8b }, [x27], x28 @@ -4391,7 +4881,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.b, v2.b }[0], [x27], x28 @@ -4437,7 +4934,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.h, v2.h }[4], [x27], x28 @@ -4483,7 +4987,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeE . . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 @@ -4521,7 +5032,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 @@ -4567,7 +5085,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -4613,7 +5138,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -4659,7 +5191,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 @@ -4705,7 +5244,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 @@ -4751,7 +5297,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 @@ -4797,7 +5350,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 @@ -4843,7 +5403,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4889,7 +5456,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 @@ -4935,7 +5509,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeE . . . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 @@ -4977,7 +5558,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012 # CHECK: [0,0] DE. stp s1, s2, [x27], #248 # CHECK-NEXT: [0,1] DE. add x0, x27, #1 @@ -5010,7 +5598,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DE . stp q1, q2, [x27], #992 # CHECK-NEXT: [0,1] DE . add x0, x27, #1 @@ -5055,7 +5650,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DE . stp x1, x2, [x27], #496 # CHECK-NEXT: [0,1] DE . add x0, x27, #1 @@ -5100,7 +5702,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DE . str s1, [x27], #254 # CHECK-NEXT: [0,1] DE . add x0, x27, #1 @@ -5145,7 +5754,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DE . str s1, [x27, #254]! # CHECK-NEXT: [0,1] DE . add x0, x27, #1 @@ -5190,7 +5806,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DE . str w1, [x27, #254]! # CHECK-NEXT: [0,1] DE . add x0, x27, #1 @@ -5235,7 +5858,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01 # CHECK: [0,0] DE strh w1, [x27, #254]! # CHECK-NEXT: [0,1] DE add x0, x27, #1 @@ -5264,7 +5894,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeE . ldr x1, [x27], #254 # CHECK-NEXT: [0,1] .DE . add x0, x27, #1 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-carry-over.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-carry-over.s index a5715b9652109..e2cc48d3ad87c 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-carry-over.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-carry-over.s @@ -58,7 +58,14 @@ add w19, w20, w21 # CHECK-NEXT: 1.00 - - - - - - - add w19, w20, w21 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeE. . ldp w3, w5, [x10], #4 # CHECK-NEXT: [0,1] .DeeE. . add w10, w11, w12 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-writeback.s index ed5b0869e53de..5172865924f73 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A53-writeback.s @@ -1171,7 +1171,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.1d }, [x27], #8 @@ -1217,7 +1224,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.8b }, [x27], #8 @@ -1263,7 +1277,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.2s }, [x27], x28 @@ -1309,7 +1330,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeE. . . . . ld1 { v1.16b }, [x27], x28 @@ -1355,7 +1383,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld1 { v1.4s, v2.4s }, [x27], #32 @@ -1401,7 +1436,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld1 { v1.2d, v2.2d }, [x27], x28 @@ -1447,7 +1489,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 13.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeE . . . . . ld1 { v1.8h, v2.8h }, [x27], x28 @@ -1493,7 +1542,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 15.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 @@ -1539,7 +1595,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 15.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 @@ -1585,7 +1648,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 17.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -1631,7 +1701,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 @@ -1677,7 +1754,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 @@ -1723,7 +1807,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 17.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 @@ -1769,7 +1860,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.b }[8], [x27], #1 @@ -1815,7 +1913,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.h }[0], [x27], x28 @@ -1861,7 +1966,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.d }[0], [x27], x28 @@ -1907,7 +2019,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1r { v1.4s }, [x27], #4 @@ -1953,7 +2072,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1r { v1.2d }, [x27], x28 @@ -1999,7 +2125,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeE. . . . . ld1r { v1.8h }, [x27], x28 @@ -2045,7 +2178,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 18.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld2 { v1.4s, v2.4s }, [x27], #32 @@ -2091,7 +2231,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeE . . . . . ld2 { v1.2s, v2.2s }, [x27], x28 @@ -2137,7 +2284,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeE . . . . ld2 { v1.16b, v2.16b }, [x27], x28 @@ -2183,7 +2337,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2 { v1.h, v2.h }[0], [x27], #4 @@ -2229,7 +2390,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2 { v1.s, v2.s }[0], [x27], x28 @@ -2275,7 +2443,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2r { v1.2s, v2.2s }, [x27], #8 @@ -2321,7 +2496,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld2r { v1.16b, v2.16b }, [x27], #2 @@ -2367,7 +2549,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeE. . . . . ld2r { v1.4s, v2.4s }, [x27], x28 @@ -2413,7 +2602,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 @@ -2459,7 +2655,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 19.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 @@ -2505,7 +2708,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . .. ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -2551,7 +2761,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 @@ -2597,7 +2814,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 @@ -2643,7 +2867,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -2689,7 +2920,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 @@ -2735,7 +2973,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -2781,7 +3026,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 21.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeE . . . . . .. ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -2827,7 +3079,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 24.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeE . . . . . . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2873,7 +3132,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 25.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0 # CHECK: [0,0] DeeeeeeeE . . . . . . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2919,7 +3185,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 @@ -2965,7 +3238,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 @@ -3011,7 +3291,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 @@ -3057,7 +3344,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -3103,7 +3397,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 @@ -3149,7 +3450,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeE . . . . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 @@ -3195,7 +3503,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldp q1, q2, [x27], #992 @@ -3241,7 +3556,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldp x1, x2, [x27], #496 @@ -3287,7 +3609,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldr b1, [x27], #254 @@ -3333,7 +3662,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldr b1, [x27, #254]! @@ -3379,7 +3715,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldr w1, [x27], #254 @@ -3425,7 +3768,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldrb w1, [x27, #254]! @@ -3471,7 +3821,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldrsb w1, [x27, #254]! @@ -3517,7 +3874,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ldrsh x1, [x27, #254]! @@ -3563,7 +3927,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.2s }, [x27], #8 @@ -3609,7 +3980,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.16b }, [x27], #16 @@ -3655,7 +4033,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.4s }, [x27], x28 @@ -3701,7 +4086,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.2d, v2.2d }, [x27], #32 @@ -3747,7 +4139,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.8h, v2.8h }, [x27], #32 @@ -3793,7 +4192,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.4h, v2.4h }, [x27], x28 @@ -3839,7 +4245,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -3885,7 +4298,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 @@ -3931,7 +4351,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -3977,7 +4404,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -4023,7 +4457,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 @@ -4069,7 +4510,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 @@ -4115,7 +4563,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeE . . . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4161,7 +4616,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.b }[8], [x27], x28 @@ -4207,7 +4669,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeE. . . .. st1 { v1.s }[0], [x27], #4 @@ -4253,7 +4722,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeE. . . . . st2 { v1.2s, v2.2s }, [x27], #16 @@ -4299,7 +4775,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeE . . . . st2 { v1.16b, v2.16b }, [x27], #32 @@ -4345,7 +4828,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeE. . . . . st2 { v1.8b, v2.8b }, [x27], x28 @@ -4391,7 +4881,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st2 { v1.b, v2.b }[0], [x27], x28 @@ -4437,7 +4934,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st2 { v1.h, v2.h }[4], [x27], x28 @@ -4483,7 +4987,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeE . . . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 @@ -4521,7 +5032,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 @@ -4567,7 +5085,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 15.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -4613,7 +5138,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 11.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeE . . . .. st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -4659,7 +5191,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 @@ -4705,7 +5244,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 11.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeE . . . .. st3 { v1.s, v2.s, v3.s }[0], [x27], x28 @@ -4751,7 +5297,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 15.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 @@ -4797,7 +5350,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeE . . . . . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 @@ -4843,7 +5403,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DeeeeeE . . . . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4889,7 +5456,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 @@ -4935,7 +5509,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeE . . . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 @@ -4977,7 +5558,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeE. . stp s1, s2, [x27], #248 # CHECK-NEXT: [0,1] .DeeE. . add x0, x27, #1 @@ -5010,7 +5598,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . stp q1, q2, [x27], #992 @@ -5056,7 +5651,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . stp x1, x2, [x27], #496 @@ -5102,7 +5704,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . str s1, [x27], #254 @@ -5148,7 +5757,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . str s1, [x27, #254]! @@ -5194,7 +5810,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . str w1, [x27, #254]! @@ -5240,7 +5863,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeeeE strh w1, [x27, #254]! # CHECK-NEXT: [0,1] .DeeE add x0, x27, #1 @@ -5269,7 +5899,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeE. . ldr x1, [x27], #254 # CHECK-NEXT: [0,1] .DeeE. . add x0, x27, #1 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-add-sequence.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-add-sequence.s index dbcb3c53b22f0..745e274b28039 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-add-sequence.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-add-sequence.s @@ -56,7 +56,14 @@ add w1, w0, #4 # CHECK-NEXT: 1.00 - - - - - - - - - - - add w1, w0, #4 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeE . . add w2, w3, #1 # CHECK-NEXT: [0,1] DeeE . . add w4, w3, #2, lsl #12 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-all-views.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-all-views.s index 86314c8f3f101..774444b85a8ca 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-all-views.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-all-views.s @@ -90,7 +90,14 @@ str w0, [x21, x18, lsl #2] # CHECK-NEXT: - - - - - - - - - - - 1.00 str w0, [x21, x18, lsl #2] # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . . .. ldr w4, [x2], #4 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-in-order-retire.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-in-order-retire.s index 8502d0950fec1..2840cf7984c5c 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-in-order-retire.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-in-order-retire.s @@ -90,7 +90,14 @@ add w7, w9, w0 # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - add w7, w9, w0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeE . . . sdiv w12, w21, w0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-readadv.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-readadv.s index b5a6a23c64244..6e96e6453f50d 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-readadv.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-readadv.s @@ -509,7 +509,14 @@ ldpsw x0, x1, [x2], #16 # CHECK-NEXT: - - - - - - - - - 1.00 - - ldpsw x0, x1, [x2], #16 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 012345 # CHECK: [0,0] DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add x2, x3, #1 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-alias.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-alias.s index 3906975b41f6b..f0c07680b67b4 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-alias.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-alias.s @@ -64,7 +64,14 @@ ldr x3, [x10] # CHECK-NEXT: - - - - - - - - - 1.00 - - ldr x3, [x10] # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DE . . . . . . str x1, [x10] diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-noalias.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-noalias.s index dc681f4ce9479..9c8af45cfaaca 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-noalias.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-load-store-noalias.s @@ -62,7 +62,14 @@ ldr x3, [x10] # CHECK-NEXT: - - - - - - - - - 1.00 - - ldr x3, [x10] # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DE . . . str x1, [x10] diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-out-of-order-retire.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-out-of-order-retire.s index 7c51ceef1489d..d4670d42522a4 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-out-of-order-retire.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-out-of-order-retire.s @@ -88,7 +88,14 @@ add w7, w9, w0 # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - add w7, w9, w0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeeeeE . . . fdiv s1, s2, s3 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-store-readadv.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-store-readadv.s index ad49a96c27c57..fe8727745229f 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-store-readadv.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-store-readadv.s @@ -401,7 +401,14 @@ stp x0, x1, [x2], #16 # CHECK-NEXT: - - - - - - - - - - - 1.00 stp x0, x1, [x2], #16 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 012345678 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add x2, x3, #1 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-writeback.s index 0fded5f8f08f4..ccfbdc2f3fed7 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A55-writeback.s @@ -1171,7 +1171,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeE. . . . . ld1 { v1.1d }, [x27], #8 @@ -1217,7 +1224,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeE. . . . . ld1 { v1.8b }, [x27], #8 @@ -1263,7 +1277,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeE. . . . . ld1 { v1.2s }, [x27], x28 @@ -1309,7 +1330,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DeeeeE . . . . . ld1 { v1.16b }, [x27], x28 @@ -1355,7 +1383,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . .. ld1 { v1.4s, v2.4s }, [x27], #32 @@ -1401,7 +1436,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . ld1 { v1.2d, v2.2d }, [x27], x28 @@ -1447,7 +1489,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld1 { v1.8h, v2.8h }, [x27], x28 @@ -1493,7 +1542,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 24.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 @@ -1539,7 +1595,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 21.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . .. ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 @@ -1585,7 +1648,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 27.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeE . . . . . . . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -1631,7 +1701,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 28.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123 # CHECK: [0,0] DeeeeeeE . . . . . . . . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 @@ -1677,7 +1754,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 28.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeeE . . . . . . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 @@ -1723,7 +1807,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 29.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234 # CHECK: [0,0] DeeeeeeeeeeE . . . . . . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 @@ -1769,7 +1860,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.b }[8], [x27], #1 @@ -1815,7 +1913,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.h }[0], [x27], x28 @@ -1861,7 +1966,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1 { v1.d }[0], [x27], x28 @@ -1907,7 +2019,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1r { v1.4s }, [x27], #4 @@ -1953,7 +2072,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . ld1r { v1.2d }, [x27], x28 @@ -1999,7 +2125,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeE. . . . . ld1r { v1.8h }, [x27], x28 @@ -2045,7 +2178,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 18.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeE . . . . . . ld2 { v1.4s, v2.4s }, [x27], #32 @@ -2091,7 +2231,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeE . . . . . ld2 { v1.2s, v2.2s }, [x27], x28 @@ -2137,7 +2284,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DeeeeeeE . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 @@ -2183,7 +2337,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld2 { v1.h, v2.h }[0], [x27], #4 @@ -2229,7 +2390,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld2 { v1.s, v2.s }[0], [x27], x28 @@ -2275,7 +2443,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld2r { v1.2s, v2.2s }, [x27], #8 @@ -2321,7 +2496,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld2r { v1.16b, v2.16b }, [x27], #2 @@ -2367,7 +2549,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeE . . . . . ld2r { v1.4s, v2.4s }, [x27], x28 @@ -2413,7 +2602,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 21.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . .. ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 @@ -2459,7 +2655,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 24.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeE. . . . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 @@ -2505,7 +2708,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 19.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeE . . . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -2551,7 +2761,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 @@ -2597,7 +2814,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 @@ -2643,7 +2867,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -2689,7 +2920,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 @@ -2735,7 +2973,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -2781,7 +3026,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 26.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01 # CHECK: [0,0] DeeeeE . . . . . . .. ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -2827,7 +3079,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 32.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DeeeeeeE . . . . . . . . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2873,7 +3132,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 32.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DeeeeeeE . . . . . . . . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2919,7 +3185,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 @@ -2965,7 +3238,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 @@ -3011,7 +3291,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 @@ -3057,7 +3344,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -3103,7 +3397,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 @@ -3149,7 +3450,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeE . . . . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 @@ -3195,7 +3503,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeE . . . .. ldp q1, q2, [x27], #992 @@ -3241,7 +3556,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . ldp x1, x2, [x27], #496 @@ -3287,7 +3609,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ldr b1, [x27], #254 @@ -3333,7 +3662,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ldr b1, [x27, #254]! @@ -3379,7 +3715,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ldr w1, [x27], #254 @@ -3425,7 +3768,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ldrb w1, [x27, #254]! @@ -3471,7 +3821,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ldrsb w1, [x27, #254]! @@ -3517,7 +3874,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . ldrsh x1, [x27, #254]! @@ -3563,7 +3927,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.2s }, [x27], #8 @@ -3609,7 +3980,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.16b }, [x27], #16 @@ -3655,7 +4033,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.4s }, [x27], x28 @@ -3701,7 +4086,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.2d, v2.2d }, [x27], #32 @@ -3747,7 +4139,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.8h, v2.8h }, [x27], #32 @@ -3793,7 +4192,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.4h, v2.4h }, [x27], x28 @@ -3839,7 +4245,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -3885,7 +4298,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 @@ -3931,7 +4351,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -3977,7 +4404,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 18.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -4023,7 +4457,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 @@ -4069,7 +4510,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 @@ -4115,7 +4563,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 11.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeE . . . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4161,7 +4616,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeE. . . . st1 { v1.b }[8], [x27], x28 @@ -4207,7 +4669,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeE. . . .. st1 { v1.s }[0], [x27], #4 @@ -4253,7 +4722,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.2s, v2.2s }, [x27], #16 @@ -4299,7 +4775,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.16b, v2.16b }, [x27], #32 @@ -4345,7 +4828,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.8b, v2.8b }, [x27], x28 @@ -4391,7 +4881,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.b, v2.b }[0], [x27], x28 @@ -4437,7 +4934,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st2 { v1.h, v2.h }[4], [x27], x28 @@ -4483,7 +4987,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeE . . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 @@ -4521,7 +5032,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 @@ -4567,7 +5085,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -4613,7 +5138,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -4659,7 +5191,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 @@ -4705,7 +5244,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 @@ -4751,7 +5297,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 @@ -4797,7 +5350,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 20.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 @@ -4843,7 +5403,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4889,7 +5456,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeE . . . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 @@ -4935,7 +5509,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeE . . . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 @@ -4977,7 +5558,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DE .. stp s1, s2, [x27], #248 # CHECK-NEXT: [0,1] .DeeE.. add x0, x27, #1 @@ -5010,7 +5598,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DE . . . stp q1, q2, [x27], #992 @@ -5056,7 +5651,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DE . . . stp x1, x2, [x27], #496 @@ -5102,7 +5704,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DE . . . str s1, [x27], #254 @@ -5148,7 +5757,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DE . . . str s1, [x27, #254]! @@ -5194,7 +5810,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DE . . . str w1, [x27, #254]! @@ -5240,7 +5863,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DE . strh w1, [x27, #254]! # CHECK-NEXT: [0,1] .DeeE add x0, x27, #1 @@ -5269,7 +5899,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeE . . ldr x1, [x27], #254 # CHECK-NEXT: [0,1] .DeeE. . add x0, x27, #1 diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/A57-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/A57-writeback.s index 5248392188f03..26165109bc870 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/A57-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/A57-writeback.s @@ -1171,19 +1171,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER .. ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeER.. ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,5] . D=eE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R.. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,7] . D=eE---R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeER ld1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,9] . D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1217,19 +1224,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER .. ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeER.. ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,5] . D=eE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R.. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE---R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeER ld1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1263,19 +1277,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER .. ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeER.. ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R.. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE---R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeER ld1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1309,19 +1330,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 # CHECK-NEXT: [0,5] . DeE----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] . D=eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] . D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1355,19 +1383,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4s, v2.4s }, [x27], #32 # CHECK-NEXT: [0,1] .DeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .D=eeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] . D=eE---R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE---R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 # CHECK-NEXT: [0,5] . DeE----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 # CHECK-NEXT: [0,7] . .DeE----R. add x0, x27, #1 # CHECK-NEXT: [0,8] . .D=eeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . . D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,9] . . DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1401,19 +1436,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2d, v2.2d }, [x27], x28 # CHECK-NEXT: [0,1] .DeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .D=eeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eE---R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=eeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE---R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,5] . DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 # CHECK-NEXT: [0,7] . DeE----R. add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . .D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,9] . .DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1447,7 +1489,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 11.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.8h, v2.8h }, [x27], x28 @@ -1459,7 +1508,7 @@ add x0, x27, 1 # CHECK-NEXT: [0,6] . .DeeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 # CHECK-NEXT: [0,7] . . DeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,8] . . D=eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,9] . . D=eE----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . . DPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1493,7 +1542,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 13.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 @@ -1501,11 +1557,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeER . . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 # CHECK-NEXT: [0,3] . DeE-----R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,5] . D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,6] . .D=eeeeeeeER . ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,7] . . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,8] . . D==eeeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,9] . . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1539,7 +1595,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 @@ -1547,11 +1610,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeER . . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK-NEXT: [0,3] . DeE-----R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,6] . .D=eeeeeeER . ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . . D=eE----R . add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPeE----R . add x0, x27, #1 # CHECK-NEXT: [0,8] . . D=eeeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . . D=eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . . DPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1585,7 +1648,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -1593,11 +1663,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeER . . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK-NEXT: [0,3] . DeE-----R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeER. . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,6] . .D==eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,7] . . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D==eeeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,9] . . D==eE------R add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DP=eeeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,9] . . DPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1631,7 +1701,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 @@ -1641,9 +1718,9 @@ add x0, x27, 1 # CHECK-NEXT: [0,4] . DeeeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,5] . DeE------R. . add x0, x27, #1 # CHECK-NEXT: [0,6] . .D==eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,7] . . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D==eeeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,9] . . D==eE------R add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DP=eeeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,9] . . DPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1677,19 +1754,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 # CHECK-NEXT: [0,1] .DeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,3] . D==eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D====eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,7] . . D====eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D====eeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . . D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DP=eeeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 +# CHECK-NEXT: [0,5] . DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DP===eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPP=eeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1723,19 +1807,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 15.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeER . . . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 # CHECK-NEXT: [0,1] .DeE------R . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeeeeeER . . . . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,3] . D==eE----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER . . . ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D====eeeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,7] . . D====eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D==========eeeeeeeeER ld1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,9] . . D==========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeE----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DP=eeeeeeeeER . . . ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 +# CHECK-NEXT: [0,5] . DPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DP===eeeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPeeeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1769,19 +1860,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.b }[8], [x27], #1 # CHECK-NEXT: [0,1] .DeE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D======eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,5] . D============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==================eeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,7] . . D==================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D========================eeeeeeeeER ld1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,9] . . D========================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1815,19 +1913,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . . . . ld1 { v1.h }[0], [x27], x28 # CHECK-NEXT: [0,1] .DeE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeER . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] . D======eE------R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeeER . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,5] . D============eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==================eeeeeeeeER. . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,7] . . D==================eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=========================eeeeeER ld1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,9] . . D=========================eE---R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeER . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPeE------R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeeER . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1861,13 +1966,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . .. ld1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . .. ld1r { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,3] .D=eE---R . .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER .. ld1r { v1.2d }, [x27], #8 # CHECK-NEXT: [0,5] . DeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeER.. ld1r { v1.2s }, [x27], #4 @@ -1907,7 +2019,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld1r { v1.4s }, [x27], #4 @@ -1953,7 +2072,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld1r { v1.2d }, [x27], x28 @@ -1999,7 +2125,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld1r { v1.8h }, [x27], x28 @@ -2045,7 +2178,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER . . ld2 { v1.4s, v2.4s }, [x27], #32 @@ -2091,7 +2231,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld2 { v1.2s, v2.2s }, [x27], x28 @@ -2137,19 +2284,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeER . . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 # CHECK-NEXT: [0,1] .DeE-------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D=======eeeeeeeeER. . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,3] . D=======eE------R. . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=============eeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,5] . D=============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D===================eeeeeeeeER . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] . . D===================eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=========================eeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . . D=========================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPPeeeeeeeeER. . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,3] . DPPPPPPPeE------R. . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPPeeeeeeeeER . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2183,19 +2337,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0 # CHECK: [0,0] DeeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 # CHECK-NEXT: [0,1] .DeE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeER . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,3] . D======eE------R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeeER . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D============eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==================eeeeeeeeER. . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] . . D==================eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D========================eeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,9] . . D========================eE----R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeER . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,3] . DPPPPPPeE------R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeeER . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2229,19 +2390,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeeER . . . .. ld2 { v1.s, v2.s }[0], [x27], x28 # CHECK-NEXT: [0,1] .DeE----R . . . .. add x0, x27, #1 -# CHECK-NEXT: [0,2] . D====eeeeeeeeER . .. ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,3] . D====eE------R . .. add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==========eeeeeeeeER.. ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D==========eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==========eeeeeE--R.. ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,7] . .D==========eE-----R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=========eeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 -# CHECK-NEXT: [0,9] . . D=========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPeeeeeeeeER . .. ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,3] . DPPPPeE------R . .. add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPeeeeeeeeER.. ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPeeeeeE--R.. ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,7] . .DPPPPPPPPPPeE-----R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPeeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2275,7 +2443,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.3 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld2r { v1.2s, v2.2s }, [x27], #8 @@ -2321,13 +2496,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld2r { v1.16b, v2.16b }, [x27], #2 # CHECK-NEXT: [0,1] .DeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] . DeeeeeE-R . . ld2r { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER . . ld2r { v1.2d, v2.2d }, [x27], x28 # CHECK-NEXT: [0,5] . DeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeER . ld2r { v1.2s, v2.2s }, [x27], x28 @@ -2367,7 +2549,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.3 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld2r { v1.4s, v2.4s }, [x27], x28 @@ -2413,7 +2602,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeeeER . .. ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 @@ -2459,7 +2655,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeeER . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 @@ -2467,11 +2670,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeeER . . . ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK-NEXT: [0,3] . DeE------R . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeeER . . ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . .D==eE-------R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D==eeeeeeeeeER . ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . . D==eE-------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D==eeeeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . . .D=eE--------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . .DPPeE-------R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DP=eeeeeeeeeER . ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPeE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DP=eeeeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . . .DPeE--------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2505,7 +2708,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeER . . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 @@ -2514,10 +2724,10 @@ add x0, x27, 1 # CHECK-NEXT: [0,3] . DeE-------R. . . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 # CHECK-NEXT: [0,5] . . DeE-------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D=======eeeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,7] . . D=======eE-------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D==============eeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,9] . . .D==============eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPPPPPPeeeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,7] . . DPPPPPPPeE-------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPeeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,9] . . .DPPPPPPPPPPPPPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2551,19 +2761,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DeeeeeeeeeER . . . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 # CHECK-NEXT: [0,1] .DeE-------R . . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D=======eeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] . D=======eE-------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeeER. . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,5] . D==============eE-------R. . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D=====================eeeeeeeeeER . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,7] . . D=====================eE-------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D============================eeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . . D============================eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPPeeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPPeE-------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeeER. . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPeE-------R. . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeER . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPPPPeE-------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2597,19 +2814,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeER . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 # CHECK-NEXT: [0,1] .DeE-------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D=======eeeeeeeeER. . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,3] . D=======eE------R. . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=============eeeeeeeeER . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=============eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D===================eeeeeeER . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,7] . . D===================eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=======================eeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . . D=======================eE----R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPPeeeeeeeeER. . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,3] . DPPPPPPPeE------R. . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPeeeeeeeeER . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPPeeeeeeER . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2643,7 +2867,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeER . . . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -2689,7 +2920,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 @@ -2735,7 +2973,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -2781,7 +3026,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 13.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeER . . . ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -2789,10 +3041,10 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeeER . . . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 # CHECK-NEXT: [0,3] . DeE------R . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeeER . . ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,5] . D==eE-------R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==eeeeeeeeeER. . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,7] . . D==eE-------R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D==eeeeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,5] . DPPeE-------R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DP=eeeeeeeeeER. . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,7] . . DPPeE-------R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DP=eeeeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,9] . . .DeE---------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): @@ -2827,7 +3079,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeeeeeeER . . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2839,7 +3098,7 @@ add x0, x27, 1 # CHECK-NEXT: [0,6] . . DeeeeeeeeER . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,7] . . .DeE------R . add x0, x27, #1 # CHECK-NEXT: [0,8] . . . D==eeeeeeeeeER ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . . . D==eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . . . DPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2873,7 +3132,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeeeeeeER . . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2919,19 +3185,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 11.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DeeeeeeeeeER . . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 # CHECK-NEXT: [0,1] . DeE------R . . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,3] . D=====eE-------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D============eeeeeeeeeER. . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,5] . . D===========eE-------R. . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D==================eeeeeeeeeER . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,7] . . .D=================eE-------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . D========================eeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,9] . . . D=======================eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,3] . DPPPPPeE-------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DPPPPPPPPPPPPeeeeeeeeeER. . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,5] . . DPPPPPPPPPPPeE-------R. . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPPPPPPPPPPPPPPPPPeeeeeeeeeER . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,7] . . .DPPPPPPPPPPPPPPPPPeE-------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,9] . . . DPPPPPPPPPPPPPPPPPPPPPPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2965,19 +3238,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012345 # CHECK: [0,0] DeeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 # CHECK-NEXT: [0,1] . DeE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeeER . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D=====eE-------R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D============eeeeeeeeeER. . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,5] . . D===========eE-------R. . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D==================eeeeeeeeER . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,7] . . D==================eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . .D========================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,9] . . . D========================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeeER . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPeE-------R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DPPPPPPPPPPPPeeeeeeeeeER. . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,5] . . DPPPPPPPPPPPeE-------R. . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPPPPPPPPPPPPPPPPPeeeeeeeeER . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . .DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,9] . . . DPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3011,19 +3291,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeeeeeeER . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 # CHECK-NEXT: [0,1] . DeE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeeER . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D=====eE-------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D=====eeeeeeE-R . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,5] . . D=====eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D=====eeeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,7] . . D====eE-------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . .D====eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 -# CHECK-NEXT: [0,9] . . . D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeeER . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPeE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DPPPP=eeeeeeE-R . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,5] . . DPPPPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPPP=eeeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,7] . . DPPPPeE-------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . .DPPP=eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,9] . . . DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3057,7 +3344,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeeER . .. ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -3103,7 +3397,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeER . . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 @@ -3149,7 +3450,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 @@ -3195,7 +3503,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.3 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldp q1, q2, [x27], #992 @@ -3241,7 +3556,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . ldp x1, x2, [x27], #496 @@ -3287,19 +3609,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeER . . . . . ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=====eER . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D====eeeeeER . . . . ldr h1, [x27], #254 -# CHECK-NEXT: [0,3] .D=========eER . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D========eeeeeER . . . ldr s1, [x27], #254 -# CHECK-NEXT: [0,5] . D=============eER . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D============eeeeeER . . ldr d1, [x27], #254 -# CHECK-NEXT: [0,7] . D=================eER . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D================eeeeeER. ldr q1, [x27], #254 -# CHECK-NEXT: [0,9] . D=====================eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPPPPPeER . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPeeeeeER . . . . ldr h1, [x27], #254 +# CHECK-NEXT: [0,3] .DPPPPPPPPPeER . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPeeeeeER . . . ldr s1, [x27], #254 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeER . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPeeeeeER . . ldr d1, [x27], #254 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPeER . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPeeeeeER. ldr q1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3333,19 +3662,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER .. ldr h1, [x27, #254]! -# CHECK-NEXT: [0,3] .D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeER.. ldr s1, [x27, #254]! -# CHECK-NEXT: [0,5] . D=eE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R.. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,7] . D=eE---R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeER ldr q1, [x27, #254]! -# CHECK-NEXT: [0,9] . D=eE---R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3379,19 +3715,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,5] . D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,7] . D=eE--R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE--R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeER ldrb w1, [x27], #254 -# CHECK-NEXT: [0,9] . D=eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3425,19 +3768,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,5] . D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,7] . D=eE--R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE--R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeER ldrsb x1, [x27], #254 -# CHECK-NEXT: [0,9] . D=eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3471,19 +3821,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,5] . D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,7] . D=eE--R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE--R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeER ldrsh w1, [x27, #254]! -# CHECK-NEXT: [0,9] . D=eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3517,16 +3874,23 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER. ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,3] .D=eE--R. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,5] . D=eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R add x0, x27, #1 # CHECK-NEXT: [0,6] . DeE--R st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,7] . D=eE-R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-R add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.2d }, [x27], #16 # CHECK-NEXT: [0,9] . DeER add x0, x27, #1 @@ -3562,16 +3926,23 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeER . . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeER. . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.4s }, [x27], #16 # CHECK-NEXT: [0,5] . DeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eER . st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.8h }, [x27], #16 # CHECK-NEXT: [0,9] . .DeER add x0, x27, #1 @@ -3607,19 +3978,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.16b }, [x27], #16 # CHECK-NEXT: [0,1] .DeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .D=eER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.2d }, [x27], x28 # CHECK-NEXT: [0,5] . DeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eER . st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eER. st1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . .D=eER add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeER. st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . .DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3653,13 +4031,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. st1 { v1.4s }, [x27], x28 # CHECK-NEXT: [0,1] .DeER. .. add x0, x27, #1 # CHECK-NEXT: [0,2] .D=eER .. st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eER .. add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeER .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER .. st1 { v1.8h }, [x27], x28 # CHECK-NEXT: [0,5] . DeER .. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER.. st1 { v1.16b }, [x27], x28 @@ -3699,19 +4084,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . .. st1 { v1.2d, v2.2d }, [x27], #32 # CHECK-NEXT: [0,1] .DeE--R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeER . .. st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,3] . D==eER . .. add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==eeER .. st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,5] . D==eER .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==eeeeER.. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,7] . . D==eE--R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D====eeER st1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,9] . . D====eER add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeER . .. add x0, x27, #1 +# CHECK-NEXT: [0,4] . DP=eeER .. st1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,5] . DPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DP=eeeeER.. st1 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,7] . . DPPeE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DP===eeER st1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,9] . . DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3745,19 +4137,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . . st1 { v1.8h, v2.8h }, [x27], #32 # CHECK-NEXT: [0,1] .DeE--R . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeeeER . . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,3] . D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D====eeER . . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,5] . D====eER . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D====eeeeER . st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,7] . . D====eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D======eeER st1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . . D======eER add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DP===eeER . . st1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPeER . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPP=eeeeER . st1 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPP===eeER st1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3791,7 +4190,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . . st1 { v1.4h, v2.4h }, [x27], x28 @@ -3799,11 +4205,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeER . . . st1 { v1.4s, v2.4s }, [x27], x28 # CHECK-NEXT: [0,3] . DeE--R . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeER . . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eER . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==eeeeER. . st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,7] . . D==eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D====eeeeER st1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . . D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeER . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DP=eeeeER. . st1 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DP===eeeeER st1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3837,7 +4243,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 21.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeER . . . . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -3845,11 +4258,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . D=eeeeeeER . . . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 # CHECK-NEXT: [0,3] . DeE----R . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D====eeeER. . . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,5] . .D====eE-R. . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D=====eeeER . . st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,7] . . D=====eE-R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D======eeeeeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,9] . . .D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . .DPPPPeE-R. . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPP==eeeER . . st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,7] . . DPPPPPeE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPP==eeeeeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,9] . . .DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3883,7 +4296,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 24.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeER . . . .. st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 @@ -3891,11 +4311,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . D=eeeeeeER . . .. st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 # CHECK-NEXT: [0,3] . DeE----R . . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D====eeeeeeER . .. st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,5] . . D===eE----R . .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D=======eeeER .. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . . D=======eE-R .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D========eeeeeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . . . D=======eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . . DPPPeE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPP=====eeeER .. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPPPPeE-R .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPP==eeeeeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . . . DPPPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3929,19 +4349,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 21.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeER . . . . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 # CHECK-NEXT: [0,1] .DeE-R . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D=eeeER . . . . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eE-R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE-R . . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeER. . . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . .D=eE----R. . . add x0, x27, #1 +# CHECK-NEXT: [0,5] . .DPeE----R. . . add x0, x27, #1 # CHECK-NEXT: [0,6] . . D=====eeeER . . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . . D=====eE-R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D======eeeeeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . . .D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPPPPPeE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPP==eeeeeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . . .DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3975,19 +4402,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 26.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeER . . . . . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 # CHECK-NEXT: [0,1] . DeE---R . . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D===eeeeER . . . . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] . D===eE--R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=====eeeeeeeeER . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,5] . . D===eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D=========eeeeER. . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,7] . . D=========eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . .D===========eeeeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,9] . . . D===========eE--R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPPeE--R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPP===eeeeeeeeER . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,5] . . DPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPP=======eeeeER. . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . .DPPPPPPPP===eeeeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,9] . . . DPPPPPPPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4021,19 +4455,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 32.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . . . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,1] . DeE----R . . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D====eeeeER. . . . . st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] . D====eE--R. . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D======eeeeeeeeER . . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,5] . . D====eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D==========eeeeeeeeER . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,7] . . . D========eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . D==============eeeeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . . . D==============eE--R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPPPeE--R. . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DPPP===eeeeeeeeER . . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,5] . . DPPPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPP=======eeeeeeeeER . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,7] . . . DPPPPPPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . DPPPPPPP=======eeeeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . . . DPPPPPPPPPPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4067,19 +4508,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 28.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,1] . DeE----R . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D====eeeeER. . . . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] . D====eE--R. . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D======eeeeER . . . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . . D======eE--R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D========eeeeeeeeER . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . . .D======eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . D============eeeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . . . D============eE--R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPPPeE--R. . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DPPP===eeeeER . . . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,5] . . DPPPPPPeE--R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPPPP===eeeeeeeeER . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . . .DPPPPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . DPPPPP=======eeeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . . . DPPPPPPPPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4113,19 +4561,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 19.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 # CHECK-NEXT: [0,1] . DeE----R . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D====eeeeeeeeER . . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] . . D==eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . . D=========eER. . st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,5] . . D=========eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D=========eER . st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,7] . . D=========eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=========eER. st1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . . D=========eER add x0, x27, #1 +# CHECK-NEXT: [0,3] . . DPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . . DPP=======eER. . st1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,5] . . DPPPPPPPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPPPPPPPPeER . st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPeER. st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4159,18 +4614,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeER. . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeER . st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeER. st1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4204,13 +4666,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eER. . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeER. . . st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeER . . st1 { v1.d }[0], [x27], #8 # CHECK-NEXT: [0,5] . DeE-R . . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeER. . st1 { v1.d }[0], [x27], x28 @@ -4250,7 +4719,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . .. st2 { v1.2s, v2.2s }, [x27], #16 @@ -4260,7 +4736,7 @@ add x0, x27, 1 # CHECK-NEXT: [0,4] . DeeeeER .. st2 { v1.4s, v2.4s }, [x27], #32 # CHECK-NEXT: [0,5] . .DeE-R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . . D=eeeER .. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,7] . . D=eE-R .. add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPeE-R .. add x0, x27, #1 # CHECK-NEXT: [0,8] . . D=eeeeER st2 { v1.8h, v2.8h }, [x27], #32 # CHECK-NEXT: [0,9] . . .DeE--R add x0, x27, #1 @@ -4296,19 +4772,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 16.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . . st2 { v1.16b, v2.16b }, [x27], #32 # CHECK-NEXT: [0,1] . DeE-R . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D=eeeeER . . st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D===eeeER . . st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . .D===eE-R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D===eeeER . st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . . D===eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D===eeeeER st2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . . .D==eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . .DPPPeE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPP=eeeER . st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPP=eeeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . . .DPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4342,7 +4825,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . .. st2 { v1.8b, v2.8b }, [x27], x28 @@ -4352,9 +4842,9 @@ add x0, x27, 1 # CHECK-NEXT: [0,4] . D=eeeeER .. st2 { v1.16b, v2.16b }, [x27], x28 # CHECK-NEXT: [0,5] . . DeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . . D==eeeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,7] . . D==eE-R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=eeeER st2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,9] . . .D=eE-R add x0, x27, #1 +# CHECK-NEXT: [0,7] . . DPPeE-R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPeeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,9] . . .DPeE-R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4388,7 +4878,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st2 { v1.b, v2.b }[0], [x27], x28 @@ -4434,7 +4931,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st2 { v1.h, v2.h }[4], [x27], x28 @@ -4480,15 +4984,22 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 # CHECK-NEXT: [0,1] . DeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D===eeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,3] . D==eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D===eeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,5] . . D==eE-R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DP==eeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,5] . . DPPeE-R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4518,19 +5029,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 27.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeER . . . . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 # CHECK-NEXT: [0,1] . DeE--R . . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeeER . . . . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] . .D=eE-R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,3] . .DPeE-R . . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . . D==eeeeeeER . . . st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 # CHECK-NEXT: [0,5] . . DeE----R . . . add x0, x27, #1 # CHECK-NEXT: [0,6] . . .D====eeeeeeER . . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,7] . . . D==eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . D======eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . . . . D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . . . DPPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . DP=====eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . . . . DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4564,7 +5082,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 21.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeER . . . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -4574,7 +5099,7 @@ add x0, x27, 1 # CHECK-NEXT: [0,4] . .DeeeeeeER. . . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 # CHECK-NEXT: [0,5] . . DeE--R. . . add x0, x27, #1 # CHECK-NEXT: [0,6] . . D==eeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . . . D=eE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,7] . . . DPeE-R . . add x0, x27, #1 # CHECK-NEXT: [0,8] . . . D==eeeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK-NEXT: [0,9] . . . .DeE----R add x0, x27, #1 @@ -4610,15 +5135,22 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 # CHECK-NEXT: [0,1] . DeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeeER . st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,3] . D==eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,4] . .D=eeeER . st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,5] . . D=eE-R . add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,4] . .DPeeeER . st3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,5] . . DPeE-R . add x0, x27, #1 # CHECK-NEXT: [0,6] . . DeeeER . st3 { v1.b, v2.b, v3.b }[0], [x27], x28 # CHECK-NEXT: [0,7] . . DeE-R . add x0, x27, #1 # CHECK-NEXT: [0,8] . . DeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 @@ -4656,7 +5188,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 @@ -4702,19 +5241,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 19.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeER . . .. st3 { v1.s, v2.s, v3.s }[0], [x27], x28 # CHECK-NEXT: [0,1] .DeE-R . . .. add x0, x27, #1 # CHECK-NEXT: [0,2] . D=eeeER . . .. st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,3] . D=eE-R . . .. add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE-R . . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeER . .. st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-R . .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-R . .. add x0, x27, #1 # CHECK-NEXT: [0,6] . .D=eeeeeeeeER .. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 # CHECK-NEXT: [0,7] . . DeE-----R .. add x0, x27, #1 # CHECK-NEXT: [0,8] . . D=====eeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,9] . . . D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . . . DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4748,7 +5294,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 32.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeER . . . . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 @@ -4756,11 +5309,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . D=eeeeeeeeER. . . . . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,3] . . DeE----R. . . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . . D====eeeeER . . . . st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,5] . . D===eE--R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . .D=====eeeeeeeeER . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,7] . . . D==eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . .D========eeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,9] . . . . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . . DPPPeE--R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . .DPP===eeeeeeeeER . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,7] . . . DPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . .DP=======eeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,9] . . . . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4794,19 +5347,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 28.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,1] . DeE----R . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D====eeeeER. . . . st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] . .D===eE--R. . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . . D=====eeeeER . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . . D====eE--R . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . D======eeeeeeeeER . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . . . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . D=========eeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . . . . D========eE--R add x0, x27, #1 +# CHECK-NEXT: [0,3] . .DPPPeE--R. . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . . DPP===eeeeER . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,5] . . DPPPPeE--R . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . DPPP===eeeeeeeeER . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . . . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . DPP=======eeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . . . . DPPPPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4840,7 +5400,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 19.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeER . . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4848,11 +5415,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . D===eeeeeeeeER . . st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 # CHECK-NEXT: [0,3] . . DeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . . D======eeeER . st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,5] . . .D======eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . . . D=====eeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,7] . . . D=====eE-R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . . D====eeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . . . D====eE-R add x0, x27, #1 +# CHECK-NEXT: [0,5] . . .DPPPPPPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . . . DPPPPPeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,7] . . . DPPPPPeE-R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . . DPPPPeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . . . DPPPPeE-R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4886,7 +5453,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 @@ -4932,17 +5506,24 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 # CHECK-NEXT: [0,1] .DeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,2] . D==eeeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D====eeeER . st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,5] . D====eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D====eeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] . . D====eE-R add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DP===eeeER . st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 +# CHECK-NEXT: [0,5] . DPPPPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPP=eeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPeE-R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4974,7 +5555,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. stp s1, s2, [x27], #248 # CHECK-NEXT: [0,1] .DeER.. add x0, x27, #1 @@ -5007,19 +5595,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . .. stp q1, q2, [x27], #992 # CHECK-NEXT: [0,1] . DeE-R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] . D=eER . .. stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] . D=eER . .. add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeER . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeER .. stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] . .D=eER .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . .DPeER .. add x0, x27, #1 # CHECK-NEXT: [0,6] . . D=eeeeER.. stp q1, q2, [x27, #992]! # CHECK-NEXT: [0,7] . . DeE--R.. add x0, x27, #1 # CHECK-NEXT: [0,8] . . D==eER. stp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . . .D==eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . . .DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5053,7 +5648,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . stp x1, x2, [x27], #496 @@ -5099,7 +5701,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . str s1, [x27], #254 @@ -5145,7 +5754,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . str s1, [x27, #254]! @@ -5191,7 +5807,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . str w1, [x27, #254]! @@ -5237,7 +5860,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. strh w1, [x27, #254]! # CHECK-NEXT: [0,1] .DeER add x0, x27, #1 @@ -5266,12 +5896,19 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D===eeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPeeeeER ldr x2, [x1], #254 # CHECK-NEXT: [0,3] .DeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/direct-branch.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/direct-branch.s index 3a0187fd132a2..573a40135f2c2 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/direct-branch.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/direct-branch.s @@ -43,7 +43,14 @@ # CHECK-NEXT: 1.00 - - - - - - - b t # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. b t # CHECK-NEXT: [1,0] D=eER.. b t diff --git a/llvm/test/tools/llvm-mca/AArch64/Cortex/forwarding-A57.s b/llvm/test/tools/llvm-mca/AArch64/Cortex/forwarding-A57.s index 07113df465ade..e8aeb116bbd58 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Cortex/forwarding-A57.s +++ b/llvm/test/tools/llvm-mca/AArch64/Cortex/forwarding-A57.s @@ -1,285 +1,6 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py # RUN: llvm-mca -mtriple=aarch64 -mcpu=cortex-a57 -iterations=1 -timeline < %s | FileCheck %s -# CHECK: [0] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 12 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER .. fmul v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] DeeeeeeeeeER fmla v0.2s, v1.2s, v2.2s - -# CHECK: [1] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . fmul v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,1] DeeeeeeeeeeER fmla v0.4s, v1.4s, v2.4s - -# CHECK: [2] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 12 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER .. fmulx v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] DeeeeeeeeeER fmls v0.2s, v1.2s, v2.2s - -# CHECK: [3] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . fmulx v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,1] DeeeeeeeeeeER fmls v0.4s, v1.4s, v2.4s - -# CHECK: [4] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 16 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeeeeER . fmla v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D====eeeeeeeeeER fmla v0.2s, v3.2s, v4.2s - -# CHECK: [5] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 16 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeeeeER . fmls v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D====eeeeeeeeeER fmls v0.2s, v3.2s, v4.2s - -# CHECK: [6] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 12 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER .. fmul d4, d5, d6 -# CHECK-NEXT: [0,1] DeeeeeeeeeER fmadd d1, d2, d3, d4 - -# CHECK: [7] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 12 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER .. fmul d4, d5, d6 -# CHECK-NEXT: [0,1] DeeeeeeeeeER fmadd d1, d2, d3, d4 - -# CHECK: [8] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 16 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeeeeER . fmadd d4, d5, d6, d7 -# CHECK-NEXT: [0,1] D====eeeeeeeeeER fmadd d1, d2, d3, d4 - -# CHECK: [9] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 16 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeeeeER . fmsub d4, d5, d6, d7 -# CHECK-NEXT: [0,1] D====eeeeeeeeeER fmsub d1, d2, d3, d4 - -# CHECK: [10] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 16 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeeeeER . fnmadd d4, d5, d6, d7 -# CHECK-NEXT: [0,1] D====eeeeeeeeeER fnmadd d1, d2, d3, d4 - -# CHECK: [11] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 16 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeeeeER . fnmsub d4, d5, d6, d7 -# CHECK-NEXT: [0,1] D====eeeeeeeeeER fnmsub d1, d2, d3, d4 - -# CHECK: [12] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. saba v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeER saba v0.2s, v3.2s, v4.2s - -# CHECK: [13] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. sabal v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeER sabal v0.2d, v3.2s, v4.2s - -# CHECK: [14] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. uaba v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeER uaba v0.2s, v3.2s, v4.2s - -# CHECK: [15] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. uabal v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeER uabal v0.2d, v3.2s, v4.2s - -# CHECK: [16] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. sadalp v0.1d, v1.2s -# CHECK-NEXT: [0,1] D=eeeeER sadalp v0.1d, v2.2s - -# CHECK: [17] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. uadalp v0.1d, v1.2s -# CHECK-NEXT: [0,1] D=eeeeER uadalp v0.1d, v2.2s - -# CHECK: [18] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. srsra v0.8b, v1.8b, #3 -# CHECK-NEXT: [0,1] D=eeeeER srsra v0.8b, v2.8b, #3 - -# CHECK: [19] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. ursra v0.8b, v1.8b, #3 -# CHECK-NEXT: [0,1] D=eeeeER ursra v0.8b, v2.8b, #3 - -# CHECK: [20] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 8 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeER. usra v0.4s, v1.4s, #3 -# CHECK-NEXT: [0,1] D=eeeeER usra v0.4s, v2.4s, #3 - -# CHECK: [21] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. mul v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER mla v0.2s, v1.2s, v2.2s - -# CHECK: [22] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . pmul v0.8b, v1.8b, v2.8b -# CHECK-NEXT: [0,1] D=====eeeeeER mla v0.8b, v1.8b, v2.8b - -# CHECK: [23] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . sqdmulh v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=====eeeeeER mla v0.2s, v1.2s, v2.2s - -# CHECK: [24] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . sqrdmulh v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=====eeeeeER mla v0.2s, v1.2s, v2.2s - -# CHECK: [25] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. smull v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER smlal v0.2d, v1.2s, v2.2s - -# CHECK: [26] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. umull v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER umlal v0.2d, v1.2s, v2.2s - -# CHECK: [27] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . sqdmull v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=====eeeeeER smlal v0.2d, v1.2s, v2.2s - -# CHECK: [28] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . pmull v0.8h, v1.8b, v2.8b -# CHECK-NEXT: [0,1] D=====eeeeeER smlal v0.8h, v1.8b, v2.8b - -# CHECK: [29] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 13 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . . pmull2 v0.8h, v1.16b, v2.16b -# CHECK-NEXT: [0,1] D=====eeeeeER smlal v0.8h, v1.8b, v2.8b - -# CHECK: [30] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. mla v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER mla v0.2s, v1.2s, v2.2s - -# CHECK: [31] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 11 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeER . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,1] .D=eeeeeeER mla v0.4s, v1.4s, v2.4s - -# CHECK: [32] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. mls v0.2s, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER mls v0.2s, v1.2s, v2.2s - -# CHECK: [33] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 11 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeeER . mls v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,1] .D=eeeeeeER mls v0.4s, v1.4s, v2.4s - -# CHECK: [34] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. smlal v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER smlal v0.2d, v1.2s, v2.2s - -# CHECK: [35] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. smlsl v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER smlsl v0.2d, v1.2s, v2.2s - -# CHECK: [36] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. umlal v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER umlal v0.2d, v1.2s, v2.2s - -# CHECK: [37] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 9 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER. umlsl v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D=eeeeeER umlsl v0.2d, v1.2s, v2.2s - -# CHECK: [38] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 10 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . sqdmlal v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D==eeeeeER sqdmlal v0.2d, v1.2s, v2.2s - -# CHECK: [39] Code Region -# CHECK: Instructions: 2 -# CHECK-NEXT: Total Cycles: 10 -# CHECK: Timeline view: -# CHECK: [0,0] DeeeeeER . sqdmlsl v0.2d, v1.2s, v2.2s -# CHECK-NEXT: [0,1] D==eeeeeER sqdmlsl v0.2d, v1.2s, v2.2s - # ASIMD FP Instructions # FMUL, FMULX, FMLA, FMLS are impacted # testing only a subset of combinations @@ -313,7 +34,6 @@ fmls v0.2s, v1.2s, v2.2s fmls v0.2s, v3.2s, v4.2s # LLVM-MCA-END - # FP Multiply Instructions # FMUL, FMUL, FNMUL, FMADD, FMSUB, FNMADD, FNMSUB are impacted # testing only a subset of combinations @@ -347,8 +67,6 @@ fnmsub d4, d5, d6, d7 fnmsub d1, d2, d3, d4 # LLVM-MCA-END - - # ASIMD Integer Instructions X-Unit # SABA, UABA, SABAL, UABAL, SADALP, UADALP, SRSRA, USRA, URSRA are impacted # testing only a subset of combinations @@ -398,7 +116,6 @@ usra v0.4s, v1.4s, #3 usra v0.4s, v2.4s, #3 # LLVM-MCA-END - # ASIMD Multiply Instructions X-Unit # pmuls and sqd/sqrdmuls dont forward @@ -448,7 +165,6 @@ pmull2.8h v0, v1, v2 smlal.8h v0, v1, v2 # LLVM-MCA-END - # MLAs # LLVM-MCA-BEGIN mla v0.2s, v1.2s, v2.2s @@ -499,3 +215,2703 @@ sqdmlal v0.2d, v1.2s, v2.2s sqdmlsl v0.2d, v1.2s, v2.2s sqdmlsl v0.2d, v1.2s, v2.2s # LLVM-MCA-END + +# CHECK: [0] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 12 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.17 +# CHECK-NEXT: IPC: 0.17 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 0.50 fmul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 9 0.50 fmla v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - fmla v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER .. fmul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DeeeeeeeeeER fmla v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 fmla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 1.0 0.5 0.0 + +# CHECK: [1] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 3 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.23 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 2 5 1.00 fmul v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 10 1.00 fmla v0.4s, v1.4s, v2.4s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 2.00 fmul v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - 2.00 - fmla v0.4s, v1.4s, v2.4s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . fmul v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,1] DeeeeeeeeeeER fmla v0.4s, v1.4s, v2.4s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmul v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 fmla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 1.0 0.5 0.0 + +# CHECK: [2] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 12 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.17 +# CHECK-NEXT: IPC: 0.17 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 0.50 fmulx v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 9 0.50 fmls v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmulx v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - fmls v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER .. fmulx v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DeeeeeeeeeER fmls v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmulx v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 fmls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 1.0 0.5 0.0 + +# CHECK: [3] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 3 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.23 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 2 5 1.00 fmulx v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 10 1.00 fmls v0.4s, v1.4s, v2.4s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 2.00 fmulx v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - 2.00 - fmls v0.4s, v1.4s, v2.4s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . fmulx v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,1] DeeeeeeeeeeER fmls v0.4s, v1.4s, v2.4s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmulx v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 fmls v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 1.0 0.5 0.0 + +# CHECK: [4] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 16 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.13 +# CHECK-NEXT: IPC: 0.13 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 9 0.50 fmla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 9 0.50 fmla v0.2s, v3.2s, v4.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - fmla v0.2s, v3.2s, v4.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeeeeER . fmla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPPPeeeeeeeeeER fmla v0.2s, v3.2s, v4.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 5.0 0.0 0.0 fmla v0.2s, v3.2s, v4.2s +# CHECK-NEXT: 1 3.0 0.5 0.0 + +# CHECK: [5] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 16 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.13 +# CHECK-NEXT: IPC: 0.13 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 9 0.50 fmls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 9 0.50 fmls v0.2s, v3.2s, v4.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - fmls v0.2s, v3.2s, v4.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeeeeER . fmls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPPPeeeeeeeeeER fmls v0.2s, v3.2s, v4.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 5.0 0.0 0.0 fmls v0.2s, v3.2s, v4.2s +# CHECK-NEXT: 1 3.0 0.5 0.0 + +# CHECK: [6] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 12 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.17 +# CHECK-NEXT: IPC: 0.17 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 0.50 fmul d4, d5, d6 +# CHECK-NEXT: 1 9 0.50 fmadd d1, d2, d3, d4 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmul d4, d5, d6 +# CHECK-NEXT: - - - - - - 1.00 - fmadd d1, d2, d3, d4 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER .. fmul d4, d5, d6 +# CHECK-NEXT: [0,1] DeeeeeeeeeER fmadd d1, d2, d3, d4 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmul d4, d5, d6 +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 fmadd d1, d2, d3, d4 +# CHECK-NEXT: 1 1.0 0.5 0.0 + +# CHECK: [7] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 12 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.17 +# CHECK-NEXT: IPC: 0.17 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 0.50 fmul d4, d5, d6 +# CHECK-NEXT: 1 9 0.50 fmadd d1, d2, d3, d4 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmul d4, d5, d6 +# CHECK-NEXT: - - - - - - 1.00 - fmadd d1, d2, d3, d4 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER .. fmul d4, d5, d6 +# CHECK-NEXT: [0,1] DeeeeeeeeeER fmadd d1, d2, d3, d4 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmul d4, d5, d6 +# CHECK-NEXT: 1. 1 1.0 0.0 0.0 fmadd d1, d2, d3, d4 +# CHECK-NEXT: 1 1.0 0.5 0.0 + +# CHECK: [8] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 16 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.13 +# CHECK-NEXT: IPC: 0.13 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 9 0.50 fmadd d4, d5, d6, d7 +# CHECK-NEXT: 1 9 0.50 fmadd d1, d2, d3, d4 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmadd d4, d5, d6, d7 +# CHECK-NEXT: - - - - - - 1.00 - fmadd d1, d2, d3, d4 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeeeeER . fmadd d4, d5, d6, d7 +# CHECK-NEXT: [0,1] DPPPPeeeeeeeeeER fmadd d1, d2, d3, d4 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmadd d4, d5, d6, d7 +# CHECK-NEXT: 1. 1 5.0 0.0 0.0 fmadd d1, d2, d3, d4 +# CHECK-NEXT: 1 3.0 0.5 0.0 + +# CHECK: [9] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 16 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.13 +# CHECK-NEXT: IPC: 0.13 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 9 0.50 fmsub d4, d5, d6, d7 +# CHECK-NEXT: 1 9 0.50 fmsub d1, d2, d3, d4 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fmsub d4, d5, d6, d7 +# CHECK-NEXT: - - - - - - 1.00 - fmsub d1, d2, d3, d4 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeeeeER . fmsub d4, d5, d6, d7 +# CHECK-NEXT: [0,1] DPPPPeeeeeeeeeER fmsub d1, d2, d3, d4 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fmsub d4, d5, d6, d7 +# CHECK-NEXT: 1. 1 5.0 0.0 0.0 fmsub d1, d2, d3, d4 +# CHECK-NEXT: 1 3.0 0.5 0.0 + +# CHECK: [10] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 16 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.13 +# CHECK-NEXT: IPC: 0.13 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 9 0.50 fnmadd d4, d5, d6, d7 +# CHECK-NEXT: 1 9 0.50 fnmadd d1, d2, d3, d4 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fnmadd d4, d5, d6, d7 +# CHECK-NEXT: - - - - - - 1.00 - fnmadd d1, d2, d3, d4 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeeeeER . fnmadd d4, d5, d6, d7 +# CHECK-NEXT: [0,1] DPPPPeeeeeeeeeER fnmadd d1, d2, d3, d4 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fnmadd d4, d5, d6, d7 +# CHECK-NEXT: 1. 1 5.0 0.0 0.0 fnmadd d1, d2, d3, d4 +# CHECK-NEXT: 1 3.0 0.5 0.0 + +# CHECK: [11] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 16 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.13 +# CHECK-NEXT: IPC: 0.13 +# CHECK-NEXT: Block RThroughput: 1.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 9 0.50 fnmsub d4, d5, d6, d7 +# CHECK-NEXT: 1 9 0.50 fnmsub d1, d2, d3, d4 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 fnmsub d4, d5, d6, d7 +# CHECK-NEXT: - - - - - - 1.00 - fnmsub d1, d2, d3, d4 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeeeeER . fnmsub d4, d5, d6, d7 +# CHECK-NEXT: [0,1] DPPPPeeeeeeeeeER fnmsub d1, d2, d3, d4 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 fnmsub d4, d5, d6, d7 +# CHECK-NEXT: 1. 1 5.0 0.0 0.0 fnmsub d1, d2, d3, d4 +# CHECK-NEXT: 1 3.0 0.5 0.0 + +# CHECK: [12] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 saba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 saba v0.2s, v3.2s, v4.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 saba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - 1.00 saba v0.2s, v3.2s, v4.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. saba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeER saba v0.2s, v3.2s, v4.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 saba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 saba v0.2s, v3.2s, v4.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [13] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 sabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 sabal v0.2d, v3.2s, v4.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 sabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - 1.00 sabal v0.2d, v3.2s, v4.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. sabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeER sabal v0.2d, v3.2s, v4.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 sabal v0.2d, v3.2s, v4.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [14] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 uaba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 uaba v0.2s, v3.2s, v4.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 uaba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - 1.00 uaba v0.2s, v3.2s, v4.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. uaba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeER uaba v0.2s, v3.2s, v4.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 uaba v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 uaba v0.2s, v3.2s, v4.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [15] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 uabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 uabal v0.2d, v3.2s, v4.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 uabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - 1.00 uabal v0.2d, v3.2s, v4.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. uabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeER uabal v0.2d, v3.2s, v4.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 uabal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 uabal v0.2d, v3.2s, v4.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [16] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 sadalp v0.1d, v1.2s +# CHECK-NEXT: 1 4 1.00 sadalp v0.1d, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 sadalp v0.1d, v1.2s +# CHECK-NEXT: - - - - - - - 1.00 sadalp v0.1d, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. sadalp v0.1d, v1.2s +# CHECK-NEXT: [0,1] DPeeeeER sadalp v0.1d, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sadalp v0.1d, v1.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 sadalp v0.1d, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [17] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 uadalp v0.1d, v1.2s +# CHECK-NEXT: 1 4 1.00 uadalp v0.1d, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 uadalp v0.1d, v1.2s +# CHECK-NEXT: - - - - - - - 1.00 uadalp v0.1d, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. uadalp v0.1d, v1.2s +# CHECK-NEXT: [0,1] DPeeeeER uadalp v0.1d, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 uadalp v0.1d, v1.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 uadalp v0.1d, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [18] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 srsra v0.8b, v1.8b, #3 +# CHECK-NEXT: 1 4 1.00 srsra v0.8b, v2.8b, #3 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 srsra v0.8b, v1.8b, #3 +# CHECK-NEXT: - - - - - - - 1.00 srsra v0.8b, v2.8b, #3 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. srsra v0.8b, v1.8b, #3 +# CHECK-NEXT: [0,1] DPeeeeER srsra v0.8b, v2.8b, #3 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 srsra v0.8b, v1.8b, #3 +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 srsra v0.8b, v2.8b, #3 +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [19] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 ursra v0.8b, v1.8b, #3 +# CHECK-NEXT: 1 4 1.00 ursra v0.8b, v2.8b, #3 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 ursra v0.8b, v1.8b, #3 +# CHECK-NEXT: - - - - - - - 1.00 ursra v0.8b, v2.8b, #3 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. ursra v0.8b, v1.8b, #3 +# CHECK-NEXT: [0,1] DPeeeeER ursra v0.8b, v2.8b, #3 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 ursra v0.8b, v1.8b, #3 +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 ursra v0.8b, v2.8b, #3 +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [20] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 8 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.25 +# CHECK-NEXT: IPC: 0.25 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 1.00 usra v0.4s, v1.4s, #3 +# CHECK-NEXT: 1 4 1.00 usra v0.4s, v2.4s, #3 + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - - 1.00 usra v0.4s, v1.4s, #3 +# CHECK-NEXT: - - - - - - - 1.00 usra v0.4s, v2.4s, #3 + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 + +# CHECK: [0,0] DeeeeER. usra v0.4s, v1.4s, #3 +# CHECK-NEXT: [0,1] DPeeeeER usra v0.4s, v2.4s, #3 + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 usra v0.4s, v1.4s, #3 +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 usra v0.4s, v2.4s, #3 +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [21] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 mul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 mla v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - mul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - mla v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. mul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER mla v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mul v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [22] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.15 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 pmul v0.8b, v1.8b, v2.8b +# CHECK-NEXT: 1 5 1.00 mla v0.8b, v1.8b, v2.8b + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - pmul v0.8b, v1.8b, v2.8b +# CHECK-NEXT: - - - - - - 1.00 - mla v0.8b, v1.8b, v2.8b + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . pmul v0.8b, v1.8b, v2.8b +# CHECK-NEXT: [0,1] DPPPPPeeeeeER mla v0.8b, v1.8b, v2.8b + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 pmul v0.8b, v1.8b, v2.8b +# CHECK-NEXT: 1. 1 6.0 0.0 0.0 mla v0.8b, v1.8b, v2.8b +# CHECK-NEXT: 1 3.5 0.5 0.0 + +# CHECK: [23] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.15 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 sqdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 mla v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - sqdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - mla v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . sqdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPPPPeeeeeER mla v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sqdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 6.0 0.0 0.0 mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 3.5 0.5 0.0 + +# CHECK: [24] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.15 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 sqrdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 mla v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - sqrdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - mla v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . sqrdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPPPPeeeeeER mla v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sqrdmulh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 6.0 0.0 0.0 mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 3.5 0.5 0.0 + +# CHECK: [25] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 smull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 smlal v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - smull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - smlal v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. smull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER smlal v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 smull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [26] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 umull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 umlal v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - umull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - umlal v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. umull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER umlal v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 umull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 umlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [27] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.15 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 sqdmull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 smlal v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - sqdmull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - smlal v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . sqdmull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPPPPeeeeeER smlal v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sqdmull v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 6.0 0.0 0.0 smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 3.5 0.5 0.0 + +# CHECK: [28] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.15 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 pmull v0.8h, v1.8b, v2.8b +# CHECK-NEXT: 1 5 1.00 smlal v0.8h, v1.8b, v2.8b + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - pmull v0.8h, v1.8b, v2.8b +# CHECK-NEXT: - - - - - - 1.00 - smlal v0.8h, v1.8b, v2.8b + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . pmull v0.8h, v1.8b, v2.8b +# CHECK-NEXT: [0,1] DPPPPPeeeeeER smlal v0.8h, v1.8b, v2.8b + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 pmull v0.8h, v1.8b, v2.8b +# CHECK-NEXT: 1. 1 6.0 0.0 0.0 smlal v0.8h, v1.8b, v2.8b +# CHECK-NEXT: 1 3.5 0.5 0.0 + +# CHECK: [29] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 13 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.15 +# CHECK-NEXT: IPC: 0.15 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 pmull2 v0.8h, v1.16b, v2.16b +# CHECK-NEXT: 1 5 1.00 smlal v0.8h, v1.8b, v2.8b + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - pmull2 v0.8h, v1.16b, v2.16b +# CHECK-NEXT: - - - - - - 1.00 - smlal v0.8h, v1.8b, v2.8b + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . . pmull2 v0.8h, v1.16b, v2.16b +# CHECK-NEXT: [0,1] DPPPPPeeeeeER smlal v0.8h, v1.8b, v2.8b + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 pmull2 v0.8h, v1.16b, v2.16b +# CHECK-NEXT: 1. 1 6.0 0.0 0.0 smlal v0.8h, v1.8b, v2.8b +# CHECK-NEXT: 1 3.5 0.5 0.0 + +# CHECK: [30] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 mla v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - mla v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER mla v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 mla v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [31] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 11 +# CHECK-NEXT: Total uOps: 4 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.36 +# CHECK-NEXT: IPC: 0.18 +# CHECK-NEXT: Block RThroughput: 4.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 2 6 2.00 mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 2 6 2.00 mla v0.4s, v1.4s, v2.4s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 4.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 2.00 - mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - 2.00 - mla v0.4s, v1.4s, v2.4s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeER . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,1] .DPeeeeeeER mla v0.4s, v1.4s, v2.4s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [32] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 mls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 mls v0.2s, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - mls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - mls v0.2s, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. mls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER mls v0.2s, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 mls v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [33] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 11 +# CHECK-NEXT: Total uOps: 4 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.36 +# CHECK-NEXT: IPC: 0.18 +# CHECK-NEXT: Block RThroughput: 4.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 2 6 2.00 mls v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 2 6 2.00 mls v0.4s, v1.4s, v2.4s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 4.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 2.00 - mls v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - 2.00 - mls v0.4s, v1.4s, v2.4s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 +# CHECK-NEXT: Index 0123456789 + +# CHECK: [0,0] DeeeeeeER . mls v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,1] .DPeeeeeeER mls v0.4s, v1.4s, v2.4s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mls v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 mls v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [34] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 smlal v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - smlal v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER smlal v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 smlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [35] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 smlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 smlsl v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - smlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - smlsl v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. smlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER smlsl v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 smlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 smlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [36] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 umlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 umlal v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - umlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - umlal v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. umlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER umlal v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 umlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 umlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [37] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 9 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.22 +# CHECK-NEXT: IPC: 0.22 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 umlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 umlsl v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - umlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - umlsl v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 + +# CHECK: [0,0] DeeeeeER. umlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPeeeeeER umlsl v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 umlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 2.0 0.0 0.0 umlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 1.5 0.5 0.0 + +# CHECK: [38] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 10 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.20 +# CHECK-NEXT: IPC: 0.20 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 sqdmlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 sqdmlal v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - sqdmlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - sqdmlal v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . sqdmlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPeeeeeER sqdmlal v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sqdmlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 3.0 0.0 0.0 sqdmlal v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 2.0 0.5 0.0 + +# CHECK: [39] Code Region + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 2 +# CHECK-NEXT: Total Cycles: 10 +# CHECK-NEXT: Total uOps: 2 + +# CHECK: Dispatch Width: 3 +# CHECK-NEXT: uOps Per Cycle: 0.20 +# CHECK-NEXT: IPC: 0.20 +# CHECK-NEXT: Block RThroughput: 2.0 + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 5 1.00 sqdmlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 5 1.00 sqdmlsl v0.2d, v1.2s, v2.2s + +# CHECK: Resources: +# CHECK-NEXT: [0] - A57UnitB +# CHECK-NEXT: [1.0] - A57UnitI +# CHECK-NEXT: [1.1] - A57UnitI +# CHECK-NEXT: [2] - A57UnitL +# CHECK-NEXT: [3] - A57UnitM +# CHECK-NEXT: [4] - A57UnitS +# CHECK-NEXT: [5] - A57UnitW +# CHECK-NEXT: [6] - A57UnitX + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] +# CHECK-NEXT: - - - - - - 2.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: - - - - - - 1.00 - sqdmlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - 1.00 - sqdmlsl v0.2d, v1.2s, v2.2s + +# CHECK: Timeline view: +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 + +# CHECK: [0,0] DeeeeeER . sqdmlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: [0,1] DPPeeeeeER sqdmlsl v0.2d, v1.2s, v2.2s + +# CHECK: Average Wait times (based on the timeline view): +# CHECK-NEXT: [0]: Executions +# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK: [0] [1] [2] [3] +# CHECK-NEXT: 0. 1 1.0 1.0 0.0 sqdmlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1. 1 3.0 0.0 0.0 sqdmlsl v0.2d, v1.2s, v2.2s +# CHECK-NEXT: 1 2.0 0.5 0.0 diff --git a/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-forwarding.s b/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-forwarding.s index b29697ea7972b..a71651d578a59 100644 --- a/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-forwarding.s +++ b/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-forwarding.s @@ -28,12 +28,19 @@ madd x0, x0, x0, x0 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mul x0, x1, x2 -# CHECK-NEXT: [0,1] D====eER . add x0, x0, x1 -# CHECK-NEXT: [0,2] D=====eER. add x0, x0, x1 -# CHECK-NEXT: [0,3] D======eER add x0, x0, x1 +# CHECK-NEXT: [0,1] DPPPPeER . add x0, x0, x1 +# CHECK-NEXT: [0,2] DPPPPPeER. add x0, x0, x1 +# CHECK-NEXT: [0,3] DPPPPPPeER add x0, x0, x1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -61,13 +68,20 @@ madd x0, x0, x0, x0 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. mul x0, x1, x2 # CHECK-NEXT: [0,1] D==eeeeER .. madd x0, x1, x2, x0 # CHECK-NEXT: [0,2] D=eeeeE-R .. madd x0, x1, x2, x0 -# CHECK-NEXT: [0,3] D=====eeeeER madd x0, x0, x0, x0 +# CHECK-NEXT: [0,3] DPPPPPeeeeER madd x0, x0, x0, x0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-writeback.s b/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-writeback.s index 2738f0b54c243..f242d2ce0bf84 100644 --- a/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/HiSilicon/tsv110-writeback.s @@ -729,14 +729,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeeeeER .. ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,3] .D==eeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,4] . D==eeeeeER ld1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeeER .. ld1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ld1 { v1.2s }, [x27], #8 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ld1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,4] . DPPeeeeeER ld1 { v1.4s }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -765,14 +772,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeeeeER .. ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,3] .D==eeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER ld1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. ld1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ld1 { v1.16b }, [x27], #16 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ld1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER ld1 { v1.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -801,14 +815,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER .. ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER ld1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. ld1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ld1 { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ld1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER ld1 { v1.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -837,14 +858,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER .. ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ld1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,4] . D==eeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeeER .. ld1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ld1 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,4] . DPPeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -873,14 +901,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeeER .. ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ld1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,4] . D==eeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. ld1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ld1 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,4] . DPPeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -909,14 +944,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER .. ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. ld1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -945,14 +987,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . ld1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER . . ld1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,3] . D=eeeeeeER . ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,4] . D==eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,1] DPeeeeeER . . ld1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 +# CHECK-NEXT: [0,3] . DPeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,4] . DP=eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -981,14 +1030,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 # CHECK-NEXT: [0,1] .DeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 # CHECK-NEXT: [0,2] . D=eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] . D=eeeeeeER . ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,4] . D==eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,3] . DPeeeeeeER . ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,4] . DP=eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1017,14 +1073,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK-NEXT: [0,2] . D=eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eeeeeeER . ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,3] . DPeeeeeeER . ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,4] . DP=eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1053,14 +1116,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK-NEXT: [0,2] . D=eeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,4] . D==eeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,3] . DPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,4] . DP=eeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1089,7 +1159,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 @@ -1125,7 +1202,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 @@ -1161,14 +1245,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeER. . . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 # CHECK-NEXT: [0,2] . DeeeeeeER . . ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 # CHECK-NEXT: [0,3] . DeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,4] . D=====eeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,4] . DPPPPPeeeeeeeER ld1 { v1.b }[0], [x27], #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1197,14 +1288,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,1] .D======eeeeeeeER . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,2] . D============eeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] . D==================eeeeeeeER . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,4] . D========================eeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,1] .DPPPPPPeeeeeeeER . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld1 { v1.h }[4], [x27], #2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1233,14 +1331,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,1] .D======eeeeeeeER . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,2] . D============eeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,3] . D==================eeeeeeeER . . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D========================eeeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,1] .DPPPPPPeeeeeeeER . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld1 { v1.d }[0], [x27], #8 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1269,7 +1374,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.d }[0], [x27], x28 @@ -1305,7 +1417,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1r { v1.4s }, [x27], #4 @@ -1341,7 +1460,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1r { v1.2d }, [x27], x28 @@ -1377,7 +1503,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1r { v1.8h }, [x27], x28 @@ -1413,7 +1546,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2 { v1.4s, v2.4s }, [x27], #32 @@ -1449,7 +1589,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2 { v1.2s, v2.2s }, [x27], x28 @@ -1485,14 +1632,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,1] .D======eeeeeeeER . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,2] . D============eeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,3] . D==================eeeeeeeER . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D========================eeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,1] .DPPPPPPeeeeeeeER . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1521,14 +1675,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,1] .D======eeeeeeeER . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,2] . D============eeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D==================eeeeeeeER . . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,4] . D========================eeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,1] .DPPPPPPeeeeeeeER . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1557,14 +1718,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeeeeER. . . . ld2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] .D======eeeeeeeER . . ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,2] . D============eeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D============eeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,4] . D============eeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,1] .DPPPPPPeeeeeeeER . . ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPPeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1593,7 +1761,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2r { v1.2s, v2.2s }, [x27], #8 @@ -1629,7 +1804,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2r { v1.16b, v2.16b }, [x27], #2 @@ -1665,7 +1847,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2r { v1.4s, v2.4s }, [x27], x28 @@ -1701,7 +1890,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 @@ -1737,7 +1933,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 @@ -1773,14 +1976,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 # CHECK-NEXT: [0,1] . DeeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK-NEXT: [0,2] . DeeeeeeeeER. . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,3] . .D======eeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,4] . . D============eeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,3] . .DPPPPPPeeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,4] . . DPPPPPPPPPPPPeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1809,14 +2019,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] . D======eeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,2] . D============eeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,3] . .D==================eeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,4] . . D========================eeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,1] . DPPPPPPeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,3] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1845,14 +2062,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] . D======eeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,2] . D============eeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] . .D==================eeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,4] . . D========================eeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,1] . DPPPPPPeeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1881,7 +2105,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 @@ -1917,7 +2148,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 @@ -1953,7 +2191,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 @@ -1989,7 +2234,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 10.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeER . . . ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 @@ -2025,7 +2277,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 11.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeeeeeeeER . . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2061,7 +2320,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 11.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeeeeeeeER . . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2097,14 +2363,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,1] . D======eeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,2] . D============eeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] . .D==================eeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,4] . . D========================eeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,1] . DPPPPPPeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2133,14 +2406,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,1] . D======eeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,2] . D============eeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] . .D==================eeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,4] . . D========================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,1] . DPPPPPPeeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2169,14 +2449,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,1] . D======eeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,2] . D=====eeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] . .D=====eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,4] . . D====eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,1] . DPPPPPPeeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,2] . DPPPPPeeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,3] . .DPPPP=eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,4] . . DPPPPeeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2205,7 +2492,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -2241,7 +2535,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 @@ -2277,7 +2578,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 @@ -2313,7 +2621,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . ldp q1, q2, [x27], #992 @@ -2349,7 +2664,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldp x1, x2, [x27], #496 @@ -2385,14 +2707,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=eeeeeER .. ldr h1, [x27], #254 -# CHECK-NEXT: [0,2] .D=eeeeeER.. ldr s1, [x27], #254 -# CHECK-NEXT: [0,3] .D==eeeeeER. ldr d1, [x27], #254 -# CHECK-NEXT: [0,4] . D==eeeeeER ldr q1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeeeeER .. ldr h1, [x27], #254 +# CHECK-NEXT: [0,2] .DPeeeeeER.. ldr s1, [x27], #254 +# CHECK-NEXT: [0,3] .DPPeeeeeER. ldr d1, [x27], #254 +# CHECK-NEXT: [0,4] . DPPeeeeeER ldr q1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2421,14 +2750,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeeER .. ldr h1, [x27, #254]! -# CHECK-NEXT: [0,2] .D=eeeeeER.. ldr s1, [x27, #254]! -# CHECK-NEXT: [0,3] .D==eeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,4] . D==eeeeeER ldr q1, [x27, #254]! +# CHECK-NEXT: [0,1] DPeeeeeER .. ldr h1, [x27, #254]! +# CHECK-NEXT: [0,2] .DPeeeeeER.. ldr s1, [x27, #254]! +# CHECK-NEXT: [0,3] .DPPeeeeeER. ldr d1, [x27, #254]! +# CHECK-NEXT: [0,4] . DPPeeeeeER ldr q1, [x27, #254]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2457,14 +2793,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,2] .D=eeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,3] .D==eeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,4] . D==eeeeER ldrb w1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeeeER . ldr x1, [x27], #254 +# CHECK-NEXT: [0,2] .DPeeeeER . ldr w1, [x27, #254]! +# CHECK-NEXT: [0,3] .DPPeeeeER. ldr x1, [x27, #254]! +# CHECK-NEXT: [0,4] . DPPeeeeER ldrb w1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2493,14 +2836,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,2] .D=eeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,3] .D==eeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,4] . D==eeeeER ldrsb x1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeeeER . ldrh w1, [x27], #254 +# CHECK-NEXT: [0,2] .DPeeeeER . ldrh w1, [x27, #254]! +# CHECK-NEXT: [0,3] .DPPeeeeER. ldrsb w1, [x27], #254 +# CHECK-NEXT: [0,4] . DPPeeeeER ldrsb x1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2529,14 +2879,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,2] .D=eeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,3] .D==eeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,4] . D==eeeeER ldrsh w1, [x27, #254]! +# CHECK-NEXT: [0,1] DPeeeeER . ldrsb x1, [x27, #254]! +# CHECK-NEXT: [0,2] .DPeeeeER . ldrsh w1, [x27], #254 +# CHECK-NEXT: [0,3] .DPPeeeeER. ldrsh x1, [x27], #254 +# CHECK-NEXT: [0,4] . DPPeeeeER ldrsh w1, [x27, #254]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2565,13 +2922,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeER . ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,2] .D=eeeeER. ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,3] .D==eeeER. st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,4] . D==eeeER st1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeER . ldrsw x1, [x27], #254 +# CHECK-NEXT: [0,2] .DPeeeeER. ldrsw x1, [x27, #254]! +# CHECK-NEXT: [0,3] .DPPeeeER. st1 { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,4] . DPPeeeER st1 { v1.2d }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2600,13 +2964,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeeER . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,2] .D=eeeER . st1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,3] .D==eeeER. st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,4] . D==eeeER st1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeER . st1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,2] .DPeeeER . st1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,3] .DPPeeeER. st1 { v1.8b }, [x27], #8 +# CHECK-NEXT: [0,4] . DPPeeeER st1 { v1.8h }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2635,13 +3006,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . st1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,1] D=eeeER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeER . st1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeER. st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeER st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeER . st1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeER . st1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeER. st1 { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeER st1 { v1.4h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2670,14 +3048,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . st1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeER . st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeER . st1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeER . st1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeER st1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeER . st1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeER . st1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeER . st1 { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeER st1 { v1.1d, v2.1d }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2706,14 +3091,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeER . st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,2] .D=eeeeER . st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,3] .D==eeeeER. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,4] . D==eeeeER st1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeER . st1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,2] .DPeeeeER . st1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,3] .DPPeeeeER. st1 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,4] . DPPeeeeER st1 { v1.8b, v2.8b }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2742,14 +3134,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeER . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,2] .D=eeeeER . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeER. st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeER st1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,2] .DPeeeeER . st1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeER. st1 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeER st1 { v1.2s, v2.2s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2778,14 +3177,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeER . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeER. st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeER st1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeER . st1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeER. st1 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeER st1 { v1.16b, v2.16b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2814,14 +3220,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeeeeER .. st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,3] .D==eeeeeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,4] . D==eeeeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,1] DPeeeeeER .. st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,4] . DPPeeeeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2850,14 +3263,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeeeeER .. st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,3] .D==eeeeeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2886,14 +3306,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER .. st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeER. st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2922,14 +3349,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,2] .D=eeeeeeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,3] .D==eeeeeeER. st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,4] . D==eeeeeeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeeeeER. . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,2] .DPeeeeeeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,3] .DPPeeeeeeER. st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,4] . DPPeeeeeeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2958,14 +3392,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,1] D=eeeeeeER. . st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,2] .D=eeeeeeER . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,3] .D==eeeeeeER. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,4] . D==eeeeeeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,2] .DPeeeeeeER . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,3] .DPPeeeeeeER. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,4] . DPPeeeeeeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2994,14 +3435,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3030,13 +3478,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeeER. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeE--R st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,3] .D==eeeE-R st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,4] . D==eeeER st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeE--R st1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,3] .DPPeeeE-R st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,4] . DPPeeeER st1 { v1.b }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3065,13 +3520,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeER . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,2] .D=eeeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,3] .D==eeeER. st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeER st1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeER . st1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,2] .DPeeeER . st1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,3] .DPPeeeER. st1 { v1.h }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeER st1 { v1.h }[4], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3100,14 +3562,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eeeER . st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeER . st1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,3] .D==eeeER . st1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeER st2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeER . st1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeER . st1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,3] .DPPeeeER . st1 { v1.d }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeER st2 { v1.2d, v2.2d }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3136,14 +3605,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,2] .D=eeeeER . st2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeER. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,4] . D==eeeeER st2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,2] .DPeeeeER . st2 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeER. st2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,4] . DPPeeeeER st2 { v1.8h, v2.8h }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3172,14 +3648,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeER . st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeER. st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeER . st2 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeER. st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeER st2 { v1.4s, v2.4s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3208,14 +3691,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeER . st2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,4] . D==eeeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeER . st2 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeER. st2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,4] . DPPeeeeER st2 { v1.b, v2.b }[8], [x27], #2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3244,14 +3734,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeER . st2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,3] .D==eeeeER. st2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,4] . D==eeeeER st2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeER . st2 { v1.h, v2.h }[0], [x27], #4 +# CHECK-NEXT: [0,3] .DPPeeeeER. st2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,4] . DPPeeeeER st2 { v1.h, v2.h }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3280,14 +3777,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,2] .D=eeeeER . st2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeER. st2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,4] . D==eeeeER st2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,2] .DPeeeeER . st2 { v1.s, v2.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeER. st2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,4] . DPPeeeeER st2 { v1.d, v2.d }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3316,11 +3820,18 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,1] D=eeeeeER. st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,2] .D=eeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,1] DPeeeeeER. st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,2] .DPeeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3347,14 +3858,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,1] D=eeeeeER .. st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,3] .D==eeeeeER. st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,4] . D==eeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,4] . DPPeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3383,14 +3901,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER .. st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeER. st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3419,14 +3944,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER .. st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,3] .D==eeeeeER. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER .. st3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3455,14 +3987,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,1] D=eeeeeER .. st3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,2] .D=eeeeeER.. st3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeER. st3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,1] DPeeeeeER .. st3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,2] .DPeeeeeER.. st3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeER. st3 { v1.h, v2.h, v3.h }[4], [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3491,14 +4030,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,2] .D=eeeeeER. . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,2] .DPeeeeeER. . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3527,14 +4073,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3563,14 +4116,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3599,14 +4159,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER. st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeE-R. st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,3] .D==eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,4] . D==eeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER. st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeE-R. st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 +# CHECK-NEXT: [0,3] .DPPeeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,4] . DPPeeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3635,14 +4202,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,2] .D=eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,3] .D==eeeeeeER. st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,2] .DPeeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 +# CHECK-NEXT: [0,3] .DPPeeeeeeER. st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3671,13 +4245,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,1] D=eeeeeeER.. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER.. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3705,7 +4286,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeeER.. stp s1, s2, [x27], #248 # CHECK-NEXT: [0,1] .D=eeER stp d1, d2, [x27], #496 @@ -3734,14 +4322,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 9.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. stp q1, q2, [x27], #992 # CHECK-NEXT: [0,1] .D=eeER .. stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,2] . D==eeER .. stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,3] . D===eeER. stp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,4] . D====eER stp w1, w2, [x27], #248 +# CHECK-NEXT: [0,2] . DP=eeER .. stp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,3] . DPP=eeER. stp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,4] . DPPP=eER stp w1, w2, [x27], #248 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3770,13 +4365,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . stp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eER. . stp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,2] .D=eER . stp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,3] .D==eER. str b1, [x27], #254 -# CHECK-NEXT: [0,4] . D==eER str h1, [x27], #254 +# CHECK-NEXT: [0,1] DPeER. . stp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,2] .DPeER . stp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,3] .DPPeER. str b1, [x27], #254 +# CHECK-NEXT: [0,4] . DPPeER str h1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3805,13 +4407,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . str s1, [x27], #254 -# CHECK-NEXT: [0,1] D=eER. . str d1, [x27], #254 -# CHECK-NEXT: [0,2] .D=eER . str q1, [x27], #254 -# CHECK-NEXT: [0,3] .D==eER. str b1, [x27, #254]! -# CHECK-NEXT: [0,4] . D==eER str h1, [x27, #254]! +# CHECK-NEXT: [0,1] DPeER. . str d1, [x27], #254 +# CHECK-NEXT: [0,2] .DPeER . str q1, [x27], #254 +# CHECK-NEXT: [0,3] .DPPeER. str b1, [x27, #254]! +# CHECK-NEXT: [0,4] . DPPeER str h1, [x27, #254]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3840,13 +4449,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . str s1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . str d1, [x27, #254]! -# CHECK-NEXT: [0,2] .D=eER . str q1, [x27, #254]! -# CHECK-NEXT: [0,3] .D==eER. str w1, [x27], #254 -# CHECK-NEXT: [0,4] . D==eER str x1, [x27], #254 +# CHECK-NEXT: [0,1] DPeER. . str d1, [x27, #254]! +# CHECK-NEXT: [0,2] .DPeER . str q1, [x27, #254]! +# CHECK-NEXT: [0,3] .DPPeER. str w1, [x27], #254 +# CHECK-NEXT: [0,4] . DPPeER str x1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3875,13 +4491,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . str w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . str x1, [x27, #254]! -# CHECK-NEXT: [0,2] .D=eER . strb w1, [x27], #254 -# CHECK-NEXT: [0,3] .D==eER. strb w1, [x27, #254]! -# CHECK-NEXT: [0,4] . D==eER strh w1, [x27], #254 +# CHECK-NEXT: [0,1] DPeER. . str x1, [x27, #254]! +# CHECK-NEXT: [0,2] .DPeER . strb w1, [x27], #254 +# CHECK-NEXT: [0,3] .DPPeER. strb w1, [x27, #254]! +# CHECK-NEXT: [0,4] . DPPeER strh w1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3910,7 +4533,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeER strh w1, [x27, #254]! @@ -3936,11 +4566,18 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D====eeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,1] DPPPPeeeeER ldr x2, [x1], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-writeback.s index 8fe21167a5bd3..a2341525b14b8 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-writeback.s @@ -1171,19 +1171,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeER.. ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeER ld1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ld1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeER.. ld1 { v1.2s }, [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ld1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeER ld1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1217,19 +1224,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeER.. ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeER ld1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ld1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeER.. ld1 { v1.16b }, [x27], #16 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ld1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeER ld1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1263,19 +1277,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeER.. ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeER ld1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ld1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeER.. ld1 { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ld1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeER ld1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1309,19 +1330,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeER.. ld1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ld1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeER.. ld1 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1355,19 +1383,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeER.. ld1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ld1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeER.. ld1 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1401,19 +1436,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ld1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeER.. ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ld1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeER.. ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1447,19 +1489,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . ld1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER . . ld1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE---R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER . . ld1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1493,19 +1542,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1539,19 +1595,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1585,19 +1648,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1631,19 +1701,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. .. ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eE----R. .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeER .. ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,5] . D===eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeER .. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,7] . D===eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,9] . D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeER .. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1677,19 +1754,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,1] D=eE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. .. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeER .. ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeER .. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeER .. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1723,19 +1807,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeER . . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeER . . ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=======eeeeeeeER ld1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,9] . D========eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPeeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,9] . DPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1769,19 +1860,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,1] D=eE-----R. . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=======eeeeeeeER . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] D========eE-----R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=============eeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,5] .D==============eE-----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D====================eeeeeeeER . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D=====================eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==========================eeeeeeeER ld1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,9] . D===========================eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeeeER . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPeE-----R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPeE-----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1815,19 +1913,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=======eeeeeeeER . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] D========eE-----R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=============eeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,5] .D==============eE-----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D====================eeeeeeeER . . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D=====================eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==========================eeeeeeeER ld1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D===========================eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeeeER . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPeE-----R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPeE-----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1861,19 +1966,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeER . ld1r { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,3] D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeER . ld1r { v1.2d }, [x27], #8 -# CHECK-NEXT: [0,5] .D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER. ld1r { v1.2s }, [x27], #4 -# CHECK-NEXT: [0,7] .D===eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld1r { v1.4h }, [x27], #2 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeER . ld1r { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeER . ld1r { v1.2d }, [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER. ld1r { v1.2s }, [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeER ld1r { v1.4h }, [x27], #2 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1907,19 +2019,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1r { v1.4s }, [x27], #4 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeER . ld1r { v1.8b }, [x27], #1 -# CHECK-NEXT: [0,3] D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeER . ld1r { v1.8h }, [x27], #2 -# CHECK-NEXT: [0,5] .D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER. ld1r { v1.16b }, [x27], #1 -# CHECK-NEXT: [0,7] .D===eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld1r { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeER . ld1r { v1.8b }, [x27], #1 +# CHECK-NEXT: [0,3] DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeER . ld1r { v1.8h }, [x27], #2 +# CHECK-NEXT: [0,5] .DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER. ld1r { v1.16b }, [x27], #1 +# CHECK-NEXT: [0,7] .DPPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeER ld1r { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1953,19 +2072,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1r { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeER . ld1r { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeER . ld1r { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER. ld1r { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld1r { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeER . ld1r { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeER . ld1r { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER. ld1r { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeER ld1r { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1999,19 +2125,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1r { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeER . ld1r { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeER . ld1r { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2045,19 +2178,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] . D=eE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-----R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2091,19 +2231,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-----R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2137,19 +2284,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D======eeeeeeeER . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,3] .D=======eE-----R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,5] . D=============eE-----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==================eeeeeeeER . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D===================eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D========================eeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D=========================eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPeeeeeeeER . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,3] .DPPPPPPPeE-----R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE-----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2183,19 +2337,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE-----R. . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D======eeeeeeeER . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,3] .D=======eE-----R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=============eE-----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==================eeeeeeeER . . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] . D===================eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D========================eeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D=========================eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPeeeeeeeER . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,3] .DPPPPPPPeE-----R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE-----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2229,19 +2390,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeeeeeeeER. . . . ld2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D======eeeeeeeER . . ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,3] .D=======eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=============eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D============eeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,7] . D=============eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============eeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 -# CHECK-NEXT: [0,9] . D=============eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPeeeeeeeER . . ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,3] .DPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2275,19 +2443,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2r { v1.2s, v2.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 -# CHECK-NEXT: [0,7] . D=eE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-----R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 -# CHECK-NEXT: [0,9] . D=eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2321,19 +2496,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2r { v1.16b, v2.16b }, [x27], #2 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-----R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2367,19 +2549,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld2r { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeER . ld2r { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,9] . D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2413,19 +2602,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2459,19 +2655,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2505,19 +2708,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DeeeeeeeeER . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D========eeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,7] . D=========eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============eeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,9] . D===============eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,7] . DPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2551,19 +2761,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D======eeeeeeeER . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] .D=======eE-----R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,5] . D=============eE-----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==================eeeeeeeER . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,7] . D===================eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D========================eeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=========================eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPeeeeeeeER . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPeE-----R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE-----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2597,19 +2814,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeER. . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D======eeeeeeeER . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,3] .D=======eE-----R . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=============eE-----R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==================eeeeeeeER . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,7] . D===================eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D========================eeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=========================eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPeeeeeeeER . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,3] .DPPPPPPPeE-----R . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPeE-----R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2643,19 +2867,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 -# CHECK-NEXT: [0,5] . D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 -# CHECK-NEXT: [0,7] . D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 +# CHECK-NEXT: [0,7] . DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2689,19 +2920,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 -# CHECK-NEXT: [0,5] . D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeER . ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeER . ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2735,19 +2973,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeER . ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeER . ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2781,11 +3026,18 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . . ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeeER . . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 # CHECK-NEXT: [0,3] . DeE--------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER . . ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 @@ -2827,7 +3079,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2873,7 +3132,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2919,19 +3185,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 # CHECK-NEXT: [0,1] .DeE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,3] . D======eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==================eeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,7] . . D==================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D========================eeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,9] . . D========================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,3] . DPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2965,19 +3238,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 # CHECK-NEXT: [0,1] .DeE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D======eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D============eeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,5] . D============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D==================eeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,7] . . D==================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D========================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,9] . . D========================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3011,19 +3291,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeER . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 # CHECK-NEXT: [0,1] .DeE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] . D======eeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D======eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=====eeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,5] . D=====eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . .D======eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,7] . . D======eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . . D=====eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 -# CHECK-NEXT: [0,9] . . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,2] . DPPPPPPeeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPeeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,5] . DPPPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . .DPPPP==eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,7] . . DPPPPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . . DPPPPPeeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,9] . . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3057,7 +3344,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -3103,7 +3397,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 @@ -3149,7 +3450,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 @@ -3159,9 +3467,9 @@ add x0, x27, 1 # CHECK-NEXT: [0,4] . DeeeeeeeeER. ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 # CHECK-NEXT: [0,5] . DeE------R. add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeE-R. ldp s1, s2, [x27], #248 -# CHECK-NEXT: [0,7] . D==eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . .D==eeeeeER ldp d1, d2, [x27], #496 -# CHECK-NEXT: [0,9] . .D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . .DP=eeeeeER ldp d1, d2, [x27], #496 +# CHECK-NEXT: [0,9] . .DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3195,19 +3503,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ldp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeE-R. . ldp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeER. . ldp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eE---R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER ldp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] .D===eE-----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeE--R ldp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeE-R. . ldp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeER. . ldp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeE---R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER ldp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,7] .DPPPeE-----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeE--R ldp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3241,19 +3556,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. ldp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER .. ldp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER .. ldp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ldpsw x1, x2, [x27], #248 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER ldpsw x1, x2, [x27, #248]! -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER .. ldp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER .. ldp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ldpsw x1, x2, [x27], #248 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeER ldpsw x1, x2, [x27, #248]! +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3287,19 +3609,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ldr h1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeER.. ldr s1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ldr d1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeER ldr q1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ldr h1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeER.. ldr s1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ldr d1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeER ldr q1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3333,19 +3662,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeER .. ldr h1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeER.. ldr s1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeER ldr q1, [x27, #254]! -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeER .. ldr h1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeER.. ldr s1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER. ldr d1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeER ldr q1, [x27, #254]! +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3379,19 +3715,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrb w1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldr x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldr w1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldr x1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrb w1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3425,19 +3768,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrsb x1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrh w1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrh w1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldrsb w1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrsb x1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3471,19 +3821,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrsh w1, [x27, #254]! -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrsb x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrsh w1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldrsh x1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrsh w1, [x27, #254]! +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3517,18 +3874,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER. ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eE--R add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeE-R st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eE-R add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER. ldrsw x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER ldrsw x1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeE-R st1 { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeE-R add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3562,18 +3926,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.8b }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3607,18 +3978,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3652,18 +4030,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3697,18 +4082,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3742,18 +4134,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3787,18 +4186,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3832,19 +4238,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeER . . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,5] . D==eE-R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeER. . st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eE-R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeER. . st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,7] . DPPeE-R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3878,19 +4291,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeER. . st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeER. . st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE-R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3924,19 +4344,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeER . . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeER. . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeER. . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE-R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3970,19 +4397,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeE-R . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eE-R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeER st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eE---R add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeE--R st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE--R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeE--R st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4016,19 +4450,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,1] .DeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeE--R .. st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeER. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eE---R. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 # CHECK-NEXT: [0,7] . DeE---R add x0, x27, #1 # CHECK-NEXT: [0,8] . D==eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4062,19 +4503,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,1] .DeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeE--R .. st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeER .. st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eER .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeER st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE---R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeE--R st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeER st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPeE---R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeE--R st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4108,7 +4556,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4116,11 +4571,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeER. . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 # CHECK-NEXT: [0,3] . DeE---R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER . st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,5] . D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER. st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,7] . D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER. st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,7] . DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4154,19 +4609,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st1 { v1.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4200,19 +4662,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER .. st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER .. st1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,5] .D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER.. st1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER st2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER .. st1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER .. st1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER.. st1 { v1.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeER st2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4246,19 +4715,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. st2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,1] D=eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER .. st2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeER.. st2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE---R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER.. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,7] . D==eE--R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeER st2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,9] . D==eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER .. st2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeER.. st2 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE---R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER.. st2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,7] . DPPeE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeER st2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4292,19 +4768,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER .. st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER .. st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER.. st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE--R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeER st2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE---R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER.. st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4338,19 +4821,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . st2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeER. st2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE---R. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE---R. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,7] . D=eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeER st2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,9] . D==eE--R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,9] . DPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4384,19 +4874,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.h, v2.h }[0], [x27], #4 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4430,19 +4927,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.s, v2.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4476,15 +4980,22 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE----R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,5] . D==eE---R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4514,19 +5025,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4560,19 +5078,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4606,19 +5131,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeE-R . . st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. . st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,5] . D==eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER . st3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER . st3 { v1.b, v2.b, v3.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4652,19 +5184,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,1] D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,3] .D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D==eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4698,19 +5237,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeER . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D==eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,7] . D=eE----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,7] . DPeE----R . add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,9] . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4744,19 +5290,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE-----R. . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER . . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,3] . DeE-------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . . st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,5] . D=eE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . . add x0, x27, #1 # CHECK-NEXT: [0,6] . D==eeeeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,7] . D==eE-------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . .D=eeeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,9] . . D=eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . .DPeeeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,9] . . DPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4790,19 +5343,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,1] .DeE----R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] . DeeeeeeeER .. st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eE-----R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] . DPeE-----R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeER .. st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE-----R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeeER st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE-----R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeeER st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPeE-------R add x0, x27, #1 # CHECK-NEXT: [0,8] . .D=eeeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . .D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . .DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4836,7 +5396,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER .. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4844,11 +5411,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeeeER .. st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 # CHECK-NEXT: [0,3] . DeE-------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeER .. st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,5] . D===eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,7] . D====eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . .D===eeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPP=eeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,7] . DPPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . .DPPPeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4882,19 +5449,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,5] . D==eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4928,17 +5502,24 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,1] D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,5] . D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4970,12 +5551,19 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DeeER. stp s1, s2, [x27], #248 -# CHECK-NEXT: [0,1] D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER stp d1, d2, [x27], #496 -# CHECK-NEXT: [0,3] .D=eER add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5003,18 +5591,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . stp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eE-R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeER stp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] . D==eE-R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eE-R stp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeE-R stp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5048,18 +5643,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeER. . stp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeER . stp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER. str b1, [x27], #254 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeER str h1, [x27], #254 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER. str b1, [x27], #254 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeER str h1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5093,18 +5695,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27], #254 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27], #254 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . str q1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER. str b1, [x27, #254]! -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER str h1, [x27, #254]! -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . str q1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER. str b1, [x27, #254]! +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER str h1, [x27, #254]! +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5138,18 +5747,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . str q1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eER . str w1, [x27], #254 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. str x1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . str q1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeER . str w1, [x27], #254 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. str x1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5183,18 +5799,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . str w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . str x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . strb w1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . strb w1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. strh w1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . str x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . strb w1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . strb w1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. strh w1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5228,10 +5851,17 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 0.7 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. strh w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5257,13 +5887,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D====eeeeER ldr x2, [x1], #254 -# CHECK-NEXT: [0,3] D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPeeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,3] DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-writeback.s index 5ffaf9138d482..9614f1ae908f7 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-writeback.s @@ -1191,19 +1191,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2s }, [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1237,19 +1244,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.16b }, [x27], #16 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1283,19 +1297,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1329,19 +1350,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1375,19 +1403,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1421,19 +1456,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1467,19 +1509,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1513,19 +1562,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1559,19 +1615,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1605,19 +1668,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1651,19 +1721,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeeeER. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,9] . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1697,19 +1774,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeeeER. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1743,19 +1827,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeER. . .. ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . .. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . .. ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . .. add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeeeER . .. ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R . .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D========eeeeeeeeER ld1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,9] . D=========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPeeeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,9] . DPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1789,19 +1880,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1835,19 +1933,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1881,19 +1986,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld1r { v1.2d }, [x27], #8 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld1r { v1.2s }, [x27], #4 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld1r { v1.4h }, [x27], #2 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld1r { v1.2d }, [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld1r { v1.2s }, [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld1r { v1.4h }, [x27], #2 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1927,19 +2039,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.4s }, [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.8b }, [x27], #1 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld1r { v1.8h }, [x27], #2 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld1r { v1.16b }, [x27], #1 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld1r { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.8b }, [x27], #1 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld1r { v1.8h }, [x27], #2 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld1r { v1.16b }, [x27], #1 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld1r { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1973,19 +2092,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld1r { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld1r { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld1r { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld1r { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld1r { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld1r { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2019,19 +2145,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] . D==eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] . DPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2065,19 +2198,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] .DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2111,19 +2251,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2157,19 +2304,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D=======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2203,19 +2357,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2249,19 +2410,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeER . . . . ld2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,3] D=========eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D================eeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,7] .D=================eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D================eeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 -# CHECK-NEXT: [0,9] . D=================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPeeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPeeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2295,19 +2463,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.2s, v2.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2341,19 +2516,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.16b, v2.16b }, [x27], #2 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2387,19 +2569,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2r { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2r { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2433,19 +2622,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2479,19 +2675,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2525,19 +2728,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D========eeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,7] . D=========eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===============eeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,9] . D================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPeeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,7] . DPPPPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2571,19 +2781,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2617,19 +2834,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2663,19 +2887,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2709,19 +2940,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2755,19 +2993,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2801,19 +3046,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER . . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE-------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER . . ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,5] . D==eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeER . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,7] . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,9] . D====eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DP=eeeeeeeeER . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP=eeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2847,19 +3099,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER . . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE-------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeeER . ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,5] . D===eE-------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeeER . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE-------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeeeER ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeeER . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeeeER ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2893,19 +3152,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER . . ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER. . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeeER . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE-------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeeeeER ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeeER . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeeeeER ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2939,19 +3205,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2985,19 +3258,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3031,19 +3311,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeER . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=======eeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,5] . D========eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=========eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,7] . D==========eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=========eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 -# CHECK-NEXT: [0,9] . D==========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPeeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,5] . DPPPPPPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPP==eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPeeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3077,19 +3364,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER. . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #4 -# CHECK-NEXT: [0,5] . D===eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeER . ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #8 -# CHECK-NEXT: [0,7] . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #4 -# CHECK-NEXT: [0,9] . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeER . ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #8 +# CHECK-NEXT: [0,7] . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #4 +# CHECK-NEXT: [0,9] . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3123,19 +3417,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER. . ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3169,19 +3470,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE------R add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeE-R ldp s1, s2, [x27], #248 -# CHECK-NEXT: [0,7] . D===eE-----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeeeER ldp d1, d2, [x27], #496 -# CHECK-NEXT: [0,9] . D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeE-R ldp s1, s2, [x27], #248 +# CHECK-NEXT: [0,7] . DPPPeE-----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeeeeeER ldp d1, d2, [x27], #496 +# CHECK-NEXT: [0,9] . DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3215,19 +3523,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER.. ldp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] .D=eE----R.. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER. ldp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER ldp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] . D==eE----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeE-R ldp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . D==eE---R add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R.. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER. ldp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER ldp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,7] . DPPeE----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeE-R ldp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] . DPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3261,19 +3576,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . ldp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . . ldp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . . ldp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeER . ldpsw x1, x2, [x27], #248 -# CHECK-NEXT: [0,7] .D===eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D======eeeeeER ldpsw x1, x2, [x27, #248]! -# CHECK-NEXT: [0,9] . D=======eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . . ldp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . . ldp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeER . ldpsw x1, x2, [x27], #248 +# CHECK-NEXT: [0,7] .DPPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP====eeeeeER ldpsw x1, x2, [x27, #248]! +# CHECK-NEXT: [0,9] . DPPPPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3307,19 +3629,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ldr h1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ldr s1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ldr d1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ldr q1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ldr h1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ldr s1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ldr d1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ldr q1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3353,19 +3682,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ldr h1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ldr s1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ldr q1, [x27, #254]! -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ldr h1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ldr s1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ldr d1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ldr q1, [x27, #254]! +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3399,19 +3735,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrb w1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldr x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldr w1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldr x1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrb w1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3445,19 +3788,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrsb x1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrh w1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrh w1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldrsb w1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrsb x1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3491,19 +3841,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrsh w1, [x27, #254]! -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrsb x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrsh w1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldrsh x1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrsh w1, [x27, #254]! +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3537,18 +3894,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER. ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeE-R st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eE-R add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER. ldrsw x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER ldrsw x1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeE-R st1 { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeE-R add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3582,18 +3946,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.8b }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3627,18 +3998,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3672,18 +4050,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3717,18 +4102,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3762,18 +4154,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER. st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER. st1 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3807,18 +4206,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3852,18 +4258,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3897,18 +4310,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3942,18 +4362,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3987,19 +4414,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,5] . D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4033,19 +4467,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,1] D=eER. .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER .. st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeER .. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,5] . D==eER .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER .. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,7] . D==eER .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D====eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER .. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,7] . DPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP==eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4079,18 +4520,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4124,19 +4572,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeER . st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,5] . D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeER. st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,7] . D====eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeER st1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPeeeeER. st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,7] . DPPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeeeER st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4170,19 +4625,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st1 { v1.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4216,19 +4678,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st1 { v1.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4262,19 +4731,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4308,19 +4784,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER. st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER. st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4354,19 +4837,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4400,19 +4890,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.h, v2.h }[0], [x27], #4 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4446,19 +4943,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st2 { v1.s, v2.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4492,19 +4996,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . st2g x26, [x27], #4064 -# CHECK-NEXT: [0,1] D=eER. . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . . st2g x26, [x27, #4064]! -# CHECK-NEXT: [0,3] D==eER . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,9] . D===eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . . st2g x26, [x27, #4064]! +# CHECK-NEXT: [0,3] DPPeER . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,7] . DPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,9] . DPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4538,19 +5049,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4584,19 +5102,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeER . . st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeER . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE---R . add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE---R . add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE----R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4630,19 +5155,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . st3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . st3 { v1.b, v2.b, v3.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4676,19 +5208,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4722,19 +5261,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeER . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,7] . D==eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeER . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,7] . DPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4768,19 +5314,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER .. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,3] . DeE-----R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER .. st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,5] . D=eE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . D==eeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . .D=eeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,9] . . D=eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . .DPeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,9] . . DPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4814,19 +5367,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4860,7 +5420,14 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 @@ -4868,11 +5435,11 @@ add x0, x27, 1 # CHECK-NEXT: [0,2] . DeeeeeeeER . . st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 # CHECK-NEXT: [0,3] . DeE-----R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeER. . st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,5] . D===eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,7] . D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . .D===eeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPP=eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,7] . DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . .DPPPeeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4906,19 +5473,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,5] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4952,19 +5526,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,1] D=eE----R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,5] . D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE--R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eE-R stg x26, [x27], #4064 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eE-R stg x26, [x27], #4064 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4998,18 +5579,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stg x26, [x27, #4064]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stgp x1, x2, [x27], #992 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . stgp x1, x2, [x27, #992]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. stp s1, s2, [x27], #248 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER stp d1, d2, [x27], #496 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stgp x1, x2, [x27], #992 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . stgp x1, x2, [x27, #992]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. stp s1, s2, [x27], #248 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER stp d1, d2, [x27], #496 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5043,19 +5631,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . stp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,2] D==eeER . stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeER . stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] .D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeER . stp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] . D====eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eER. stp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . D=====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPeeER . stp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPeeER . stp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPeeER . stp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,7] . DPPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPeER. stp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] . DPPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5089,18 +5684,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . stp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. str b1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER str h1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . stp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. str b1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER str h1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5134,18 +5736,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27], #254 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27], #254 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . str q1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. str b1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER str h1, [x27, #254]! -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . str q1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. str b1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER str h1, [x27, #254]! +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5179,18 +5788,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . str q1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . str w1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. str x1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . str q1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . str w1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. str x1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5224,18 +5840,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . str w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . str x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . strb w1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . strb w1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. strh w1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . str x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . strb w1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . strb w1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. strh w1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5269,18 +5892,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . strh w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stz2g x26, [x27], #4064 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . stz2g x26, [x27, #4064]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . stzg x26, [x27], #4064 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. stzg x26, [x27, #4064]! -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stz2g x26, [x27], #4064 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . stz2g x26, [x27, #4064]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . stzg x26, [x27], #4064 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. stzg x26, [x27, #4064]! +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5314,13 +5944,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D====eeeeER ldr x2, [x1], #254 -# CHECK-NEXT: [0,3] D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPeeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,3] DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-writeback.s index 46bea36d38eb8..718c4f3d7539c 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-writeback.s @@ -1191,19 +1191,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2s }, [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1237,19 +1244,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.16b }, [x27], #16 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1283,19 +1297,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1329,19 +1350,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1375,19 +1403,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1421,19 +1456,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1467,19 +1509,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1513,19 +1562,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1559,19 +1615,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1605,19 +1668,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,9] . D===eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1651,19 +1721,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeeeER. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,9] . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1697,19 +1774,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeeeER. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1743,19 +1827,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeER. . .. ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . .. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeER . .. ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE-----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-----R . .. add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeeeeER . .. ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE-----R . .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D========eeeeeeeeER ld1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,9] . D=========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE-----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPeeeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,9] . DPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1789,19 +1880,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1835,19 +1933,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1881,19 +1986,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeE-R . ld1r { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,3] D==eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1r { v1.2d }, [x27], #8 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1r { v1.2s }, [x27], #4 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1r { v1.4h }, [x27], #2 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeE-R . ld1r { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1r { v1.2d }, [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1r { v1.2s }, [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1r { v1.4h }, [x27], #2 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1927,19 +2039,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1r { v1.4s }, [x27], #4 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1r { v1.8b }, [x27], #1 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1r { v1.8h }, [x27], #2 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1r { v1.16b }, [x27], #1 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1r { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1r { v1.8b }, [x27], #1 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1r { v1.8h }, [x27], #2 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1r { v1.16b }, [x27], #1 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1r { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1973,19 +2092,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1r { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1r { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1r { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1r { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1r { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1r { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1r { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1r { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1r { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2019,19 +2145,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1r { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1r { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1r { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2065,19 +2198,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2111,19 +2251,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2157,19 +2304,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2203,19 +2357,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2249,19 +2410,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeeeeER . . .. ld2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . .. ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,3] D=========eE------R . .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R add x0, x27, #1 -# CHECK-NEXT: [0,6] .D================eeeeeeE-R ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,7] .D=================eE-----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D================eeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 -# CHECK-NEXT: [0,9] . D=================eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . .. ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPeeeeeeE-R ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPeE-----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2295,19 +2463,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld2r { v1.2s, v2.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld2r { v1.4h, v2.4h }, [x27], #4 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld2r { v1.4h, v2.4h }, [x27], #4 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2341,19 +2516,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld2r { v1.16b, v2.16b }, [x27], #2 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld2r { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld2r { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2387,19 +2569,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. ld2r { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. .. ld2r { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER .. ld2r { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER .. ld2r { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE--------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. .. ld2r { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER .. ld2r { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER .. ld2r { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE--------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2433,19 +2622,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeeeER . ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE--------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeE-R . ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eE-------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE--------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeE-R . ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,7] . DPPeE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE--------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2479,19 +2675,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeeER . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE--------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeeER . . ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER . . ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER. . ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D==eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE--------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER. . ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE--------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2525,19 +2728,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeER . . . .. ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeeER . . . .. ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--------R . . . .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--------R . . . .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeeeER . . .. ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE--------R . . .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==========eeeeeeeeER . .. ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,7] . D===========eE------R . .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=================eeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,9] . D==================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--------R . . .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPeeeeeeeeER . .. ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPeE------R . .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2571,19 +2781,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2617,19 +2834,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2663,19 +2887,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2709,19 +2940,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2755,19 +2993,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2801,19 +3046,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER .. ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,5] . D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . D==eeeeeeeeER. ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,7] . D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2847,19 +3099,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER. . ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,5] . D===eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeER . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeeeER ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeER . ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeeeER ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2893,19 +3152,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER. . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeER . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeeeER ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeER . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP==eeeeeeeeER ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2939,19 +3205,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2985,19 +3258,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3031,19 +3311,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeER . . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=======eeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,5] . D========eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=========eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,7] . D==========eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=========eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 -# CHECK-NEXT: [0,9] . D==========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPeeeeeeeeER. . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,5] . DPPPPPPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPP==eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPeeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3077,19 +3364,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER .. ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER .. ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #4 -# CHECK-NEXT: [0,5] . D==eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeeeER.. ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #8 -# CHECK-NEXT: [0,7] . D==eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #4 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeeeER.. ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #8 +# CHECK-NEXT: [0,7] . DPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #4 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3123,19 +3417,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . . ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeeeeeeeER. . ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE------R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeE------R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP=eeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3169,19 +3470,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D==eE------R add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeE-R ldp s1, s2, [x27], #248 -# CHECK-NEXT: [0,7] . D==eE-----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeeeER ldp d1, d2, [x27], #496 -# CHECK-NEXT: [0,9] . D==eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE------R add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeE-R ldp s1, s2, [x27], #248 +# CHECK-NEXT: [0,7] . DPPeE-----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeeeER ldp d1, d2, [x27], #496 +# CHECK-NEXT: [0,9] . DPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3215,19 +3523,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER.. ldp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] .D=eE----R.. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R.. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER. ldp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] . D=eE----R. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeER ldp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] . D=eE----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeE-R ldp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . D==eE---R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeE-R ldp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] . DPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3261,19 +3576,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldpsw x1, x2, [x27], #248 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldpsw x1, x2, [x27, #248]! -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldpsw x1, x2, [x27], #248 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldpsw x1, x2, [x27, #248]! +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3307,19 +3629,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ldr h1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ldr s1, [x27], #254 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ldr d1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ldr q1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ldr h1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ldr s1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ldr d1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ldr q1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3353,19 +3682,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ldr h1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ldr s1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ldr q1, [x27, #254]! -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ldr h1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ldr s1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ldr d1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ldr q1, [x27, #254]! +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3399,19 +3735,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrb w1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldr x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldr w1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldr x1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrb w1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3445,19 +3788,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrsb x1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrh w1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrh w1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldrsb w1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrsb x1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3491,19 +3841,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER ldrsh w1, [x27, #254]! -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrsb x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrsh w1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. ldrsh x1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER ldrsh w1, [x27, #254]! +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3537,18 +3894,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER. ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeE-R st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eE-R add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER. ldrsw x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER ldrsw x1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeE-R st1 { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeE-R add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3582,18 +3946,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.8b }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3627,18 +3998,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3672,18 +4050,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3717,18 +4102,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3762,18 +4154,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3807,18 +4206,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3852,18 +4258,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3897,18 +4310,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3942,18 +4362,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3987,18 +4414,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4032,18 +4466,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4077,18 +4518,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4122,18 +4570,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER. st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER. st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4167,18 +4622,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4212,18 +4674,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4257,18 +4726,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st2 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4302,18 +4778,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st2 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4347,18 +4830,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st2 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4392,18 +4882,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st2 { v1.h, v2.h }[0], [x27], #4 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4437,18 +4934,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st2 { v1.s, v2.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4482,19 +4986,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . .. st2g x26, [x27], #4064 -# CHECK-NEXT: [0,1] D=eER. .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. .. st2g x26, [x27, #4064]! -# CHECK-NEXT: [0,3] D==eER .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER .. st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,5] .D==eER .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER.. st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,7] . D==eE--R.. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. .. st2g x26, [x27, #4064]! +# CHECK-NEXT: [0,3] DPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER .. st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,5] .DPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER.. st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,7] . DPPeE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4528,19 +5039,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeER. st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,5] . D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeER st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,7] . D==eE--R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeER st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,7] . DPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DP=eeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4574,19 +5092,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER .. st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER .. st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeER.. st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE--R.. add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4620,18 +5145,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeE-R . st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,3] .D=eE-R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeER . st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,5] . D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeER. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeER. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4665,18 +5197,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4710,19 +5249,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,7] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,9] . D=eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4756,19 +5302,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER .. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER .. st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,5] . D=eE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . D=eeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,7] . D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,9] . D==eE--R add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4802,19 +5355,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE--R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE--R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE--R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4848,19 +5408,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeER . st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE--R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE--R . add x0, x27, #1 # CHECK-NEXT: [0,4] . D==eeER . st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,5] . D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,7] . D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,7] . DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4894,18 +5461,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D=eER add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4939,18 +5513,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeER . st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,5] . D=eER . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeER . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D=eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=eER. stg x26, [x27], #4064 -# CHECK-NEXT: [0,9] . D==eER add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPeER. stg x26, [x27], #4064 +# CHECK-NEXT: [0,9] . DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4984,18 +5565,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stg x26, [x27, #4064]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stgp x1, x2, [x27], #992 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . stgp x1, x2, [x27, #992]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. stp s1, s2, [x27], #248 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER stp d1, d2, [x27], #496 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stgp x1, x2, [x27], #992 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . stgp x1, x2, [x27, #992]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. stp s1, s2, [x27], #248 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER stp d1, d2, [x27], #496 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5029,18 +5617,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . stp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. stp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. stp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . stp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . stp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. stp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. stp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5074,18 +5669,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . stp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. str b1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeER str h1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . stp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. str b1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeER str h1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5119,18 +5721,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . str s1, [x27], #254 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27], #254 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . str q1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeER. str b1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eE-R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeER str h1, [x27, #254]! -# CHECK-NEXT: [0,9] . D===eE-R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . str q1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeER. str b1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeE-R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeER str h1, [x27, #254]! +# CHECK-NEXT: [0,9] . DPPPeE-R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5164,18 +5773,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeER . str s1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeER . str d1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE-R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . str q1, [x27, #254]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . str w1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. str x1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeER . str d1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE-R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . str q1, [x27, #254]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . str w1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. str x1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5209,18 +5825,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . str w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . str x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . strb w1, [x27], #254 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . strb w1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. strh w1, [x27], #254 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . str x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . strb w1, [x27], #254 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . strb w1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. strh w1, [x27], #254 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5254,18 +5877,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . strh w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stz2g x26, [x27], #4064 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eER . stz2g x26, [x27, #4064]! -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eER . stzg x26, [x27], #4064 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eER. stzg x26, [x27, #4064]! -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stz2g x26, [x27], #4064 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeER . stz2g x26, [x27, #4064]! +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeER . stzg x26, [x27], #4064 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeER. stzg x26, [x27, #4064]! +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5299,13 +5929,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D====eeeeER ldr x2, [x1], #254 -# CHECK-NEXT: [0,3] D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPeeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,3] DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s index 37ae765148396..2911162184594 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s @@ -105,16 +105,23 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - 0.22 0.22 0.28 0.28 - - - - add x0, x0, x0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldr w0, [sp] -# CHECK-NEXT: [0,1] D====eER. add x0, x0, x0 +# CHECK-NEXT: [0,1] DPPPPeER. add x0, x0, x0 # CHECK-NEXT: [1,0] DeeeeE-R. ldr w0, [sp] -# CHECK-NEXT: [1,1] D====eER. add x0, x0, x0 +# CHECK-NEXT: [1,1] DPPPPeER. add x0, x0, x0 # CHECK-NEXT: [2,0] DeeeeE-R. ldr w0, [sp] -# CHECK-NEXT: [2,1] D====eER. add x0, x0, x0 +# CHECK-NEXT: [2,1] DPPPPeER. add x0, x0, x0 # CHECK-NEXT: [3,0] D=eeeeER. ldr w0, [sp] -# CHECK-NEXT: [3,1] D=====eER add x0, x0, x0 +# CHECK-NEXT: [3,1] DPPPPPeER add x0, x0, x0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -181,17 +188,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr b0, [sp] -# CHECK-NEXT: [0,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [0,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr b0, [sp] -# CHECK-NEXT: [1,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [1,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr b0, [sp] -# CHECK-NEXT: [2,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [2,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr b0, [sp] -# CHECK-NEXT: [3,1] D=======eeER fadd d0, d0, d0 +# CHECK-NEXT: [3,1] DPPPPPPPeeER fadd d0, d0, d0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -258,17 +272,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr h0, [sp] -# CHECK-NEXT: [0,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [0,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr h0, [sp] -# CHECK-NEXT: [1,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [1,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr h0, [sp] -# CHECK-NEXT: [2,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [2,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr h0, [sp] -# CHECK-NEXT: [3,1] D=======eeER fadd d0, d0, d0 +# CHECK-NEXT: [3,1] DPPPPPPPeeER fadd d0, d0, d0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -335,17 +356,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr s0, [sp] -# CHECK-NEXT: [0,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [0,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr s0, [sp] -# CHECK-NEXT: [1,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [1,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr s0, [sp] -# CHECK-NEXT: [2,1] D======eeER. fadd d0, d0, d0 +# CHECK-NEXT: [2,1] DPPPPPPeeER. fadd d0, d0, d0 # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr s0, [sp] -# CHECK-NEXT: [3,1] D=======eeER fadd d0, d0, d0 +# CHECK-NEXT: [3,1] DPPPPPPPeeER fadd d0, d0, d0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -412,17 +440,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.16b, v0.16b, v0.16b # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [0,1] DPPPPPPeeER. add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [1,1] DPPPPPPeeER. add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [2,1] DPPPPPPeeER. add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [3,1] DPPPPPPPeeER add v0.16b, v0.16b, v0.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -489,17 +524,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8h, v0.8h, v0.8h # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add v0.8h, v0.8h, v0.8h +# CHECK-NEXT: [0,1] DPPPPPPeeER. add v0.8h, v0.8h, v0.8h # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add v0.8h, v0.8h, v0.8h +# CHECK-NEXT: [1,1] DPPPPPPeeER. add v0.8h, v0.8h, v0.8h # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add v0.8h, v0.8h, v0.8h +# CHECK-NEXT: [2,1] DPPPPPPeeER. add v0.8h, v0.8h, v0.8h # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add v0.8h, v0.8h, v0.8h +# CHECK-NEXT: [3,1] DPPPPPPPeeER add v0.8h, v0.8h, v0.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -566,17 +608,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.4s, v0.4s, v0.4s # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [0,1] DPPPPPPeeER. add v0.4s, v0.4s, v0.4s # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPeeER. add v0.4s, v0.4s, v0.4s # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [2,1] DPPPPPPeeER. add v0.4s, v0.4s, v0.4s # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [3,1] DPPPPPPPeeER add v0.4s, v0.4s, v0.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -643,17 +692,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.2d, v0.2d, v0.2d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add v0.2d, v0.2d, v0.2d # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add v0.2d, v0.2d, v0.2d # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add v0.2d, v0.2d, v0.2d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add v0.2d, v0.2d, v0.2d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -720,17 +776,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - add v0.16b, v0.16b, v0.16b # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . . mov v0.b[0], v1.b[1] -# CHECK-NEXT: [0,1] D==eeER . . . add v0.16b, v0.16b, v0.16b -# CHECK-NEXT: [1,0] D====eeER . . . mov v0.b[0], v1.b[1] -# CHECK-NEXT: [1,1] D======eeER . . add v0.16b, v0.16b, v0.16b -# CHECK-NEXT: [2,0] D========eeER . . mov v0.b[0], v1.b[1] -# CHECK-NEXT: [2,1] D==========eeER. . add v0.16b, v0.16b, v0.16b -# CHECK-NEXT: [3,0] D============eeER . mov v0.b[0], v1.b[1] -# CHECK-NEXT: [3,1] D==============eeER add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [0,1] DPPeeER . . . add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [1,0] DPPPPeeER . . . mov v0.b[0], v1.b[1] +# CHECK-NEXT: [1,1] DPPPPPPeeER . . add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [2,0] DPPPPPPPPeeER . . mov v0.b[0], v1.b[1] +# CHECK-NEXT: [2,1] DPPPPPPPPPPeeER. . add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [3,0] DPPPPPPPPPPPPeeER . mov v0.b[0], v1.b[1] +# CHECK-NEXT: [3,1] DPPPPPPPPPPPPPPeeER add v0.16b, v0.16b, v0.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -797,17 +860,24 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - add v0.16b, v0.16b, v0.16b # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v0.b }[0], [sp] -# CHECK-NEXT: [0,1] D========eeER . . . . . . . add v0.16b, v0.16b, v0.16b -# CHECK-NEXT: [1,0] D==========eeeeeeeeER . . . . . ld1 { v0.b }[0], [sp] -# CHECK-NEXT: [1,1] D==================eeER . . . . . add v0.16b, v0.16b, v0.16b -# CHECK-NEXT: [2,0] D====================eeeeeeeeER . . . ld1 { v0.b }[0], [sp] -# CHECK-NEXT: [2,1] D============================eeER . . . add v0.16b, v0.16b, v0.16b -# CHECK-NEXT: [3,0] D==============================eeeeeeeeER . ld1 { v0.b }[0], [sp] -# CHECK-NEXT: [3,1] D======================================eeER add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [0,1] DPPPPPPPPeeER . . . . . . . add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [1,0] DPPPPPPPPPPeeeeeeeeER . . . . . ld1 { v0.b }[0], [sp] +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeER . . . . . add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [2,0] DPPPPPPPPPPPPPPPPPPPPeeeeeeeeER . . . ld1 { v0.b }[0], [sp] +# CHECK-NEXT: [2,1] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . add v0.16b, v0.16b, v0.16b +# CHECK-NEXT: [3,0] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER . ld1 { v0.b }[0], [sp] +# CHECK-NEXT: [3,1] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER add v0.16b, v0.16b, v0.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s index a720a6bde305b..97d8c8483a017 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-forwarding.s @@ -244,17 +244,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . .. mul x0, x0, x0 -# CHECK-NEXT: [0,1] D==eeER . .. madd x0, x1, x2, x0 -# CHECK-NEXT: [0,2] D===eeER . .. madd x0, x1, x2, x0 -# CHECK-NEXT: [0,3] D=====eeER. .. madd x0, x0, x0, x0 -# CHECK-NEXT: [1,0] D=======eeER .. mul x0, x0, x0 -# CHECK-NEXT: [1,1] D=========eeER .. madd x0, x1, x2, x0 -# CHECK-NEXT: [1,2] D==========eeER.. madd x0, x1, x2, x0 -# CHECK-NEXT: [1,3] D============eeER madd x0, x0, x0, x0 +# CHECK-NEXT: [0,1] DPPeeER . .. madd x0, x1, x2, x0 +# CHECK-NEXT: [0,2] DPPPeeER . .. madd x0, x1, x2, x0 +# CHECK-NEXT: [0,3] DPPPPPeeER. .. madd x0, x0, x0, x0 +# CHECK-NEXT: [1,0] DPPPPPPPeeER .. mul x0, x0, x0 +# CHECK-NEXT: [1,1] DPPPPPPPPPeeER .. madd x0, x1, x2, x0 +# CHECK-NEXT: [1,2] DPPPPPPPPPPeeER.. madd x0, x1, x2, x0 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPeeER madd x0, x0, x0, x0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -282,17 +289,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . .. mul x0, x0, x0 -# CHECK-NEXT: [0,1] D==eeER . .. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [0,2] D===eeER . .. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [0,3] D=====eeER. .. smaddl x0, w0, w0, x0 -# CHECK-NEXT: [1,0] D=======eeER .. mul x0, x0, x0 -# CHECK-NEXT: [1,1] D=========eeER .. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [1,2] D==========eeER.. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [1,3] D============eeER smaddl x0, w0, w0, x0 +# CHECK-NEXT: [0,1] DPPeeER . .. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [0,2] DPPPeeER . .. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [0,3] DPPPPPeeER. .. smaddl x0, w0, w0, x0 +# CHECK-NEXT: [1,0] DPPPPPPPeeER .. mul x0, x0, x0 +# CHECK-NEXT: [1,1] DPPPPPPPPPeeER .. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [1,2] DPPPPPPPPPPeeER.. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPeeER smaddl x0, w0, w0, x0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -320,21 +334,28 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeER. . . . . . .. fadd d0, d0, d0 -# CHECK-NEXT: [0,1] D==eeeeER . . . . . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [0,2] D======eeeER . . . . .. fmul d0, d0, d0 -# CHECK-NEXT: [0,3] D=======eeeeER . . . . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [0,4] D=========eeeeER . . . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [0,5] D=============eeeeER. . . .. fmadd d0, d0, d1, d2 -# CHECK-NEXT: [1,0] D=================eeER . . .. fadd d0, d0, d0 -# CHECK-NEXT: [1,1] D===================eeeeER . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [1,2] D=======================eeeER . .. fmul d0, d0, d0 -# CHECK-NEXT: [1,3] D========================eeeeER .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [1,4] D==========================eeeeER .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [1,5] D==============================eeeeER fmadd d0, d0, d1, d2 +# CHECK-NEXT: [0,1] DPPeeeeER . . . . . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . . . .. fmul d0, d0, d0 +# CHECK-NEXT: [0,3] DPPPPPPPeeeeER . . . . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [0,4] DPPPPPPPPPeeeeER . . . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPeeeeER. . . .. fmadd d0, d0, d1, d2 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeER . . .. fadd d0, d0, d0 +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPeeeER . .. fmul d0, d0, d0 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [1,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [1,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER fmadd d0, d0, d1, d2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -364,17 +385,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,2] D=====eeeeER . . . . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,3] D=========eeeeER . . . saba v0.4s, v0.4s, v1.4s -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,2] D==================eeeeER. . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,3] D======================eeeeER saba v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . saba v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER saba v0.4s, v0.4s, v1.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -402,17 +430,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . sadalp v0.2d, v1.4s -# CHECK-NEXT: [0,2] D=====eeeeER . . . . sadalp v0.2d, v1.4s -# CHECK-NEXT: [0,3] D=========eeeeER . . . sadalp v0.2d, v0.4s -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . sadalp v0.2d, v1.4s -# CHECK-NEXT: [1,2] D==================eeeeER. . sadalp v0.2d, v1.4s -# CHECK-NEXT: [1,3] D======================eeeeER sadalp v0.2d, v0.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . sadalp v0.2d, v1.4s +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . sadalp v0.2d, v1.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . sadalp v0.2d, v0.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . sadalp v0.2d, v1.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . sadalp v0.2d, v1.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER sadalp v0.2d, v0.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -440,17 +475,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 0.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeER . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeER. . . . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,2] D=====eeeER . . . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,3] D========eeeER . . . sdot v0.4s, v0.16b, v1.16b -# CHECK-NEXT: [1,0] D===========eeeeER . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D===============eeeER . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,2] D================eeeER . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,3] D===================eeeER sdot v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [0,1] DPPPPeeeER. . . . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,2] DPPPPPeeeER . . . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . . sdot v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeER . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeER . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPeeeER . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPeeeER sdot v0.4s, v0.16b, v1.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -478,17 +520,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 0.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeER . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeER. . . . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,2] D=====eeeER . . . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,3] D========eeeER . . . smmla v0.4s, v0.16b, v1.16b -# CHECK-NEXT: [1,0] D===========eeeeER . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D===============eeeER . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,2] D================eeeER . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,3] D===================eeeER smmla v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [0,1] DPPPPeeeER. . . . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,2] DPPPPPeeeER . . . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . . smmla v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeER . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeER . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPeeeER . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPeeeER smmla v0.4s, v0.16b, v1.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -516,17 +565,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,2] D=====eeeeER . . . . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,3] D=========eeeeER . . . mla v0.4s, v0.4s, v1.4s -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,2] D==================eeeeER. . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,3] D======================eeeeER mla v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . mla v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER mla v0.4s, v0.4s, v1.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -554,17 +610,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D=====eeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D=========eeeeER . . . smlal2 v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D==================eeeeER. . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D======================eeeeER smlal2 v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . smlal2 v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER smlal2 v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -592,17 +655,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [0,2] D=====eeeeER . . . . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [0,3] D=========eeeeER . . . ssra v0.2d, v0.2d, #1 -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [1,2] D==================eeeeER. . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [1,3] D======================eeeeER ssra v0.2d, v0.2d, #1 +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . ssra v0.2d, v0.2d, #1 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER ssra v0.2d, v0.2d, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -630,17 +700,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [0,3] D=========eeeeER . . . fcmla v0.2d, v0.2d, v1.2d, #90 -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D================eeeeER . . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [1,2] D==================eeeeER. . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [1,3] D======================eeeeER fcmla v0.2d, v0.2d, v1.2d, #90 +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fcmla v0.2d, v0.2d, v1.2d, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fcmla v0.2d, v0.2d, v1.2d, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -668,21 +745,28 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . .. fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D=eeeeER . . . . . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [0,2] D=====eeER. . . . . .. fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,3] D=======eeeeER . . . . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [0,4] D=========eeeeER . . . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [0,5] D=============eeeeER. . . .. fmla v0.2d, v0.2d, v1.2d -# CHECK-NEXT: [1,0] D=================eeeER . . .. fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D==================eeeeER. . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [1,2] D======================eeER . .. fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,3] D========================eeeeER .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [1,4] D==========================eeeeER .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [1,5] D==============================eeeeER fmla v0.2d, v0.2d, v1.2d +# CHECK-NEXT: [0,1] DPeeeeER . . . . . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [0,2] DPPPPPeeER. . . . . .. fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [0,3] DPPPPPPPeeeeER . . . . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [0,4] DPPPPPPPPPeeeeER . . . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPeeeeER. . . .. fmla v0.2d, v0.2d, v1.2d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeeER . . .. fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeER. . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeER . .. fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [1,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [1,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER fmla v0.2d, v0.2d, v1.2d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -712,21 +796,28 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456 # CHECK: [0,0] DeeeER . . . . . . . .. fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . . .. fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [0,2] D========eeER . . . . . . .. fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . . .. fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [0,4] D============eeeeeER. . . . . .. fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [0,5] D=================eeeeeER. . . . .. fmlal v0.4s, v0.4h, v1.4h -# CHECK-NEXT: [1,0] D======================eeeER . . . .. fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D=========================eeeeeER . . .. fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [1,2] D==============================eeER. . .. fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,3] D================================eeeeeER. .. fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [1,4] D==================================eeeeeER .. fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [1,5] D=======================================eeeeeER fmlal v0.4s, v0.4h, v1.4h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . . .. fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [0,2] DPPPPPPPPeeER . . . . . . .. fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . . .. fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPeeeeeER. . . . . .. fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPPPPPeeeeeER. . . . .. fmlal v0.4s, v0.4h, v1.4h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPPPPPeeeER . . . .. fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . .. fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER. . .. fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER. .. fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [1,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER .. fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [1,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER fmlal v0.4s, v0.4h, v1.4h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -756,17 +847,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D=====eeeeER . . . . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D=========eeeeER . . . bfdot v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D================eeeeER . . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D==================eeeeER. . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D======================eeeeER bfdot v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . bfdot v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER bfdot v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -794,17 +892,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D======eeeeeER . . . . . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D===========eeeeeER . . . . bfmmla v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D================eeeER . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D===================eeeeeER . . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D======================eeeeeER. . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D===========================eeeeeER bfmmla v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPPeeeeeER . . . . . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeeeeeER . . . . bfmmla v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPeeeER . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeeER . . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfmmla v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -832,17 +937,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D=====eeeeER . . . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D=========eeeeER . . . bfmlalb v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D================eeeeER . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D==================eeeeER. . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D======================eeeeER bfmlalb v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . bfmlalb v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER bfmlalb v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -870,31 +982,38 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeER. . . . . . mul w0, w0, w0 -# CHECK-NEXT: [0,1] D==eeER . . . . . crc32cb w0, w0, w1 -# CHECK-NEXT: [0,2] D===eeER . . . . . crc32cb w0, w0, w1 -# CHECK-NEXT: [0,3] D=====eeER. . . . . crc32cb w0, w0, w0 -# CHECK-NEXT: [0,4] D======eeER . . . . crc32b w0, w0, w15 -# CHECK-NEXT: [0,5] D=======eeER . . . . crc32h w0, w0, w21 -# CHECK-NEXT: [0,6] D========eeER . . . . crc32w w0, w0, w24 -# CHECK-NEXT: [0,7] D=========eeER . . . . crc32x w0, w0, x25 -# CHECK-NEXT: [0,8] D==========eeER. . . . crc32ch w0, w0, w16 -# CHECK-NEXT: [0,9] D===========eeER . . . crc32cw w0, w0, w23 -# CHECK-NEXT: [0,10] D============eeER . . . crc32cx w0, w0, x5 -# CHECK-NEXT: [1,0] D==============eeER . . . mul w0, w0, w0 -# CHECK-NEXT: [1,1] D================eeER . . crc32cb w0, w0, w1 -# CHECK-NEXT: [1,2] D=================eeER . . crc32cb w0, w0, w1 -# CHECK-NEXT: [1,3] D===================eeER . . crc32cb w0, w0, w0 -# CHECK-NEXT: [1,4] .D===================eeER. . crc32b w0, w0, w15 -# CHECK-NEXT: [1,5] .D====================eeER . crc32h w0, w0, w21 -# CHECK-NEXT: [1,6] .D=====================eeER . crc32w w0, w0, w24 -# CHECK-NEXT: [1,7] .D======================eeER . crc32x w0, w0, x25 -# CHECK-NEXT: [1,8] .D=======================eeER . crc32ch w0, w0, w16 -# CHECK-NEXT: [1,9] .D========================eeER. crc32cw w0, w0, w23 -# CHECK-NEXT: [1,10] .D=========================eeER crc32cx w0, w0, x5 +# CHECK-NEXT: [0,1] DPPeeER . . . . . crc32cb w0, w0, w1 +# CHECK-NEXT: [0,2] DPPPeeER . . . . . crc32cb w0, w0, w1 +# CHECK-NEXT: [0,3] DPPPPPeeER. . . . . crc32cb w0, w0, w0 +# CHECK-NEXT: [0,4] DPPPPPPeeER . . . . crc32b w0, w0, w15 +# CHECK-NEXT: [0,5] DPPPPPPPeeER . . . . crc32h w0, w0, w21 +# CHECK-NEXT: [0,6] DPPPPPPPPeeER . . . . crc32w w0, w0, w24 +# CHECK-NEXT: [0,7] DPPPPPPPPPeeER . . . . crc32x w0, w0, x25 +# CHECK-NEXT: [0,8] DPPPPPPPPPPeeER. . . . crc32ch w0, w0, w16 +# CHECK-NEXT: [0,9] DPPPPPPPPPPPeeER . . . crc32cw w0, w0, w23 +# CHECK-NEXT: [0,10] DPPPPPPPPPPPPeeER . . . crc32cx w0, w0, x5 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeER . . . mul w0, w0, w0 +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeER . . crc32cb w0, w0, w1 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPeeER . . crc32cb w0, w0, w1 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPeeER . . crc32cb w0, w0, w0 +# CHECK-NEXT: [1,4] .DPPPPPPPPPPPPPPPPPPPeeER. . crc32b w0, w0, w15 +# CHECK-NEXT: [1,5] .DPPPPPPPPPPPPPPPPPPPPeeER . crc32h w0, w0, w21 +# CHECK-NEXT: [1,6] .DPPPPPPPPPPPPPPPPPPPPPeeER . crc32w w0, w0, w24 +# CHECK-NEXT: [1,7] .DPPPPPPPPPPPPPPPPPPPPPPeeER . crc32x w0, w0, x25 +# CHECK-NEXT: [1,8] .DPPPPPPPPPPPPPPPPPPPPPPPeeER . crc32ch w0, w0, w16 +# CHECK-NEXT: [1,9] .DPPPPPPPPPPPPPPPPPPPPPPPPeeER. crc32cw w0, w0, w23 +# CHECK-NEXT: [1,10] .DPPPPPPPPPPPPPPPPPPPPPPPPPeeER crc32cx w0, w0, x5 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -929,17 +1048,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeER . . .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [0,2] D======eeeER . . .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [0,3] D=========eeeER. . .. sdot z0.s, z0.b, z1.b -# CHECK-NEXT: [1,0] D============eeeeeER. .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D=================eeeER .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [1,2] D==================eeeER .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [1,3] D=====================eeeER sdot z0.s, z0.b, z1.b +# CHECK-NEXT: [0,1] DPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeER. . .. sdot z0.s, z0.b, z1.b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPeeeeeER. .. mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPeeeER sdot z0.s, z0.b, z1.b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -967,17 +1093,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeER . . .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [0,2] D======eeeER . . .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [0,3] D=========eeeER. . .. sdot z0.s, z0.b, z1.b[1] -# CHECK-NEXT: [1,0] D============eeeeeER. .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D=================eeeER .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [1,2] D==================eeeER .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [1,3] D=====================eeeER sdot z0.s, z0.b, z1.b[1] +# CHECK-NEXT: [0,1] DPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeER. . .. sdot z0.s, z0.b, z1.b[1] +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPeeeeeER. .. mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPeeeER sdot z0.s, z0.b, z1.b[1] # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1005,17 +1138,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [0,2] D======eeeeER . . . . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [0,3] D==========eeeeER . . . sdot z0.d, z0.h, z1.h -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [1,2] D====================eeeeER . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [1,3] D========================eeeeER sdot z0.d, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . sdot z0.d, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER sdot z0.d, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1043,17 +1183,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeER . . .. smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [0,2] D======eeeER . . .. smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [0,3] D=========eeeER. . .. smmla z0.s, z0.b, z1.b -# CHECK-NEXT: [1,0] D============eeeeeER. .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D=================eeeER .. smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [1,2] D==================eeeER .. smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [1,3] D=====================eeeER smmla z0.s, z0.b, z1.b +# CHECK-NEXT: [0,1] DPPPPPeeeER . . .. smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . .. smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeER. . .. smmla z0.s, z0.b, z1.b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPeeeeeER. .. mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeER .. smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeER .. smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPeeeER smmla z0.s, z0.b, z1.b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1081,17 +1228,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . .. mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,2] D=======eeeeeER. . . . .. mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,3] D============eeeeeER. . . .. mla z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: [1,0] D=================eeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D======================eeeeeER. .. mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,2] D========================eeeeeER .. mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] .D============================eeeeeER mla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . .. mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeER. . . . .. mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPeeeeeER. . . .. mla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. .. mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER .. mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,3] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER mla z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1119,17 +1273,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . .. mad z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,2] D=======eeeeeER. . . . .. mad z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,3] D============eeeeeER. . . .. mad z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: [1,0] D=================eeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D======================eeeeeER. .. mad z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,2] D========================eeeeeER .. mad z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] .D============================eeeeeER mad z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . .. mad z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeER. . . . .. mad z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPeeeeeER. . . .. mad z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. .. mad z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER .. mad z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,3] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER mad z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1157,17 +1318,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . .. msb z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,2] D=======eeeeeER. . . . .. msb z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,3] D============eeeeeER. . . .. msb z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: [1,0] D=================eeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: [1,1] D======================eeeeeER. .. msb z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,2] D========================eeeeeER .. msb z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] .D============================eeeeeER msb z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . .. msb z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeER. . . . .. msb z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPeeeeeER. . . .. msb z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeeeeER. . .. mul z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. .. msb z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER .. msb z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,3] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER msb z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1195,17 +1363,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . fcmla z0.d, p0/m, z0.d, z1.d, #90 -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D==================eeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [1,2] D====================eeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [1,3] D=========================eeeeeER fcmla z0.d, p0/m, z0.d, z1.d, #90 +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . fcmla z0.d, p0/m, z0.d, z1.d, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER fcmla z0.d, p0/m, z0.d, z1.d, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1233,17 +1408,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . fcmla z0.s, z0.s, z1.s[1], #90 -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D==================eeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [1,2] D====================eeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [1,3] D=========================eeeeeER fcmla z0.s, z0.s, z1.s[1], #90 +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . fcmla z0.s, z0.s, z1.s[1], #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER fcmla z0.s, z0.s, z1.s[1], #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1271,17 +1453,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,3] D=========eeeeER . . . fmla z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D================eeeeER . . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,2] D==================eeeeER. . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] D======================eeeeER fmla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fmla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fmla z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1309,17 +1498,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [0,3] D=========eeeeER . . . fmla z0.d, z0.d, z1.d[1] -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D================eeeeER . . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [1,2] D==================eeeeER. . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [1,3] D======================eeeeER fmla z0.d, z0.d, z1.d[1] +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fmla z0.d, z0.d, z1.d[1] +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fmla z0.d, z0.d, z1.d[1] # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1347,17 +1543,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D=====eeeeER . . . . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D=========eeeeER . . . bfdot z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D================eeeeER . . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D==================eeeeER. . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D======================eeeeER bfdot z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . bfdot z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER bfdot z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1385,17 +1588,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D======eeeeeER . . . . . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D===========eeeeeER . . . . bfmmla z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D================eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeeER . . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D======================eeeeeER. . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D===========================eeeeeER bfmmla z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPPeeeeeER . . . . . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeeeeeER . . . . bfmmla z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeeER . . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfmmla z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1423,17 +1633,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . bfmlalb z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D==================eeeeeER . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D====================eeeeeER . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D=========================eeeeeER bfmlalb z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . bfmlalb z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfmlalb z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-writeback.s index 264ad8bccc58e..517ef1ac71436 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-writeback.s @@ -1171,19 +1171,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,7] D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeeeER ld1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,9] D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2s }, [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ld1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,7] DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeeeER ld1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,9] DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1217,19 +1224,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,7] D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeeeER ld1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,9] D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.16b }, [x27], #16 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ld1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,7] DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeeeER ld1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,9] DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1263,19 +1277,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,7] D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeeeER ld1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,9] D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ld1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,7] DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeeeER ld1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,9] DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1309,19 +1330,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1355,19 +1383,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1401,19 +1436,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1447,19 +1489,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1493,19 +1542,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1539,19 +1595,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1585,19 +1648,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,9] .D====eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,9] .DPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1631,19 +1701,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeER . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,5] D===eE-----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,9] .D====eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeER . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,5] DPPPeE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,9] .DPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1677,19 +1754,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeER. ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeER. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeER. ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeER. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1723,19 +1807,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeeeeeeER. . . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE----R. . . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeER . . ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE-----R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D=========eeeeeeeeER ld1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,9] .D==========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . . ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE----R. . . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeER . . ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeER . . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE-----R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPPPPPPPeeeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,9] .DPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1769,19 +1860,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] D================eeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,5] D=================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] D========================eeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===============================eeeeeeeeER ld1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,9] .D================================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,9] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1815,19 +1913,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] D================eeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,5] D=================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] D========================eeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===============================eeeeeeeeER ld1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,9] .D================================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,9] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1861,19 +1966,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld1r { v1.2d }, [x27], #8 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeeeER. ld1r { v1.2s }, [x27], #4 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld1r { v1.4h }, [x27], #2 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld1r { v1.2d }, [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeeeER. ld1r { v1.2s }, [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld1r { v1.4h }, [x27], #2 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1907,19 +2019,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.4s }, [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.8b }, [x27], #1 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld1r { v1.8h }, [x27], #2 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeeeER. ld1r { v1.16b }, [x27], #1 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld1r { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.8b }, [x27], #1 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld1r { v1.8h }, [x27], #2 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeeeER. ld1r { v1.16b }, [x27], #1 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld1r { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1953,19 +2072,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld1r { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeeeER. ld1r { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld1r { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld1r { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeeeER. ld1r { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld1r { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1999,19 +2125,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld1r { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld1r { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2045,19 +2178,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2091,19 +2231,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2137,19 +2284,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] D================eeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===============================eeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] .D================================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2183,19 +2337,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] D================eeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] D=================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===============================eeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,9] .D================================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,9] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2229,19 +2390,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeER . . . . ld2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,3] D=========eE------R . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] D================eeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] D=================eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D================eeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,7] .D=================eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D=================eeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 -# CHECK-NEXT: [0,9] .D==================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPeeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPPPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPeeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPPPPPPPPPPPPPPPeeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2275,19 +2443,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.2s, v2.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2321,19 +2496,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.16b, v2.16b }, [x27], #2 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2367,19 +2549,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.8 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,5] D===eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld2r { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,9] .D====eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld2r { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,9] .DPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2413,19 +2602,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2459,19 +2655,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,3] .DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2505,19 +2708,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeER . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=========eeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,7] .D==========eE------R . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D================eeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,9] . D=================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPeeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPeE------R . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2551,19 +2761,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2597,19 +2814,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D========eeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,3] D=========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===============eeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D================eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D=======================eeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,7] .D========================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==============================eeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D===============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,3] DPPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2643,19 +2867,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2689,19 +2920,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2735,19 +2973,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE------R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeeeeeER. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE------R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeeeeeER. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2781,19 +3026,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER .. ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE-------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER .. ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,5] . D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeER .. ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,7] . D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,9] . D==eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2827,19 +3079,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER . ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-------R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeeER . ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,5] . D=eE-------R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE-------R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeeER. ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE-------R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-------R. add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeeeeER ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2873,19 +3132,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeeER .. ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-------R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-------R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER .. ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE------R .. add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeeER.. ld4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE-------R.. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE-------R.. add x0, x27, #1 # CHECK-NEXT: [0,8] . D=eeeeeeeeeER ld4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,9] . D==eE-------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPPeE-------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2919,19 +3185,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2965,19 +3238,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R . . . . . . add x0, x27, #1 -# CHECK-NEXT: [0,4] . D==============eeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,5] . D===============eE------R . . . . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=====================eeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,7] . D======================eE------R. . . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D============================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=============================eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R . . . . . . add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeE------R . . . . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPeE------R. . . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3011,19 +3291,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeeER . .. ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,1] D=eE------R . .. add x0, x27, #1 -# CHECK-NEXT: [0,2] .D=======eeeeeeeeER .. ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D========eE------R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] . D=======eeeeeeeeER.. ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,5] . D========eE------R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=======eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,7] . D========eE------R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=======eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 -# CHECK-NEXT: [0,9] . D========eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . .. add x0, x27, #1 +# CHECK-NEXT: [0,2] .DPPPPPPPeeeeeeeeER .. ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPeE------R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] . DPPPPPPPeeeeeeeeER.. ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,5] . DPPPPPPPPeE------R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPPPPPeeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPPPPPPPeE------R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPPPPeeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,9] . DPPPPPPPPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3057,19 +3344,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #16 -# CHECK-NEXT: [0,3] .D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #4 -# CHECK-NEXT: [0,5] . D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeER. ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #8 -# CHECK-NEXT: [0,7] . D=eE------R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE------R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #4 -# CHECK-NEXT: [0,9] . D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3103,19 +3397,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER . ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER . ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,6] . DeeeeeeeeER. ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,7] . D=eE------R. add x0, x27, #1 +# CHECK-NEXT: [0,7] . DPeE------R. add x0, x27, #1 # CHECK-NEXT: [0,8] . DeeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,9] . D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,9] . DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3149,19 +3450,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE------R . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE------R . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeeER. ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE------R. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE------R. add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,5] . D=eE------R add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeE-R ldp s1, s2, [x27], #248 -# CHECK-NEXT: [0,7] . D==eE-----R add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER ldp d1, d2, [x27], #496 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE------R add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeE-R ldp s1, s2, [x27], #248 +# CHECK-NEXT: [0,7] . DPPeE-----R add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER ldp d1, d2, [x27], #496 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3195,19 +3503,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER.. ldp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eE----R.. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER. ldp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER ldp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] D====eE----R add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeE-R ldp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER.. ldp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeE----R.. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER. ldp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,5] DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER ldp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,7] DPPPPeE----R add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeE-R ldp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3241,19 +3556,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. ldp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER .. ldp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER .. ldp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] D===eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeER. ldpsw x1, x2, [x27], #248 -# CHECK-NEXT: [0,7] D====eE---R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeeER ldpsw x1, x2, [x27, #248]! -# CHECK-NEXT: [0,9] .D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER .. ldp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER .. ldp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] DPPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeER. ldpsw x1, x2, [x27], #248 +# CHECK-NEXT: [0,7] DPPPPeE---R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeeER ldpsw x1, x2, [x27, #248]! +# CHECK-NEXT: [0,9] .DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3287,19 +3609,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ldr h1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ldr s1, [x27], #254 -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ldr d1, [x27], #254 -# CHECK-NEXT: [0,7] D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeeeER ldr q1, [x27], #254 -# CHECK-NEXT: [0,9] D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ldr h1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ldr s1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ldr d1, [x27], #254 +# CHECK-NEXT: [0,7] DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeeeER ldr q1, [x27], #254 +# CHECK-NEXT: [0,9] DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3333,19 +3662,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . ldr h1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeeeER . ldr s1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,7] D====eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeeeER ldr q1, [x27, #254]! -# CHECK-NEXT: [0,9] D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . ldr h1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeeeER . ldr s1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeeeER. ldr d1, [x27, #254]! +# CHECK-NEXT: [0,7] DPPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeeeER ldr q1, [x27, #254]! +# CHECK-NEXT: [0,9] DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3379,19 +3715,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,7] D====eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeER ldrb w1, [x27], #254 -# CHECK-NEXT: [0,9] D=====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldr x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldr w1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. ldr x1, [x27, #254]! +# CHECK-NEXT: [0,7] DPPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeER ldrb w1, [x27], #254 +# CHECK-NEXT: [0,9] DPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3425,19 +3768,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,7] D====eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeER ldrsb x1, [x27], #254 -# CHECK-NEXT: [0,9] D=====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrh w1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrh w1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. ldrsb w1, [x27], #254 +# CHECK-NEXT: [0,7] DPPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeER ldrsb x1, [x27], #254 +# CHECK-NEXT: [0,9] DPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3471,19 +3821,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,7] D====eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] D====eeeeER ldrsh w1, [x27, #254]! -# CHECK-NEXT: [0,9] D=====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . ldrsb x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . ldrsh w1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. ldrsh x1, [x27], #254 +# CHECK-NEXT: [0,7] DPPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] DPPPPeeeeER ldrsh w1, [x27, #254]! +# CHECK-NEXT: [0,9] DPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3517,18 +3874,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER. ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,3] D==eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eE--R add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeE-R st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,7] D====eE-R add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER. ldrsw x1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER ldrsw x1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeE--R add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeE-R st1 { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,7] DPPPPeE-R add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3562,18 +3926,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . st1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeER. st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . st1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeER. st1 { v1.8b }, [x27], #8 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3607,18 +3978,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . st1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeER. st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . st1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeER. st1 { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3652,18 +4030,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . st1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeER. st1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . st1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeER. st1 { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3697,18 +4082,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . st1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3742,18 +4134,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . st1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3787,18 +4186,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER st1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . st1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. st1 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER st1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3832,18 +4238,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,7] .D====eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,9] . D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPP=eeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,7] .DPPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,9] . DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3877,18 +4290,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,7] .D====eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPP=eeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3922,18 +4342,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeER . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeER . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP=eeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3967,19 +4394,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,5] .D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,7] . D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,9] . D=====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,5] .DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,7] . DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPP=eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4013,19 +4447,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,1] D=eER. .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER .. st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] .D=eER .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeER .. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,5] .D===eER .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeER .. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,7] . D===eER .. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D=====eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER .. st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,3] .DPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeER .. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,5] .DPPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeER .. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,7] . DPPPeER .. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPP==eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4059,18 +4500,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] .D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D==eeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D===eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPeeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4104,19 +4552,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eER. . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeER . . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eER . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===eeeeER . st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,5] .D====eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeER. st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,7] . D====eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeER st1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeER . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP==eeeeER . st1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,5] .DPPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPeeeeER. st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,7] . DPPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPPeeeeER st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4150,19 +4605,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. st1 { v1.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4196,19 +4658,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. st1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. st1 { v1.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4242,19 +4711,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st2 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4288,19 +4764,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st2 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4334,19 +4817,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st2 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4380,19 +4870,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. st2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st2 { v1.h, v2.h }[0], [x27], #4 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. st2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4426,19 +4923,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeeeER . st2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,5] D===eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeeeER. st2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeeeER st2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,9] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeeeER . st2 { v1.s, v2.s }[0], [x27], x28 +# CHECK-NEXT: [0,5] DPPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeeeER. st2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeeeER st2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,9] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4472,14 +4976,21 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,5] .D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,5] .DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4509,19 +5020,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,1] D=eE---R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeeeeER . st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,5] .D===eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,7] . D===eE---R . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,3] DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeeeeER . st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,5] .DPPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPeeeeeER . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,7] . DPPPeE---R . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPP=eeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4555,19 +5073,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . . st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeER. . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,5] .D==eE---R. . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,9] . D====eE---R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . . st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeER. . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE---R. . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPP=eeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeE---R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4601,19 +5126,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE---R .. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER .. st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,3] D==eE--R .. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeeeER.. st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,5] .D===eE--R.. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeeeER. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D====eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,9] . D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE---R .. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER .. st3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,3] DPPeE--R .. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeeeER.. st3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,5] .DPPPeE--R.. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPeeeeER. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4647,19 +5179,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,3] D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. st3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,7] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,9] . D===eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,3] DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. st3 { v1.h, v2.h, v3.h }[4], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,9] . DPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4693,19 +5232,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,3] D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,5] .D==eE--R . . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeeeER. . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,7] . D==eE--R. . add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,9] . D===eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,3] DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeER . . st3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,5] .DPPeE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeeeER. . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,7] . DPPeE--R. . add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,9] . DPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4739,19 +5285,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eE----R . .. add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . .. add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER .. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,3] .D=eE-----R .. add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R .. add x0, x27, #1 # CHECK-NEXT: [0,4] . D=eeeeeeER .. st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,5] . D==eE----R .. add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,7] . D====eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,9] . D====eE-----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPPeE----R .. add x0, x27, #1 +# CHECK-NEXT: [0,6] . DP==eeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,7] . DPPPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,9] . DPPPPeE-----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4785,19 +5338,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 9.5 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE--R . . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeER. . st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D===eeeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,5] . D===eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,7] . D====eE-----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D====eeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,9] . D=====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP==eeeeeeER . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,5] . DPPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPPPeeeeeeeER. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,7] . DPPPPeE-----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPP=eeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4831,19 +5391,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eE-----R. . add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE-----R. . add x0, x27, #1 # CHECK-NEXT: [0,2] .DeeeeeeeER . st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=eE-----R . add x0, x27, #1 +# CHECK-NEXT: [0,3] .DPeE-----R . add x0, x27, #1 # CHECK-NEXT: [0,4] . DeeeeeeER . st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,5] . D=eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D===eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,7] . D===eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D===eeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,9] . D====eE----R add x0, x27, #1 +# CHECK-NEXT: [0,5] . DPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DP==eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,7] . DPPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPPeeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,9] . DPPPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4877,19 +5444,26 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eE----R . . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,3] .D=eE----R. . add x0, x27, #1 -# CHECK-NEXT: [0,4] .D=eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,5] .D==eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,6] . D=eeeeeeER. st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,7] . D==eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,8] . D==eeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,9] . D==eE----R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,3] .DPeE----R. . add x0, x27, #1 +# CHECK-NEXT: [0,4] .DPeeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 +# CHECK-NEXT: [0,5] .DPPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,6] . DPeeeeeeER. st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,7] . DPPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,8] . DPPeeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,9] . DPPeE----R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4923,17 +5497,24 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,1] D=eE----R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeeeeeER. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=eE----R. add x0, x27, #1 -# CHECK-NEXT: [0,4] .D==eeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,5] .D===eE--R. add x0, x27, #1 -# CHECK-NEXT: [0,6] .D===eeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,7] .D====eE--R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE----R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeeeeeER. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPeE----R. add x0, x27, #1 +# CHECK-NEXT: [0,4] .DP=eeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 +# CHECK-NEXT: [0,5] .DPPPeE--R. add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPPeeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,7] .DPPPPeE--R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4965,12 +5546,19 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DeeER. stp s1, s2, [x27], #248 -# CHECK-NEXT: [0,1] D=eER. add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER stp d1, d2, [x27], #496 -# CHECK-NEXT: [0,3] D==eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER stp d1, d2, [x27], #496 +# CHECK-NEXT: [0,3] DPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -4998,18 +5586,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . stp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] .D==eeER. stp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eER. stp w1, w2, [x27], #248 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . stp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . stp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] .DPPeeER. stp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeER. stp w1, w2, [x27], #248 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5043,18 +5638,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . stp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eER . stp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeER. str b1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER str h1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . stp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeER . stp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeER. str b1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER str h1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5088,18 +5690,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27], #254 -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27], #254 -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . str q1, [x27], #254 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eeER. str b1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eeER str h1, [x27, #254]! -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27], #254 +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . str q1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeeER. str b1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeeER str h1, [x27, #254]! +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5133,18 +5742,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eeER . str d1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eeER . str q1, [x27, #254]! -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eER . str w1, [x27], #254 -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eER. str x1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeeER . str d1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeeER . str q1, [x27, #254]! +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeER . str w1, [x27], #254 +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeER. str x1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5178,18 +5794,25 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . str w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . add x0, x27, #1 -# CHECK-NEXT: [0,2] D=eER. . str x1, [x27, #254]! -# CHECK-NEXT: [0,3] D==eER . add x0, x27, #1 -# CHECK-NEXT: [0,4] D==eER . strb w1, [x27], #254 -# CHECK-NEXT: [0,5] D===eER . add x0, x27, #1 -# CHECK-NEXT: [0,6] D===eER . strb w1, [x27, #254]! -# CHECK-NEXT: [0,7] .D===eER. add x0, x27, #1 -# CHECK-NEXT: [0,8] .D===eER. strh w1, [x27], #254 -# CHECK-NEXT: [0,9] .D====eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER. . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPeER. . str x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,4] DPPeER . strb w1, [x27], #254 +# CHECK-NEXT: [0,5] DPPPeER . add x0, x27, #1 +# CHECK-NEXT: [0,6] DPPPeER . strb w1, [x27, #254]! +# CHECK-NEXT: [0,7] .DPPPeER. add x0, x27, #1 +# CHECK-NEXT: [0,8] .DPPPeER. strh w1, [x27], #254 +# CHECK-NEXT: [0,9] .DPPPPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5223,10 +5846,17 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 0.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. strh w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeER add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -5252,13 +5882,20 @@ add x0, x27, 1 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D=eE--R . add x0, x27, #1 -# CHECK-NEXT: [0,2] D====eeeeER ldr x2, [x1], #254 -# CHECK-NEXT: [0,3] D=eE------R add x0, x27, #1 +# CHECK-NEXT: [0,1] DPeE--R . add x0, x27, #1 +# CHECK-NEXT: [0,2] DPPPPeeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,3] DPeE------R add x0, x27, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s index 8b1c8a4e4ca55..4d50b38719e59 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s @@ -56,16 +56,23 @@ cmp x0, #4 # CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - 0.01 0.01 0.49 0.49 - - - - cmp x0, #4 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DeER . mov x0, x1 -# CHECK-NEXT: [0,1] D=eER. cmp x0, #4 +# CHECK-NEXT: [0,1] DPeER. cmp x0, #4 # CHECK-NEXT: [1,0] DeE-R. mov x0, x1 -# CHECK-NEXT: [1,1] D=eER. cmp x0, #4 +# CHECK-NEXT: [1,1] DPeER. cmp x0, #4 # CHECK-NEXT: [2,0] DeE-R. mov x0, x1 -# CHECK-NEXT: [2,1] D=eER. cmp x0, #4 +# CHECK-NEXT: [2,1] DPeER. cmp x0, #4 # CHECK-NEXT: [3,0] DeE-R. mov x0, x1 -# CHECK-NEXT: [3,1] D==eER cmp x0, #4 +# CHECK-NEXT: [3,1] DP=eER cmp x0, #4 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s index fbf65e26e99a5..117ab5b47d76e 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s @@ -107,17 +107,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr b0, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr b0, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr b0, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr b0, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -186,17 +193,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr h0, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr h0, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr h0, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr h0, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -265,17 +279,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr s0, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr s0, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr s0, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr s0, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -344,17 +365,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr d0, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr d0, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr d0, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr d0, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -423,17 +451,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldr q0, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ldr q0, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ldr q0, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ldr q0, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -502,17 +537,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.8b }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -581,17 +623,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.4h }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -660,17 +709,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.2s }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -739,17 +795,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [0,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [0,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [1,0] DeeeeeeE--R. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [1,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [2,0] DeeeeeeE--R. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [2,1] D======eeER. add z0.d, z0.d, z0.d +# CHECK-NEXT: [2,1] DPPPPPPeeER. add z0.d, z0.d, z0.d # CHECK-NEXT: [3,0] D=eeeeeeE-R. ld1 { v0.1d }, [sp] -# CHECK-NEXT: [3,1] D=======eeER add z0.d, z0.d, z0.d +# CHECK-NEXT: [3,1] DPPPPPPPeeER add z0.d, z0.d, z0.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -818,17 +881,24 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.33 - 0.33 0.34 add z0.s, z0.s, z0.s # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeER . . . . . . insr z0.s, w0 -# CHECK-NEXT: [0,1] D======eeER . . . . . add z0.s, z0.s, z0.s -# CHECK-NEXT: [1,0] D========eeeeeeER . . . . insr z0.s, w0 -# CHECK-NEXT: [1,1] D==============eeER . . . . add z0.s, z0.s, z0.s -# CHECK-NEXT: [2,0] D================eeeeeeER. . . insr z0.s, w0 -# CHECK-NEXT: [2,1] D======================eeER . . add z0.s, z0.s, z0.s -# CHECK-NEXT: [3,0] D========================eeeeeeER . insr z0.s, w0 -# CHECK-NEXT: [3,1] D==============================eeER add z0.s, z0.s, z0.s +# CHECK-NEXT: [0,1] DPPPPPPeeER . . . . . add z0.s, z0.s, z0.s +# CHECK-NEXT: [1,0] DPPPPPPPPeeeeeeER . . . . insr z0.s, w0 +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPeeER . . . . add z0.s, z0.s, z0.s +# CHECK-NEXT: [2,0] DPPPPPPPPPPPPPPPPeeeeeeER. . . insr z0.s, w0 +# CHECK-NEXT: [2,1] DPPPPPPPPPPPPPPPPPPPPPPeeER . . add z0.s, z0.s, z0.s +# CHECK-NEXT: [3,0] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . insr z0.s, w0 +# CHECK-NEXT: [3,1] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER add z0.s, z0.s, z0.s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-forwarding.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-forwarding.s index 0f5ab183f5358..63703783d7fd2 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-forwarding.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-forwarding.s @@ -321,17 +321,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . .. mul x0, x0, x0 -# CHECK-NEXT: [0,1] D==eeER . .. madd x0, x1, x2, x0 -# CHECK-NEXT: [0,2] D===eeER . .. madd x0, x1, x2, x0 -# CHECK-NEXT: [0,3] D=====eeER. .. madd x0, x0, x0, x0 -# CHECK-NEXT: [1,0] D=======eeER .. mul x0, x0, x0 -# CHECK-NEXT: [1,1] D=========eeER .. madd x0, x1, x2, x0 -# CHECK-NEXT: [1,2] D==========eeER.. madd x0, x1, x2, x0 -# CHECK-NEXT: [1,3] D============eeER madd x0, x0, x0, x0 +# CHECK-NEXT: [0,1] DPPeeER . .. madd x0, x1, x2, x0 +# CHECK-NEXT: [0,2] DPPPeeER . .. madd x0, x1, x2, x0 +# CHECK-NEXT: [0,3] DPPPPPeeER. .. madd x0, x0, x0, x0 +# CHECK-NEXT: [1,0] DPPPPPPPeeER .. mul x0, x0, x0 +# CHECK-NEXT: [1,1] DPPPPPPPPPeeER .. madd x0, x1, x2, x0 +# CHECK-NEXT: [1,2] DPPPPPPPPPPeeER.. madd x0, x1, x2, x0 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPeeER madd x0, x0, x0, x0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -359,17 +366,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . .. mul x0, x0, x0 -# CHECK-NEXT: [0,1] D==eeER . .. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [0,2] D===eeER . .. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [0,3] D=====eeER. .. smaddl x0, w0, w0, x0 -# CHECK-NEXT: [1,0] D=======eeER .. mul x0, x0, x0 -# CHECK-NEXT: [1,1] D=========eeER .. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [1,2] D==========eeER.. smaddl x0, w1, w2, x0 -# CHECK-NEXT: [1,3] D============eeER smaddl x0, w0, w0, x0 +# CHECK-NEXT: [0,1] DPPeeER . .. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [0,2] DPPPeeER . .. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [0,3] DPPPPPeeER. .. smaddl x0, w0, w0, x0 +# CHECK-NEXT: [1,0] DPPPPPPPeeER .. mul x0, x0, x0 +# CHECK-NEXT: [1,1] DPPPPPPPPPeeER .. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [1,2] DPPPPPPPPPPeeER.. smaddl x0, w1, w2, x0 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPeeER smaddl x0, w0, w0, x0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -397,21 +411,28 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeER. . . . . . .. fadd d0, d0, d0 -# CHECK-NEXT: [0,1] D==eeeeER . . . . . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [0,2] D======eeeER . . . . .. fmul d0, d0, d0 -# CHECK-NEXT: [0,3] D=======eeeeER . . . . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [0,4] D=========eeeeER . . . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [0,5] D=============eeeeER. . . .. fmadd d0, d0, d1, d2 -# CHECK-NEXT: [1,0] D=================eeER . . .. fadd d0, d0, d0 -# CHECK-NEXT: [1,1] D===================eeeeER . .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [1,2] D=======================eeeER . .. fmul d0, d0, d0 -# CHECK-NEXT: [1,3] D========================eeeeER .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [1,4] D==========================eeeeER .. fmadd d0, d1, d2, d0 -# CHECK-NEXT: [1,5] D==============================eeeeER fmadd d0, d0, d1, d2 +# CHECK-NEXT: [0,1] DPPeeeeER . . . . . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . . . .. fmul d0, d0, d0 +# CHECK-NEXT: [0,3] DPPPPPPPeeeeER . . . . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [0,4] DPPPPPPPPPeeeeER . . . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPeeeeER. . . .. fmadd d0, d0, d1, d2 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeER . . .. fadd d0, d0, d0 +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPeeeER . .. fmul d0, d0, d0 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [1,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmadd d0, d1, d2, d0 +# CHECK-NEXT: [1,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER fmadd d0, d0, d1, d2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -441,17 +462,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,2] D=====eeeeER . . . . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,3] D=========eeeeER . . . saba v0.4s, v0.4s, v1.4s -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,2] D==================eeeeER. . saba v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,3] D======================eeeeER saba v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . saba v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . saba v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER saba v0.4s, v0.4s, v1.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -479,17 +507,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 0.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeER . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeER. . . . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,2] D=====eeeER . . . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,3] D========eeeER . . . sdot v0.4s, v0.16b, v1.16b -# CHECK-NEXT: [1,0] D===========eeeeER . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D===============eeeER . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,2] D================eeeER . sdot v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,3] D===================eeeER sdot v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [0,1] DPPPPeeeER. . . . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,2] DPPPPPeeeER . . . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . . sdot v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeER . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeER . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPeeeER . sdot v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPeeeER sdot v0.4s, v0.16b, v1.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -517,17 +552,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 0.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeER . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeER. . . . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,2] D=====eeeER . . . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [0,3] D========eeeER . . . smmla v0.4s, v0.16b, v1.16b -# CHECK-NEXT: [1,0] D===========eeeeER . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D===============eeeER . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,2] D================eeeER . smmla v0.4s, v1.16b, v2.16b -# CHECK-NEXT: [1,3] D===================eeeER smmla v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [0,1] DPPPPeeeER. . . . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,2] DPPPPPeeeER . . . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . . smmla v0.4s, v0.16b, v1.16b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeER . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeER . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPeeeER . smmla v0.4s, v1.16b, v2.16b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPeeeER smmla v0.4s, v0.16b, v1.16b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -555,17 +597,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,2] D=====eeeeER . . . . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,3] D=========eeeeER . . . mla v0.4s, v0.4s, v1.4s -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,2] D==================eeeeER. . mla v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,3] D======================eeeeER mla v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . mla v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . mla v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER mla v0.4s, v0.4s, v1.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -593,17 +642,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . sqrdmlah v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,2] D======eeeeER . . . . sqrdmlah v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [0,3] D==========eeeeER . . . sqrdmlah v0.4s, v0.4s, v1.4s -# CHECK-NEXT: [1,0] D==============eeeeER . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D==================eeeeER. . sqrdmlah v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,2] D====================eeeeER . sqrdmlah v0.4s, v1.4s, v2.4s -# CHECK-NEXT: [1,3] D========================eeeeER sqrdmlah v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . sqrdmlah v0.4s, v0.4s, v1.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeER . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeER. . sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER sqrdmlah v0.4s, v0.4s, v1.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -631,17 +687,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D=====eeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D=========eeeeER . . . smlal2 v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D==================eeeeER. . smlal2 v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D======================eeeeER smlal2 v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . smlal2 v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . smlal2 v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER smlal2 v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -669,17 +732,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . sadalp v0.2d, v1.4s -# CHECK-NEXT: [0,2] D=====eeeeER . . . . sadalp v0.2d, v1.4s -# CHECK-NEXT: [0,3] D=========eeeeER . . . sadalp v0.2d, v0.4s -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . sadalp v0.2d, v1.4s -# CHECK-NEXT: [1,2] D==================eeeeER. . sadalp v0.2d, v1.4s -# CHECK-NEXT: [1,3] D======================eeeeER sadalp v0.2d, v0.4s +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . sadalp v0.2d, v1.4s +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . sadalp v0.2d, v1.4s +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . sadalp v0.2d, v0.4s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . sadalp v0.2d, v1.4s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . sadalp v0.2d, v1.4s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER sadalp v0.2d, v0.4s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -707,17 +777,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeER . . . . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D====eeeeER . . . . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [0,2] D=====eeeeER . . . . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [0,3] D=========eeeeER . . . ssra v0.2d, v0.2d, #1 -# CHECK-NEXT: [1,0] D=============eeeeER. . . mul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D=================eeeeER . . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [1,2] D==================eeeeER. . ssra v0.2d, v1.2d, #1 -# CHECK-NEXT: [1,3] D======================eeeeER ssra v0.2d, v0.2d, #1 +# CHECK-NEXT: [0,1] DPPPPeeeeER . . . . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . ssra v0.2d, v0.2d, #1 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeeER. . . mul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeeER . . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . ssra v0.2d, v1.2d, #1 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER ssra v0.2d, v0.2d, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -745,17 +822,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [0,3] D=========eeeeER . . . fcmla v0.2d, v0.2d, v1.2d, #90 -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul v0.4s, v0.4s, v0.4s -# CHECK-NEXT: [1,1] D================eeeeER . . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [1,2] D==================eeeeER. . fcmla v0.2d, v1.2d, v2.2d, #90 -# CHECK-NEXT: [1,3] D======================eeeeER fcmla v0.2d, v0.2d, v1.2d, #90 +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fcmla v0.2d, v0.2d, v1.2d, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul v0.4s, v0.4s, v0.4s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fcmla v0.2d, v1.2d, v2.2d, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fcmla v0.2d, v0.2d, v1.2d, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -783,21 +867,28 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . .. fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D=eeeeER . . . . . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [0,2] D=====eeER. . . . . .. fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,3] D=======eeeeER . . . . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [0,4] D=========eeeeER . . . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [0,5] D=============eeeeER. . . .. fmla v0.2d, v0.2d, v1.2d -# CHECK-NEXT: [1,0] D=================eeeER . . .. fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D==================eeeeER. . .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [1,2] D======================eeER . .. fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,3] D========================eeeeER .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [1,4] D==========================eeeeER .. fmla v0.2d, v1.2d, v2.2d -# CHECK-NEXT: [1,5] D==============================eeeeER fmla v0.2d, v0.2d, v1.2d +# CHECK-NEXT: [0,1] DPeeeeER . . . . . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [0,2] DPPPPPeeER. . . . . .. fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [0,3] DPPPPPPPeeeeER . . . . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [0,4] DPPPPPPPPPeeeeER . . . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPeeeeER. . . .. fmla v0.2d, v0.2d, v1.2d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPeeeER . . .. fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeER. . .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeER . .. fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [1,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER .. fmla v0.2d, v1.2d, v2.2d +# CHECK-NEXT: [1,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER fmla v0.2d, v0.2d, v1.2d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -827,21 +918,28 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0 # CHECK: [0,0] DeeeER . . . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . . . fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [0,2] D=======eeER . . . . . . fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,3] D=========eeeeER . . . . . fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [0,4] D===========eeeeER . . . . . fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [0,5] D===============eeeeER . . . . fmlal v0.4s, v0.4h, v1.4h -# CHECK-NEXT: [1,0] D===================eeeER. . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D======================eeeeER . . . fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [1,2] D==========================eeER . . fadd v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,3] D============================eeeeER. . fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [1,4] D==============================eeeeER . fmlal v0.4s, v1.4h, v2.4h -# CHECK-NEXT: [1,5] D==================================eeeeER fmlal v0.4s, v0.4h, v1.4h +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . . . fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [0,2] DPPPPPPPeeER . . . . . . fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . . . fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [0,4] DPPPPPPPPPPPeeeeER . . . . . fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [0,5] DPPPPPPPPPPPPPPPeeeeER . . . . fmlal v0.4s, v0.4h, v1.4h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPPeeeER. . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPeeeeER . . . fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . fadd v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER. . fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [1,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER . fmlal v0.4s, v1.4h, v2.4h +# CHECK-NEXT: [1,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER fmlal v0.4s, v0.4h, v1.4h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -871,17 +969,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D======eeeeeER . . . . . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D===========eeeeeER . . . . bfdot v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D================eeeER . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D===================eeeeeER . . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D======================eeeeeER. . bfdot v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D===========================eeeeeER bfdot v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPPeeeeeER . . . . . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeeeeeER . . . . bfdot v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPeeeER . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeeER . . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. . bfdot v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfdot v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -909,17 +1014,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0 # CHECK: [0,0] DeeeER . . . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeeeER . . . . . . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D=======eeeeeeER . . . . . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D=============eeeeeeER . . . . bfmmla v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D===================eeeER. . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D======================eeeeeeER . . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D==========================eeeeeeER. . bfmmla v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D================================eeeeeeER bfmmla v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPeeeeeeER . . . . . . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeeER . . . . . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPeeeeeeER . . . . bfmmla v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPPeeeER. . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER. . bfmmla v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER bfmmla v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -947,17 +1059,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . bfmlalb v0.4s, v0.8h, v1.8h -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul v0.2d, v0.2d, v0.2d -# CHECK-NEXT: [1,1] D==================eeeeeER . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,2] D====================eeeeeER . . bfmlalb v0.4s, v1.8h, v2.8h -# CHECK-NEXT: [1,3] D=========================eeeeeER bfmlalb v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . bfmlalb v0.4s, v0.8h, v1.8h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul v0.2d, v0.2d, v0.2d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . bfmlalb v0.4s, v1.8h, v2.8h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfmlalb v0.4s, v0.8h, v1.8h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -985,17 +1104,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . .. mul w0, w0, w0 -# CHECK-NEXT: [0,1] D==eeER . .. crc32b w0, w0, w1 -# CHECK-NEXT: [0,2] D===eeER . .. crc32b w0, w0, w1 -# CHECK-NEXT: [0,3] D=====eeER. .. crc32b w0, w0, w0 -# CHECK-NEXT: [1,0] D=======eeER .. mul w0, w0, w0 -# CHECK-NEXT: [1,1] D=========eeER .. crc32b w0, w0, w1 -# CHECK-NEXT: [1,2] D==========eeER.. crc32b w0, w0, w1 -# CHECK-NEXT: [1,3] D============eeER crc32b w0, w0, w0 +# CHECK-NEXT: [0,1] DPPeeER . .. crc32b w0, w0, w1 +# CHECK-NEXT: [0,2] DPPPeeER . .. crc32b w0, w0, w1 +# CHECK-NEXT: [0,3] DPPPPPeeER. .. crc32b w0, w0, w0 +# CHECK-NEXT: [1,0] DPPPPPPPeeER .. mul w0, w0, w0 +# CHECK-NEXT: [1,1] DPPPPPPPPPeeER .. crc32b w0, w0, w1 +# CHECK-NEXT: [1,2] DPPPPPPPPPPeeER.. crc32b w0, w0, w1 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPeeER crc32b w0, w0, w0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1023,17 +1149,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . saba z0.d, z1.d, z2.d -# CHECK-NEXT: [0,2] D======eeeeER . . . . saba z0.d, z1.d, z2.d -# CHECK-NEXT: [0,3] D==========eeeeER . . . saba z0.d, z0.d, z1.d -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . saba z0.d, z1.d, z2.d -# CHECK-NEXT: [1,2] D====================eeeeER . saba z0.d, z1.d, z2.d -# CHECK-NEXT: [1,3] D========================eeeeER saba z0.d, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . saba z0.d, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . saba z0.d, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . saba z0.d, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . saba z0.d, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . saba z0.d, z1.d, z2.d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER saba z0.d, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1061,17 +1194,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . sadalp z0.d, p0/m, z1.s -# CHECK-NEXT: [0,2] D======eeeeER . . . . sadalp z0.d, p0/m, z1.s -# CHECK-NEXT: [0,3] D==========eeeeER . . . sadalp z0.d, p0/m, z0.s -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . sadalp z0.d, p0/m, z1.s -# CHECK-NEXT: [1,2] D====================eeeeER . sadalp z0.d, p0/m, z1.s -# CHECK-NEXT: [1,3] D========================eeeeER sadalp z0.d, p0/m, z0.s +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . sadalp z0.d, p0/m, z1.s +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . sadalp z0.d, p0/m, z1.s +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . sadalp z0.d, p0/m, z0.s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . sadalp z0.d, p0/m, z1.s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . sadalp z0.d, p0/m, z1.s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER sadalp z0.d, p0/m, z0.s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1099,17 +1239,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . ssra z0.d, z1.d, #1 -# CHECK-NEXT: [0,2] D======eeeeER . . . . ssra z0.d, z1.d, #1 -# CHECK-NEXT: [0,3] D==========eeeeER . . . ssra z0.d, z0.d, #1 -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . ssra z0.d, z1.d, #1 -# CHECK-NEXT: [1,2] D====================eeeeER . ssra z0.d, z1.d, #1 -# CHECK-NEXT: [1,3] D========================eeeeER ssra z0.d, z0.d, #1 +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . ssra z0.d, z1.d, #1 +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . ssra z0.d, z1.d, #1 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . ssra z0.d, z0.d, #1 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . ssra z0.d, z1.d, #1 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . ssra z0.d, z1.d, #1 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER ssra z0.d, z0.d, #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1137,17 +1284,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeER . . .. cdot z0.s, z1.b, z2.b, #90 -# CHECK-NEXT: [0,2] D======eeeER . . .. cdot z0.s, z1.b, z2.b, #90 -# CHECK-NEXT: [0,3] D=========eeeER. . .. cdot z0.s, z0.b, z1.b, #90 -# CHECK-NEXT: [1,0] D============eeeeeER. .. mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D=================eeeER .. cdot z0.s, z1.b, z2.b, #90 -# CHECK-NEXT: [1,2] D==================eeeER .. cdot z0.s, z1.b, z2.b, #90 -# CHECK-NEXT: [1,3] D=====================eeeER cdot z0.s, z0.b, z1.b, #90 +# CHECK-NEXT: [0,1] DPPPPPeeeER . . .. cdot z0.s, z1.b, z2.b, #90 +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . .. cdot z0.s, z1.b, z2.b, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeER. . .. cdot z0.s, z0.b, z1.b, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPeeeeeER. .. mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeER .. cdot z0.s, z1.b, z2.b, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeER .. cdot z0.s, z1.b, z2.b, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPeeeER cdot z0.s, z0.b, z1.b, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1175,17 +1329,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . cdot z0.d, z1.h, z2.h, #90 -# CHECK-NEXT: [0,2] D======eeeeER . . . . cdot z0.d, z1.h, z2.h, #90 -# CHECK-NEXT: [0,3] D==========eeeeER . . . cdot z0.d, z0.h, z1.h, #90 -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . cdot z0.d, z1.h, z2.h, #90 -# CHECK-NEXT: [1,2] D====================eeeeER . cdot z0.d, z1.h, z2.h, #90 -# CHECK-NEXT: [1,3] D========================eeeeER cdot z0.d, z0.h, z1.h, #90 +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . cdot z0.d, z1.h, z2.h, #90 +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . cdot z0.d, z1.h, z2.h, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . cdot z0.d, z0.h, z1.h, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . cdot z0.d, z1.h, z2.h, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . cdot z0.d, z1.h, z2.h, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER cdot z0.d, z0.h, z1.h, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1213,17 +1374,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . cmla z0.b, z1.b, z2.b, #90 -# CHECK-NEXT: [0,2] D======eeeeER . . . . cmla z0.b, z1.b, z2.b, #90 -# CHECK-NEXT: [0,3] D==========eeeeER . . . cmla z0.b, z0.b, z1.b, #90 -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . cmla z0.b, z1.b, z2.b, #90 -# CHECK-NEXT: [1,2] D====================eeeeER . cmla z0.b, z1.b, z2.b, #90 -# CHECK-NEXT: [1,3] D========================eeeeER cmla z0.b, z0.b, z1.b, #90 +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . cmla z0.b, z1.b, z2.b, #90 +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . cmla z0.b, z1.b, z2.b, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . cmla z0.b, z0.b, z1.b, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . cmla z0.b, z1.b, z2.b, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . cmla z0.b, z1.b, z2.b, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER cmla z0.b, z0.b, z1.b, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1251,17 +1419,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345678 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . . . cmla z0.d, z1.d, z2.d, #90 -# CHECK-NEXT: [0,2] D========eeeeeER . . . . . cmla z0.d, z1.d, z2.d, #90 -# CHECK-NEXT: [0,3] D=============eeeeeER . . . . cmla z0.d, z0.d, z1.d, #90 -# CHECK-NEXT: [1,0] D==================eeeeeER . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D=======================eeeeeER . . cmla z0.d, z1.d, z2.d, #90 -# CHECK-NEXT: [1,2] D==========================eeeeeER . . cmla z0.d, z1.d, z2.d, #90 -# CHECK-NEXT: [1,3] D===============================eeeeeER cmla z0.d, z0.d, z1.d, #90 +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . . . cmla z0.d, z1.d, z2.d, #90 +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeER . . . . . cmla z0.d, z1.d, z2.d, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPeeeeeER . . . . cmla z0.d, z0.d, z1.d, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPeeeeeER . . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . cmla z0.d, z1.d, z2.d, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . cmla z0.d, z1.d, z2.d, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER cmla z0.d, z0.d, z1.d, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1289,17 +1464,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeER . . .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [0,2] D======eeeER . . .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [0,3] D=========eeeER. . .. sdot z0.s, z0.b, z1.b -# CHECK-NEXT: [1,0] D============eeeeeER. .. mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D=================eeeER .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [1,2] D==================eeeER .. sdot z0.s, z1.b, z2.b -# CHECK-NEXT: [1,3] D=====================eeeER sdot z0.s, z0.b, z1.b +# CHECK-NEXT: [0,1] DPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeER. . .. sdot z0.s, z0.b, z1.b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPeeeeeER. .. mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPeeeER sdot z0.s, z0.b, z1.b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1327,17 +1509,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeER . . .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [0,2] D======eeeER . . .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [0,3] D=========eeeER. . .. sdot z0.s, z0.b, z1.b[1] -# CHECK-NEXT: [1,0] D============eeeeeER. .. mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D=================eeeER .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [1,2] D==================eeeER .. sdot z0.s, z1.b, z2.b[1] -# CHECK-NEXT: [1,3] D=====================eeeER sdot z0.s, z0.b, z1.b[1] +# CHECK-NEXT: [0,1] DPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeER. . .. sdot z0.s, z0.b, z1.b[1] +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPeeeeeER. .. mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeER .. sdot z0.s, z1.b, z2.b[1] +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPeeeER sdot z0.s, z0.b, z1.b[1] # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1365,17 +1554,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [0,2] D======eeeeER . . . . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [0,3] D==========eeeeER . . . sdot z0.d, z0.h, z1.h -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [1,2] D====================eeeeER . sdot z0.d, z1.h, z2.h -# CHECK-NEXT: [1,3] D========================eeeeER sdot z0.d, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . sdot z0.d, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . sdot z0.d, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER sdot z0.d, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1403,17 +1599,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 0.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeER . . . . mul z0.s, z0.s, z0.s -# CHECK-NEXT: [0,1] D====eeeER. . . . smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [0,2] D=====eeeER . . . smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [0,3] D========eeeER . . . smmla z0.s, z0.b, z1.b -# CHECK-NEXT: [1,0] D===========eeeeER . . mul z0.s, z0.s, z0.s -# CHECK-NEXT: [1,1] D===============eeeER . smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [1,2] D================eeeER . smmla z0.s, z1.b, z2.b -# CHECK-NEXT: [1,3] D===================eeeER smmla z0.s, z0.b, z1.b +# CHECK-NEXT: [0,1] DPPPPeeeER. . . . smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [0,2] DPPPPPeeeER . . . smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . . smmla z0.s, z0.b, z1.b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeER . . mul z0.s, z0.s, z0.s +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeER . smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPeeeER . smmla z0.s, z1.b, z2.b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPeeeER smmla z0.s, z0.b, z1.b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1441,17 +1644,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . mla z0.b, p0/m, z1.b, z2.b -# CHECK-NEXT: [0,2] D======eeeeER . . . . mla z0.b, p0/m, z1.b, z2.b -# CHECK-NEXT: [0,3] D==========eeeeER . . . mla z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . mla z0.b, p0/m, z1.b, z2.b -# CHECK-NEXT: [1,2] D====================eeeeER . mla z0.b, p0/m, z1.b, z2.b -# CHECK-NEXT: [1,3] D========================eeeeER mla z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . mla z0.b, p0/m, z1.b, z2.b +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . mla z0.b, p0/m, z1.b, z2.b +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . mla z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . mla z0.b, p0/m, z1.b, z2.b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . mla z0.b, p0/m, z1.b, z2.b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER mla z0.b, p0/m, z0.b, z1.b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1479,17 +1689,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345678 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . . . mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,2] D========eeeeeER . . . . . mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,3] D=============eeeeeER . . . . mla z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: [1,0] D==================eeeeeER . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D=======================eeeeeER . . mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,2] D==========================eeeeeER . . mla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] D===============================eeeeeER mla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . . . mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeER . . . . . mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPeeeeeER . . . . mla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPeeeeeER . . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . mla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER mla z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1517,17 +1734,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . smlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [0,2] D======eeeeER . . . . smlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [0,3] D==========eeeeER . . . smlalb z0.d, z0.s, z1.s -# CHECK-NEXT: [1,0] D==============eeeeeER . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeER . smlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [1,2] D====================eeeeER . smlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [1,3] D========================eeeeER smlalb z0.d, z0.s, z1.s +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . smlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [0,2] DPPPPPPeeeeER . . . . smlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeER . . . smlalb z0.d, z0.s, z1.s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPeeeeeER . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeER . smlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeER . smlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeER smlalb z0.d, z0.s, z1.s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1555,17 +1779,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . . sqdmlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [0,2] D=======eeeeER . . . . . sqdmlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [0,3] D===========eeeeER . . . . sqdmlalb z0.d, z0.s, z1.s -# CHECK-NEXT: [1,0] D===============eeeeeER . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D====================eeeeER . . sqdmlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [1,2] D======================eeeeER . . sqdmlalb z0.d, z1.s, z2.s -# CHECK-NEXT: [1,3] D==========================eeeeER sqdmlalb z0.d, z0.s, z1.s +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . . sqdmlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [0,2] DPPPPPPPeeeeER . . . . . sqdmlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeeeeER . . . . sqdmlalb z0.d, z0.s, z1.s +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeeeER . . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPeeeeER . . sqdmlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeeeER . . sqdmlalb z0.d, z1.s, z2.s +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER sqdmlalb z0.d, z0.s, z1.s # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1593,17 +1824,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeER . . . . . sqrdmlah z0.b, z1.b, z2.b -# CHECK-NEXT: [0,2] D=======eeeeER . . . . . sqrdmlah z0.b, z1.b, z2.b -# CHECK-NEXT: [0,3] D===========eeeeER . . . . sqrdmlah z0.b, z0.b, z1.b -# CHECK-NEXT: [1,0] D===============eeeeeER . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D====================eeeeER . . sqrdmlah z0.b, z1.b, z2.b -# CHECK-NEXT: [1,2] D======================eeeeER . . sqrdmlah z0.b, z1.b, z2.b -# CHECK-NEXT: [1,3] D==========================eeeeER sqrdmlah z0.b, z0.b, z1.b +# CHECK-NEXT: [0,1] DPPPPPeeeeER . . . . . sqrdmlah z0.b, z1.b, z2.b +# CHECK-NEXT: [0,2] DPPPPPPPeeeeER . . . . . sqrdmlah z0.b, z1.b, z2.b +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeeeeER . . . . sqrdmlah z0.b, z0.b, z1.b +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeeeER . . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPeeeeER . . sqrdmlah z0.b, z1.b, z2.b +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeeeER . . sqrdmlah z0.b, z1.b, z2.b +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER sqrdmlah z0.b, z0.b, z1.b # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1631,17 +1869,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345678 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . . . sqrdmlah z0.d, z1.d, z2.d -# CHECK-NEXT: [0,2] D========eeeeeER . . . . . sqrdmlah z0.d, z1.d, z2.d -# CHECK-NEXT: [0,3] D=============eeeeeER . . . . sqrdmlah z0.d, z0.d, z1.d -# CHECK-NEXT: [1,0] D==================eeeeeER . . . mul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D=======================eeeeeER . . sqrdmlah z0.d, z1.d, z2.d -# CHECK-NEXT: [1,2] D==========================eeeeeER . . sqrdmlah z0.d, z1.d, z2.d -# CHECK-NEXT: [1,3] D===============================eeeeeER sqrdmlah z0.d, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . . . sqrdmlah z0.d, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPPPPeeeeeER . . . . . sqrdmlah z0.d, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPeeeeeER . . . . sqrdmlah z0.d, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPeeeeeER . . . mul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . sqrdmlah z0.d, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . sqrdmlah z0.d, z1.d, z2.d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER sqrdmlah z0.d, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1669,17 +1914,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . fcmla z0.d, p0/m, z0.d, z1.d, #90 -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D==================eeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [1,2] D====================eeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: [1,3] D=========================eeeeeER fcmla z0.d, p0/m, z0.d, z1.d, #90 +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . fcmla z0.d, p0/m, z0.d, z1.d, #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER fcmla z0.d, p0/m, z0.d, z1.d, #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1707,17 +1959,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . fcmla z0.s, z0.s, z1.s[1], #90 -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D==================eeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [1,2] D====================eeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 -# CHECK-NEXT: [1,3] D=========================eeeeeER fcmla z0.s, z0.s, z1.s[1], #90 +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . fcmla z0.s, z0.s, z1.s[1], #90 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . fcmla z0.s, z1.s, z2.s[1], #90 +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER fcmla z0.s, z0.s, z1.s[1], #90 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1745,17 +2004,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [0,3] D=========eeeeER . . . fmla z0.d, p0/m, z0.d, z1.d -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D================eeeeER . . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,2] D==================eeeeER. . fmla z0.d, p0/m, z1.d, z2.d -# CHECK-NEXT: [1,3] D======================eeeeER fmla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fmla z0.d, p0/m, z0.d, z1.d +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fmla z0.d, p0/m, z1.d, z2.d +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fmla z0.d, p0/m, z0.d, z1.d # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1783,17 +2049,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [0,3] D=========eeeeER . . . fmla z0.d, z0.d, z1.d[1] -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D================eeeeER . . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [1,2] D==================eeeeER. . fmla z0.d, z1.d, z2.d[1] -# CHECK-NEXT: [1,3] D======================eeeeER fmla z0.d, z0.d, z1.d[1] +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fmla z0.d, z0.d, z1.d[1] +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fmla z0.d, z1.d, z2.d[1] +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fmla z0.d, z0.d, z1.d[1] # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1821,17 +2094,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeER . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeER. . . . . fmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D=====eeeeER . . . . fmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D=========eeeeER . . . fmlalb z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D=============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D================eeeeER . . fmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D==================eeeeER. . fmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D======================eeeeER fmlalb z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeER. . . . . fmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPeeeeER . . . . fmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPeeeeER . . . fmlalb z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPeeeeER . . fmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPeeeeER. . fmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPeeeeER fmlalb z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1859,17 +2139,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D======eeeeeER . . . . . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D===========eeeeeER . . . . bfdot z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D================eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D===================eeeeeER . . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D======================eeeeeER. . bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D===========================eeeeeER bfdot z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPPeeeeeER . . . . . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeeeeeER . . . . bfdot z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPeeeeeER . . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPeeeeeER. . bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfdot z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1897,17 +2184,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0 # CHECK: [0,0] DeeeER . . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeeER . . . . . . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D=======eeeeeeER . . . . . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D=============eeeeeeER . . . . bfmmla z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D===================eeeER. . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D======================eeeeeeER . . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D==========================eeeeeeER. . bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D================================eeeeeeER bfmmla z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeeeER . . . . . . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPPPeeeeeeER . . . . . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPeeeeeeER . . . . bfmmla z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPPPPPeeeER. . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER. . bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER bfmmla z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1935,17 +2229,24 @@ bfmlalb z0.s, z0.h, z1.h # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [0,1] D===eeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [0,2] D=====eeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [0,3] D==========eeeeeER . . . . bfmlalb z0.s, z0.h, z1.h -# CHECK-NEXT: [1,0] D===============eeeER . . . fmul z0.d, z0.d, z0.d -# CHECK-NEXT: [1,1] D==================eeeeeER . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [1,2] D====================eeeeeER . . bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: [1,3] D=========================eeeeeER bfmlalb z0.s, z0.h, z1.h +# CHECK-NEXT: [0,1] DPPPeeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [0,2] DPPPPPeeeeeER . . . . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [0,3] DPPPPPPPPPPeeeeeER . . . . bfmlalb z0.s, z0.h, z1.h +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPPPeeeER . . . fmul z0.d, z0.d, z0.d +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPPPPeeeeeER . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [1,2] DPPPPPPPPPPPPPPPPPPPPeeeeeER . . bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: [1,3] DPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER bfmlalb z0.s, z0.h, z1.h # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-writeback.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-writeback.s index 1ef746813966d..e1bca680950e7 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-writeback.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-writeback.s @@ -739,14 +739,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.2d }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,4] D====eeeeeeER ld1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.2s }, [x27], #8 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ld1 { v1.4s }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -775,14 +782,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.8h }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,4] D====eeeeeeER ld1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.16b }, [x27], #16 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ld1 { v1.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -811,14 +825,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,4] D====eeeeeeER ld1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ld1 { v1.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -847,14 +868,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,4] D====eeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ld1 { v1.4h, v2.4h }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -883,14 +911,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,4] D====eeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ld1 { v1.1d, v2.1d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -919,14 +954,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,4] D====eeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ld1 { v1.8b, v2.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -955,14 +997,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,4] .D===eeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d }, [x27], #24 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,4] .DPPPeeeeeeER ld1 { v1.2s, v2.2s, v3.2s }, [x27], #24 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -991,14 +1040,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,4] .D===eeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,4] .DPPPeeeeeeER ld1 { v1.16b, v2.16b, v3.16b }, [x27], #48 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1027,14 +1083,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,4] .D===eeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.2s, v2.2s, v3.2s }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ld1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeeeeeER ld1 { v1.4s, v2.4s, v3.4s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1063,14 +1126,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ld1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeeER. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,4] .D===eeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ld1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ld1 { v1.16b, v2.16b, v3.16b }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeeER. ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeER ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1099,14 +1169,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeeeeER . ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,2] D==eeeeeeeER . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,3] .D===eeeeeeeER. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,4] .D====eeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,1] DPeeeeeeeER . ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,2] DPPeeeeeeeER . ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,3] .DPP=eeeeeeeER. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,4] .DPPPPeeeeeeeER ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1135,14 +1212,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,1] D=eeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,3] .D===eeeeeeeER. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,4] .D====eeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeER . ld1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeER . ld1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 +# CHECK-NEXT: [0,3] .DPP=eeeeeeeER. ld1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPPeeeeeeeER ld1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1171,14 +1255,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeER. . .. ld1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeER . .. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeER . .. ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 -# CHECK-NEXT: [0,3] .D===eeeeeeeER . .. ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,4] .D==========eeeeeeeeER ld1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,1] DPeeeeeeeER . .. ld1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeER . .. ld1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 +# CHECK-NEXT: [0,3] .DPP=eeeeeeeER . .. ld1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPeeeeeeeeER ld1 { v1.b }[0], [x27], #1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1207,14 +1298,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 -# CHECK-NEXT: [0,2] D================eeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,3] D========================eeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,4] D================================eeeeeeeeER ld1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,2] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.b }[8], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.h }[4], [x27], #2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1243,14 +1341,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 -# CHECK-NEXT: [0,2] D================eeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,3] D========================eeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,4] D================================eeeeeeeeER ld1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,2] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld1 { v1.s }[0], [x27], #4 +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,4] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld1 { v1.d }[0], [x27], #8 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1279,14 +1384,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld1r { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld1r { v1.2d }, [x27], #8 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld1r { v1.2s }, [x27], #4 -# CHECK-NEXT: [0,4] D====eeeeeeeeER ld1r { v1.4h }, [x27], #2 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld1r { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld1r { v1.2d }, [x27], #8 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld1r { v1.2s }, [x27], #4 +# CHECK-NEXT: [0,4] DPPPPeeeeeeeeER ld1r { v1.4h }, [x27], #2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1315,14 +1427,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.4s }, [x27], #4 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld1r { v1.8b }, [x27], #1 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld1r { v1.8h }, [x27], #2 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld1r { v1.16b }, [x27], #1 -# CHECK-NEXT: [0,4] D====eeeeeeeeER ld1r { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld1r { v1.8b }, [x27], #1 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld1r { v1.8h }, [x27], #2 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld1r { v1.16b }, [x27], #1 +# CHECK-NEXT: [0,4] DPPPPeeeeeeeeER ld1r { v1.1d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1351,14 +1470,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld1r { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld1r { v1.4h }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld1r { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,4] D====eeeeeeeeER ld1r { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld1r { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld1r { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld1r { v1.4s }, [x27], x28 +# CHECK-NEXT: [0,4] DPPPPeeeeeeeeER ld1r { v1.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1387,14 +1513,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld1r { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld1r { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,4] .D===eeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld1r { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld2 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeeER ld2 { v1.4h, v2.4h }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1423,14 +1556,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,4] .D===eeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld2 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeeER ld2 { v1.2d, v2.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1459,14 +1599,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,4] .D===eeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld2 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeeER ld2 { v1.8h, v2.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1495,14 +1642,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,2] D================eeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 -# CHECK-NEXT: [0,3] .D=======================eeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,4] .D===============================eeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,2] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.b, v2.b }[0], [x27], x28 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.b, v2.b }[8], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1531,14 +1685,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,2] D================eeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] D========================eeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,4] .D===============================eeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,2] DPPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld2 { v1.h, v2.h }[4], [x27], x28 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld2 { v1.s, v2.s }[0], [x27], #8 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1567,14 +1728,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeER . . . . ld2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . ld2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,2] D================eeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] D=================eeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 -# CHECK-NEXT: [0,4] .D=================eeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . ld2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,2] DPPPPPPPPPPPPPPPPeeeeeeeeER . ld2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPPPPPPPPPPPPPPPeeeeeeeeER. ld2r { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPPPPPPPeeeeeeeeER ld2r { v1.2d, v2.2d }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1603,14 +1771,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.2s, v2.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 -# CHECK-NEXT: [0,4] .D===eeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld2r { v1.4h, v2.4h }, [x27], #4 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], #8 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld2r { v1.8b, v2.8b }, [x27], #2 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeeER ld2r { v1.8h, v2.8h }, [x27], #4 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1639,14 +1814,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.16b, v2.16b }, [x27], #2 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,4] .D===eeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld2r { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld2r { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld2r { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeeER ld2r { v1.4h, v2.4h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1675,14 +1857,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.8 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld2r { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeeeeeER. ld2r { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,4] .D===eeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld2r { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeeeeeER . ld2r { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeeeeeER. ld2r { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeeeeeeeER ld3 { v1.2d, v2.2d, v3.2d }, [x27], #48 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1711,14 +1900,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . ld3 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld3 { v1.8b, v2.8b, v3.8b }, [x27], #24 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER ld3 { v1.8h, v2.8h, v3.8h }, [x27], #48 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1747,14 +1943,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . ld3 { v1.2s, v2.2s, v3.2s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER ld3 { v1.4s, v2.4s, v3.4s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1783,14 +1986,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeER . . . . ld3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D=========eeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,4] . D================eeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . . . . ld3 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . . . . ld3 { v1.16b, v2.16b, v3.16b }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPPeeeeeeeeER . . ld3 { v1.b, v2.b, v3.b }[0], [x27], #3 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.b, v2.b, v3.b }[8], [x27], #3 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1819,14 +2029,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 -# CHECK-NEXT: [0,2] .D===============eeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,3] .D=======================eeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,4] . D==============================eeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.h, v2.h, v3.h }[0], [x27], #6 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.h, v2.h, v3.h }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1855,14 +2072,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.8 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 -# CHECK-NEXT: [0,2] .D===============eeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=======================eeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,4] . D==============================eeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld3 { v1.s, v2.s, v3.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld3 { v1.d, v2.d, v3.d }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1891,14 +2115,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3r { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld3r { v1.2d, v2.2d, v3.2d }, [x27], #24 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], #12 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld3r { v1.4h, v2.4h, v3.4h }, [x27], #6 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER ld3r { v1.4s, v2.4s, v3.4s }, [x27], #12 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1927,14 +2158,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3r { v1.8b, v2.8b, v3.8b }, [x27], #3 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld3r { v1.8h, v2.8h, v3.8h }, [x27], #6 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . ld3r { v1.16b, v2.16b, v3.16b }, [x27], #3 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld3r { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER ld3r { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1963,14 +2201,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld3r { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeeeeeeeER. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeeeER . ld3r { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeeeeeER . ld3r { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeeeeeeeER. ld3r { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPeeeeeeeeER ld3r { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1999,14 +2244,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld3r { v1.16b, v2.16b, v3.16b }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeeeeER .. ld4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 # CHECK-NEXT: [0,2] . DeeeeeeeeER .. ld4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,3] . D=eeeeeeeeER .. ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 -# CHECK-NEXT: [0,4] . D==eeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 +# CHECK-NEXT: [0,3] . DPeeeeeeeeER .. ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,4] . DP=eeeeeeeeeER ld4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2035,7 +2287,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . . ld4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 @@ -2071,7 +2330,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER .. ld4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 @@ -2107,14 +2373,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,2] .D===============eeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D=======================eeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,4] . D==============================eeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2143,14 +2416,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeER . . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,1] D========eeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,2] .D===============eeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 -# CHECK-NEXT: [0,3] .D=======================eeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,4] . D==============================eeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER . . . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPPPPPPeeeeeeeeER . . . . ld4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER. . . ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeER ld4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2179,14 +2459,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeeeeER . .. ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,1] D========eeeeeeeeER .. ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,2] .D========eeeeeeeeER.. ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,3] . D========eeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 -# CHECK-NEXT: [0,4] . D========eeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 +# CHECK-NEXT: [0,1] DPPPPPPPPeeeeeeeeER .. ld4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,2] .DPPPPPPPPeeeeeeeeER.. ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,3] . DPPPPPPPPeeeeeeeeER. ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #32 +# CHECK-NEXT: [0,4] . DPPPPPPPPeeeeeeeeER ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2215,7 +2502,14 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #8 @@ -2251,14 +2545,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.7 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeeeER . ld4r { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,2] . DeeeeeeeeER . ld4r { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,4] . D==eeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,3] . DPeeeeeeeeER . ld4r { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,4] . DP=eeeeeeeeER ld4r { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2287,14 +2588,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.3 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . ld4r { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeeeER. ld4r { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 # CHECK-NEXT: [0,2] . DeeeeeeeeER ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,3] . D=eeeeeeE-R ldp s1, s2, [x27], #248 -# CHECK-NEXT: [0,4] . D=eeeeeeER ldp d1, d2, [x27], #496 +# CHECK-NEXT: [0,3] . DPeeeeeeE-R ldp s1, s2, [x27], #248 +# CHECK-NEXT: [0,4] . DPeeeeeeER ldp d1, d2, [x27], #496 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2323,14 +2631,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.3 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER .. ldp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D=eeeeeeER.. ldp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,2] D==eeeeeeER. ldp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,3] .D==eeeeeeER ldp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,4] .D===eeeeE-R ldp w1, w2, [x27], #248 +# CHECK-NEXT: [0,1] DPeeeeeeER.. ldp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,2] DPPeeeeeeER. ldp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,3] .DPPeeeeeeER ldp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,4] .DPPPeeeeE-R ldp w1, w2, [x27], #248 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2359,14 +2674,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. ldp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eeeeER .. ldp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,2] D==eeeeER .. ldp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,3] D===eeeeeER. ldpsw x1, x2, [x27], #248 -# CHECK-NEXT: [0,4] .D===eeeeeER ldpsw x1, x2, [x27, #248]! +# CHECK-NEXT: [0,1] DPeeeeER .. ldp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,2] DPPeeeeER .. ldp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,3] DPPPeeeeeER. ldpsw x1, x2, [x27], #248 +# CHECK-NEXT: [0,4] .DPPPeeeeeER ldpsw x1, x2, [x27, #248]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2395,14 +2717,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27], #254 -# CHECK-NEXT: [0,1] D=eeeeeeER. . ldr h1, [x27], #254 -# CHECK-NEXT: [0,2] D==eeeeeeER . ldr s1, [x27], #254 -# CHECK-NEXT: [0,3] D===eeeeeeER. ldr d1, [x27], #254 -# CHECK-NEXT: [0,4] D====eeeeeeER ldr q1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeeeeeER. . ldr h1, [x27], #254 +# CHECK-NEXT: [0,2] DPPeeeeeeER . ldr s1, [x27], #254 +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ldr d1, [x27], #254 +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ldr q1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2431,14 +2760,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . ldr b1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeeeER. . ldr h1, [x27, #254]! -# CHECK-NEXT: [0,2] D==eeeeeeER . ldr s1, [x27, #254]! -# CHECK-NEXT: [0,3] D===eeeeeeER. ldr d1, [x27, #254]! -# CHECK-NEXT: [0,4] D====eeeeeeER ldr q1, [x27, #254]! +# CHECK-NEXT: [0,1] DPeeeeeeER. . ldr h1, [x27, #254]! +# CHECK-NEXT: [0,2] DPPeeeeeeER . ldr s1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPPeeeeeeER. ldr d1, [x27, #254]! +# CHECK-NEXT: [0,4] DPPPPeeeeeeER ldr q1, [x27, #254]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2467,14 +2803,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr w1, [x27], #254 -# CHECK-NEXT: [0,1] D=eeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,2] D==eeeeER . ldr w1, [x27, #254]! -# CHECK-NEXT: [0,3] D===eeeeER. ldr x1, [x27, #254]! -# CHECK-NEXT: [0,4] D====eeeeER ldrb w1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeeeER . ldr x1, [x27], #254 +# CHECK-NEXT: [0,2] DPPeeeeER . ldr w1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPPeeeeER. ldr x1, [x27, #254]! +# CHECK-NEXT: [0,4] DPPPPeeeeER ldrb w1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2503,14 +2846,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeER . ldrh w1, [x27], #254 -# CHECK-NEXT: [0,2] D==eeeeER . ldrh w1, [x27, #254]! -# CHECK-NEXT: [0,3] D===eeeeER. ldrsb w1, [x27], #254 -# CHECK-NEXT: [0,4] D====eeeeER ldrsb x1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeeeER . ldrh w1, [x27], #254 +# CHECK-NEXT: [0,2] DPPeeeeER . ldrh w1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPPeeeeER. ldrsb w1, [x27], #254 +# CHECK-NEXT: [0,4] DPPPPeeeeER ldrsb x1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2539,14 +2889,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.7 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldrsb w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeER . ldrsb x1, [x27, #254]! -# CHECK-NEXT: [0,2] D==eeeeER . ldrsh w1, [x27], #254 -# CHECK-NEXT: [0,3] D===eeeeER. ldrsh x1, [x27], #254 -# CHECK-NEXT: [0,4] D====eeeeER ldrsh w1, [x27, #254]! +# CHECK-NEXT: [0,1] DPeeeeER . ldrsb x1, [x27, #254]! +# CHECK-NEXT: [0,2] DPPeeeeER . ldrsh w1, [x27], #254 +# CHECK-NEXT: [0,3] DPPPeeeeER. ldrsh x1, [x27], #254 +# CHECK-NEXT: [0,4] DPPPPeeeeER ldrsh w1, [x27, #254]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2575,13 +2932,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 1.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . ldrsh x1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeeeER. ldrsw x1, [x27], #254 -# CHECK-NEXT: [0,2] D==eeeeER ldrsw x1, [x27, #254]! -# CHECK-NEXT: [0,3] D===eeE-R st1 { v1.1d }, [x27], #8 -# CHECK-NEXT: [0,4] D====eeER st1 { v1.2d }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeeeER. ldrsw x1, [x27], #254 +# CHECK-NEXT: [0,2] DPPeeeeER ldrsw x1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPPeeE-R st1 { v1.1d }, [x27], #8 +# CHECK-NEXT: [0,4] DPPPPeeER st1 { v1.2d }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2610,13 +2974,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2s }, [x27], #8 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.4h }, [x27], #8 -# CHECK-NEXT: [0,2] D==eeER . st1 { v1.4s }, [x27], #16 -# CHECK-NEXT: [0,3] D===eeER. st1 { v1.8b }, [x27], #8 -# CHECK-NEXT: [0,4] D====eeER st1 { v1.8h }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.4h }, [x27], #8 +# CHECK-NEXT: [0,2] DPPeeER . st1 { v1.4s }, [x27], #16 +# CHECK-NEXT: [0,3] DPPPeeER. st1 { v1.8b }, [x27], #8 +# CHECK-NEXT: [0,4] DPPPPeeER st1 { v1.8h }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2645,13 +3016,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.16b }, [x27], #16 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.1d }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeER . st1 { v1.2d }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeER. st1 { v1.2s }, [x27], x28 -# CHECK-NEXT: [0,4] D====eeER st1 { v1.4h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.1d }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeER . st1 { v1.2d }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeER. st1 { v1.2s }, [x27], x28 +# CHECK-NEXT: [0,4] DPPPPeeER st1 { v1.4h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2680,13 +3058,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.8b }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeER . st1 { v1.8h }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeER. st1 { v1.16b }, [x27], x28 -# CHECK-NEXT: [0,4] D====eeER st1 { v1.1d, v2.1d }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.8b }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeER . st1 { v1.8h }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeER. st1 { v1.16b }, [x27], x28 +# CHECK-NEXT: [0,4] DPPPPeeER st1 { v1.1d, v2.1d }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2715,13 +3100,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeER . st1 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,3] D===eeER. st1 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,4] .D===eeER st1 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.2s, v2.2s }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeER . st1 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,3] DPPPeeER. st1 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,4] .DPPPeeER st1 { v1.8b, v2.8b }, [x27], #16 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2750,13 +3142,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.8h, v2.8h }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,2] D==eeER . st1 { v1.1d, v2.1d }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeER. st1 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,4] .D===eeER st1 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.16b, v2.16b }, [x27], #32 +# CHECK-NEXT: [0,2] DPPeeER . st1 { v1.1d, v2.1d }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeER. st1 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeER st1 { v1.2s, v2.2s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2785,13 +3184,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 4.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . st1 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.4s, v2.4s }, [x27], x28 -# CHECK-NEXT: [0,2] D==eeER . st1 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,3] D===eeER. st1 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,4] .D===eeER st1 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,2] DPPeeER . st1 { v1.8b, v2.8b }, [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeER. st1 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeER st1 { v1.16b, v2.16b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2820,13 +3226,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.1d, v2.1d, v3.1d }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,2] .D=eeER . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,3] .D===eeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 -# CHECK-NEXT: [0,4] . D===eeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,2] .DPeeER . st1 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,3] .DPP=eeER. st1 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,4] . DPPPeeER st1 { v1.4s, v2.4s, v3.4s }, [x27], #48 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2855,13 +3268,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.8b, v2.8b, v3.8b }, [x27], #24 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,2] .D=eeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,3] .D===eeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 -# CHECK-NEXT: [0,4] . D===eeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.8h, v2.8h, v3.8h }, [x27], #48 +# CHECK-NEXT: [0,2] .DPeeER . st1 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,3] .DPP=eeER. st1 { v1.1d, v2.1d, v3.1d }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPPeeER st1 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2890,13 +3310,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeER . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,3] .D==eeER . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,4] . D===eeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeER . st1 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPeeER . st1 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPP=eeER st1 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2925,14 +3352,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.16b, v2.16b, v3.16b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 -# CHECK-NEXT: [0,2] .D==eeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,3] .D===eeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 -# CHECK-NEXT: [0,4] . D====eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], #32 +# CHECK-NEXT: [0,2] .DP=eeER . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,3] .DPPPeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,4] . DPPP=eeER st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2961,14 +3395,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 -# CHECK-NEXT: [0,1] D=eeER .. st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,2] .D==eeER .. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,3] . D==eeER .. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 -# CHECK-NEXT: [0,4] . D=====eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER .. st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 +# CHECK-NEXT: [0,2] .DP=eeER .. st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,3] . DPPeeER .. st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,4] . DPPP==eeER st1 { v1.1d, v2.1d, v3.1d, v4.1d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -2997,13 +3438,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . st1 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 -# CHECK-NEXT: [0,2] .D==eeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,3] .D===eeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,4] . D===eeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeER . st1 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 +# CHECK-NEXT: [0,2] .DP=eeER . st1 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPPeeER. st1 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPPeeER st1 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3032,14 +3480,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . st1 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 # CHECK-NEXT: [0,1] .DeeER . . st1 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 -# CHECK-NEXT: [0,2] .D===eeeeER . st1 { v1.b }[0], [x27], #1 -# CHECK-NEXT: [0,3] . D===eeeeER. st1 { v1.b }[8], [x27], #1 -# CHECK-NEXT: [0,4] . D====eeeeER st1 { v1.b }[0], [x27], x28 +# CHECK-NEXT: [0,2] .DP==eeeeER . st1 { v1.b }[0], [x27], #1 +# CHECK-NEXT: [0,3] . DPPPeeeeER. st1 { v1.b }[8], [x27], #1 +# CHECK-NEXT: [0,4] . DPPPPeeeeER st1 { v1.b }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3068,14 +3523,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st1 { v1.h }[0], [x27], #2 -# CHECK-NEXT: [0,2] D==eeeeER . st1 { v1.h }[4], [x27], #2 -# CHECK-NEXT: [0,3] D===eeeeER. st1 { v1.h }[0], [x27], x28 -# CHECK-NEXT: [0,4] .D===eeeeER st1 { v1.h }[4], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st1 { v1.h }[0], [x27], #2 +# CHECK-NEXT: [0,2] DPPeeeeER . st1 { v1.h }[4], [x27], #2 +# CHECK-NEXT: [0,3] DPPPeeeeER. st1 { v1.h }[0], [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeeeER st1 { v1.h }[4], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3104,14 +3566,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 6.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st1 { v1.s }[0], [x27], #4 -# CHECK-NEXT: [0,1] D=eeeeER . st1 { v1.s }[0], [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeER . st1 { v1.d }[0], [x27], #8 -# CHECK-NEXT: [0,3] D===eeeeER. st1 { v1.d }[0], [x27], x28 -# CHECK-NEXT: [0,4] .D===eeeeER st2 { v1.2d, v2.2d }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeeER . st1 { v1.s }[0], [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeER . st1 { v1.d }[0], [x27], #8 +# CHECK-NEXT: [0,3] DPPPeeeeER. st1 { v1.d }[0], [x27], x28 +# CHECK-NEXT: [0,4] .DPPPeeeeER st2 { v1.2d, v2.2d }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3140,14 +3609,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. st2 { v1.2s, v2.2s }, [x27], #16 -# CHECK-NEXT: [0,1] D=eeeeER .. st2 { v1.4h, v2.4h }, [x27], #16 -# CHECK-NEXT: [0,2] D==eeeeER .. st2 { v1.4s, v2.4s }, [x27], #32 -# CHECK-NEXT: [0,3] .D==eeeeER.. st2 { v1.8b, v2.8b }, [x27], #16 -# CHECK-NEXT: [0,4] .D====eeeeER st2 { v1.8h, v2.8h }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeeER .. st2 { v1.4h, v2.4h }, [x27], #16 +# CHECK-NEXT: [0,2] DPPeeeeER .. st2 { v1.4s, v2.4s }, [x27], #32 +# CHECK-NEXT: [0,3] .DPPeeeeER.. st2 { v1.8b, v2.8b }, [x27], #16 +# CHECK-NEXT: [0,4] .DPPP=eeeeER st2 { v1.8h, v2.8h }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3176,14 +3652,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 8.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st2 { v1.16b, v2.16b }, [x27], #32 -# CHECK-NEXT: [0,1] D=eeeeER . . st2 { v1.2d, v2.2d }, [x27], x28 -# CHECK-NEXT: [0,2] .D===eeeeER . st2 { v1.2s, v2.2s }, [x27], x28 -# CHECK-NEXT: [0,3] .D====eeeeER. st2 { v1.4h, v2.4h }, [x27], x28 -# CHECK-NEXT: [0,4] .D=====eeeeER st2 { v1.4s, v2.4s }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . . st2 { v1.2d, v2.2d }, [x27], x28 +# CHECK-NEXT: [0,2] .DP==eeeeER . st2 { v1.2s, v2.2s }, [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPeeeeER. st2 { v1.4h, v2.4h }, [x27], x28 +# CHECK-NEXT: [0,4] .DPPPPPeeeeER st2 { v1.4s, v2.4s }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3212,14 +3695,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . st2 { v1.8b, v2.8b }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . . st2 { v1.8h, v2.8h }, [x27], x28 -# CHECK-NEXT: [0,2] .D=eeeeER . . st2 { v1.16b, v2.16b }, [x27], x28 -# CHECK-NEXT: [0,3] .D====eeeeER. st2 { v1.b, v2.b }[0], [x27], #2 -# CHECK-NEXT: [0,4] .D=====eeeeER st2 { v1.b, v2.b }[8], [x27], #2 +# CHECK-NEXT: [0,1] DPeeeeER . . st2 { v1.8h, v2.8h }, [x27], x28 +# CHECK-NEXT: [0,2] .DPeeeeER . . st2 { v1.16b, v2.16b }, [x27], x28 +# CHECK-NEXT: [0,3] .DPP==eeeeER. st2 { v1.b, v2.b }[0], [x27], #2 +# CHECK-NEXT: [0,4] .DPPPPPeeeeER st2 { v1.b, v2.b }[8], [x27], #2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3248,14 +3738,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.b, v2.b }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.b, v2.b }[8], [x27], x28 -# CHECK-NEXT: [0,2] D==eeeeER . st2 { v1.h, v2.h }[0], [x27], #4 -# CHECK-NEXT: [0,3] D===eeeeER. st2 { v1.h, v2.h }[4], [x27], #4 -# CHECK-NEXT: [0,4] .D===eeeeER st2 { v1.h, v2.h }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.b, v2.b }[8], [x27], x28 +# CHECK-NEXT: [0,2] DPPeeeeER . st2 { v1.h, v2.h }[0], [x27], #4 +# CHECK-NEXT: [0,3] DPPPeeeeER. st2 { v1.h, v2.h }[4], [x27], #4 +# CHECK-NEXT: [0,4] .DPPPeeeeER st2 { v1.h, v2.h }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3284,14 +3781,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 5.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . st2 { v1.h, v2.h }[4], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeER . st2 { v1.s, v2.s }[0], [x27], #8 -# CHECK-NEXT: [0,2] D==eeeeER . st2 { v1.s, v2.s }[0], [x27], x28 -# CHECK-NEXT: [0,3] D===eeeeER. st2 { v1.d, v2.d }[0], [x27], #16 -# CHECK-NEXT: [0,4] .D===eeeeER st2 { v1.d, v2.d }[0], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeER . st2 { v1.s, v2.s }[0], [x27], #8 +# CHECK-NEXT: [0,2] DPPeeeeER . st2 { v1.s, v2.s }[0], [x27], x28 +# CHECK-NEXT: [0,3] DPPPeeeeER. st2 { v1.d, v2.d }[0], [x27], #16 +# CHECK-NEXT: [0,4] .DPPPeeeeER st2 { v1.d, v2.d }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3320,14 +3824,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . st2g x26, [x27], #4064 -# CHECK-NEXT: [0,1] D=eER. . . st2g x26, [x27, #4064]! -# CHECK-NEXT: [0,2] D==eeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 -# CHECK-NEXT: [0,3] .D==eeeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 -# CHECK-NEXT: [0,4] .D======eeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 +# CHECK-NEXT: [0,1] DPeER. . . st2g x26, [x27, #4064]! +# CHECK-NEXT: [0,2] DPPeeeeeeER . st3 { v1.2d, v2.2d, v3.2d }, [x27], #48 +# CHECK-NEXT: [0,3] .DPPeeeeeER . st3 { v1.2s, v2.2s, v3.2s }, [x27], #24 +# CHECK-NEXT: [0,4] .DPPP===eeeeeER st3 { v1.4h, v2.4h, v3.4h }, [x27], #24 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3356,14 +3867,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 14.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . . st3 { v1.4s, v2.4s, v3.4s }, [x27], #48 # CHECK-NEXT: [0,1] .DeeeeeER . . . st3 { v1.8b, v2.8b, v3.8b }, [x27], #24 # CHECK-NEXT: [0,2] . D===eeeeeeER . . st3 { v1.8h, v2.8h, v3.8h }, [x27], #48 -# CHECK-NEXT: [0,3] . D===eeeeeeER. . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 -# CHECK-NEXT: [0,4] . D=======eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 +# CHECK-NEXT: [0,3] . DPPPeeeeeeER. . st3 { v1.16b, v2.16b, v3.16b }, [x27], #48 +# CHECK-NEXT: [0,4] . DPPP====eeeeeeER st3 { v1.2d, v2.2d, v3.2d }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3392,14 +3910,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 12.0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . . st3 { v1.2s, v2.2s, v3.2s }, [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER . . . st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 -# CHECK-NEXT: [0,2] .D===eeeeeeER . . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 -# CHECK-NEXT: [0,3] . D===eeeeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 -# CHECK-NEXT: [0,4] . D======eeeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeER . . . st3 { v1.4h, v2.4h, v3.4h }, [x27], x28 +# CHECK-NEXT: [0,2] .DP==eeeeeeER . . st3 { v1.4s, v2.4s, v3.4s }, [x27], x28 +# CHECK-NEXT: [0,3] . DPPPeeeeeER . . st3 { v1.8b, v2.8b, v3.8b }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPP===eeeeeeER st3 { v1.8h, v2.8h, v3.8h }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3428,14 +3953,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 11.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. st3 { v1.16b, v2.16b, v3.16b }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeER . .. st3 { v1.b, v2.b, v3.b }[0], [x27], #3 -# CHECK-NEXT: [0,2] .D====eeeeeER .. st3 { v1.b, v2.b, v3.b }[8], [x27], #3 -# CHECK-NEXT: [0,3] . D====eeeeeER .. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D=======eeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 +# CHECK-NEXT: [0,2] .DP===eeeeeER .. st3 { v1.b, v2.b, v3.b }[8], [x27], #3 +# CHECK-NEXT: [0,3] . DPPPPeeeeeER .. st3 { v1.b, v2.b, v3.b }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPPP==eeeeeER st3 { v1.b, v2.b, v3.b }[8], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3464,14 +3996,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 10.0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . st3 { v1.h, v2.h, v3.h }[0], [x27], #6 -# CHECK-NEXT: [0,1] D=eeeeeER . . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 -# CHECK-NEXT: [0,2] .D===eeeeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 -# CHECK-NEXT: [0,3] .D====eeeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], x28 -# CHECK-NEXT: [0,4] . D======eeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 +# CHECK-NEXT: [0,1] DPeeeeeER . . st3 { v1.h, v2.h, v3.h }[4], [x27], #6 +# CHECK-NEXT: [0,2] .DP==eeeeeER . st3 { v1.h, v2.h, v3.h }[0], [x27], x28 +# CHECK-NEXT: [0,3] .DPPPPeeeeeER . st3 { v1.h, v2.h, v3.h }[4], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPP==eeeeeER st3 { v1.s, v2.s, v3.s }[0], [x27], #12 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3500,14 +4039,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 13.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . .. st3 { v1.s, v2.s, v3.s }[0], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeER . .. st3 { v1.d, v2.d, v3.d }[0], [x27], #24 -# CHECK-NEXT: [0,2] .D===eeeeeER .. st3 { v1.d, v2.d, v3.d }[0], [x27], x28 -# CHECK-NEXT: [0,3] . D===eeeeeER .. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 -# CHECK-NEXT: [0,4] . D=====eeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 +# CHECK-NEXT: [0,1] DPeeeeeER . .. st3 { v1.d, v2.d, v3.d }[0], [x27], #24 +# CHECK-NEXT: [0,2] .DP==eeeeeER .. st3 { v1.d, v2.d, v3.d }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPeeeeeER .. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], #64 +# CHECK-NEXT: [0,4] . DPPP==eeeeeeER st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], #32 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3536,14 +4082,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 24.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeeeER . . . . st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], #32 # CHECK-NEXT: [0,1] .DeeeeeeeER . . . st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], #64 # CHECK-NEXT: [0,2] . D====eeeeeeER. . . st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], #32 -# CHECK-NEXT: [0,3] . D=========eeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 -# CHECK-NEXT: [0,4] . D========eeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 +# CHECK-NEXT: [0,3] . DPPPP=====eeeeeeeER. st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], #64 +# CHECK-NEXT: [0,4] . DPPPPPPPPeeeeeeeER st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], #64 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3572,14 +4125,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 19.0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeeER . . .. st4 { v1.2d, v2.2d, v3.2d, v4.2d }, [x27], x28 # CHECK-NEXT: [0,1] .DeeeeeeER. . .. st4 { v1.2s, v2.2s, v3.2s, v4.2s }, [x27], x28 # CHECK-NEXT: [0,2] . D=====eeeeeeER .. st4 { v1.4h, v2.4h, v3.4h, v4.4h }, [x27], x28 -# CHECK-NEXT: [0,3] . D=====eeeeeeeER .. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 -# CHECK-NEXT: [0,4] . D=========eeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPeeeeeeeER .. st4 { v1.4s, v2.4s, v3.4s, v4.4s }, [x27], x28 +# CHECK-NEXT: [0,4] . DPPPPP====eeeeeeER st4 { v1.8b, v2.8b, v3.8b, v4.8b }, [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3608,14 +4168,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 16.5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeER. . . . st4 { v1.8h, v2.8h, v3.8h, v4.8h }, [x27], x28 # CHECK-NEXT: [0,1] . DeeeeeeeER . . . st4 { v1.16b, v2.16b, v3.16b, v4.16b }, [x27], x28 # CHECK-NEXT: [0,2] . D=========eeeeeeER . st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], #4 -# CHECK-NEXT: [0,3] . D===========eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 -# CHECK-NEXT: [0,4] . D============eeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 +# CHECK-NEXT: [0,3] . DPPPPPPPPPP=eeeeeeER. st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], #4 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeeER st4 { v1.b, v2.b, v3.b, v4.b }[0], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3644,14 +4211,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.5 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . st4 { v1.b, v2.b, v3.b, v4.b }[8], [x27], x28 -# CHECK-NEXT: [0,1] D=eeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 -# CHECK-NEXT: [0,2] D===eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 -# CHECK-NEXT: [0,3] .D===eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 -# CHECK-NEXT: [0,4] .D=====eeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 +# CHECK-NEXT: [0,1] DPeeeeeeER. . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], #8 +# CHECK-NEXT: [0,2] DPP=eeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], #8 +# CHECK-NEXT: [0,3] .DPPPeeeeeeER . st4 { v1.h, v2.h, v3.h, v4.h }[0], [x27], x28 +# CHECK-NEXT: [0,4] .DPPPP=eeeeeeER st4 { v1.h, v2.h, v3.h, v4.h }[4], [x27], x28 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3680,14 +4254,21 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 7.0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], #16 -# CHECK-NEXT: [0,1] D=eeeeeeER. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 -# CHECK-NEXT: [0,2] .D==eeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 -# CHECK-NEXT: [0,3] .D===eeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 -# CHECK-NEXT: [0,4] . D===eE--R stg x26, [x27], #4064 +# CHECK-NEXT: [0,1] DPeeeeeeER. st4 { v1.s, v2.s, v3.s, v4.s }[0], [x27], x28 +# CHECK-NEXT: [0,2] .DP=eeeeER. st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], #32 +# CHECK-NEXT: [0,3] .DPPPeeeeER st4 { v1.d, v2.d, v3.d, v4.d }[0], [x27], x28 +# CHECK-NEXT: [0,4] . DPPPeE--R stg x26, [x27], #4064 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3716,13 +4297,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stg x26, [x27, #4064]! -# CHECK-NEXT: [0,1] D=eER. . stgp x1, x2, [x27], #992 -# CHECK-NEXT: [0,2] D==eER . stgp x1, x2, [x27, #992]! -# CHECK-NEXT: [0,3] D===eeER. stp s1, s2, [x27], #248 -# CHECK-NEXT: [0,4] .D===eeER stp d1, d2, [x27], #496 +# CHECK-NEXT: [0,1] DPeER. . stgp x1, x2, [x27], #992 +# CHECK-NEXT: [0,2] DPPeER . stgp x1, x2, [x27, #992]! +# CHECK-NEXT: [0,3] DPPPeeER. stp s1, s2, [x27], #248 +# CHECK-NEXT: [0,4] .DPPPeeER stp d1, d2, [x27], #496 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3751,13 +4339,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 3.0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeER. . stp q1, q2, [x27], #992 -# CHECK-NEXT: [0,1] D==eeER . stp s1, s2, [x27, #248]! -# CHECK-NEXT: [0,2] D===eeER . stp d1, d2, [x27, #496]! -# CHECK-NEXT: [0,3] .D===eeER. stp q1, q2, [x27, #992]! -# CHECK-NEXT: [0,4] .D=====eER stp w1, w2, [x27], #248 +# CHECK-NEXT: [0,1] DPPeeER . stp s1, s2, [x27, #248]! +# CHECK-NEXT: [0,2] DPPPeeER . stp d1, d2, [x27, #496]! +# CHECK-NEXT: [0,3] .DPPPeeER. stp q1, q2, [x27, #992]! +# CHECK-NEXT: [0,4] .DPPPPPeER stp w1, w2, [x27], #248 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3786,13 +4381,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . stp x1, x2, [x27], #496 -# CHECK-NEXT: [0,1] D=eER. . stp w1, w2, [x27, #248]! -# CHECK-NEXT: [0,2] D==eER . stp x1, x2, [x27, #496]! -# CHECK-NEXT: [0,3] D===eeER. str b1, [x27], #254 -# CHECK-NEXT: [0,4] .D===eeER str h1, [x27], #254 +# CHECK-NEXT: [0,1] DPeER. . stp w1, w2, [x27, #248]! +# CHECK-NEXT: [0,2] DPPeER . stp x1, x2, [x27, #496]! +# CHECK-NEXT: [0,3] DPPPeeER. str b1, [x27], #254 +# CHECK-NEXT: [0,4] .DPPPeeER str h1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3821,13 +4423,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . str s1, [x27], #254 -# CHECK-NEXT: [0,1] D=eeER . str d1, [x27], #254 -# CHECK-NEXT: [0,2] D==eeER . str q1, [x27], #254 -# CHECK-NEXT: [0,3] D===eeER. str b1, [x27, #254]! -# CHECK-NEXT: [0,4] .D===eeER str h1, [x27, #254]! +# CHECK-NEXT: [0,1] DPeeER . str d1, [x27], #254 +# CHECK-NEXT: [0,2] DPPeeER . str q1, [x27], #254 +# CHECK-NEXT: [0,3] DPPPeeER. str b1, [x27, #254]! +# CHECK-NEXT: [0,4] .DPPPeeER str h1, [x27, #254]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3856,13 +4465,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeER. . str s1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eeER . str d1, [x27, #254]! -# CHECK-NEXT: [0,2] D==eeER. str q1, [x27, #254]! -# CHECK-NEXT: [0,3] D===eER. str w1, [x27], #254 -# CHECK-NEXT: [0,4] .D===eER str x1, [x27], #254 +# CHECK-NEXT: [0,1] DPeeER . str d1, [x27, #254]! +# CHECK-NEXT: [0,2] DPPeeER. str q1, [x27, #254]! +# CHECK-NEXT: [0,3] DPPPeER. str w1, [x27], #254 +# CHECK-NEXT: [0,4] .DPPPeER str x1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3891,13 +4507,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . str w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . str x1, [x27, #254]! -# CHECK-NEXT: [0,2] D==eER . strb w1, [x27], #254 -# CHECK-NEXT: [0,3] D===eER. strb w1, [x27, #254]! -# CHECK-NEXT: [0,4] D====eER strh w1, [x27], #254 +# CHECK-NEXT: [0,1] DPeER. . str x1, [x27, #254]! +# CHECK-NEXT: [0,2] DPPeER . strb w1, [x27], #254 +# CHECK-NEXT: [0,3] DPPPeER. strb w1, [x27, #254]! +# CHECK-NEXT: [0,4] DPPPPeER strh w1, [x27], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3926,13 +4549,20 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 2.5 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . strh w1, [x27, #254]! -# CHECK-NEXT: [0,1] D=eER. . stz2g x26, [x27], #4064 -# CHECK-NEXT: [0,2] D==eER . stz2g x26, [x27, #4064]! -# CHECK-NEXT: [0,3] D===eER. stzg x26, [x27], #4064 -# CHECK-NEXT: [0,4] D====eER stzg x26, [x27, #4064]! +# CHECK-NEXT: [0,1] DPeER. . stz2g x26, [x27], #4064 +# CHECK-NEXT: [0,2] DPPeER . stz2g x26, [x27, #4064]! +# CHECK-NEXT: [0,3] DPPPeER. stzg x26, [x27], #4064 +# CHECK-NEXT: [0,4] DPPPPeER stzg x26, [x27, #4064]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -3961,11 +4591,18 @@ ldr x2, [x1], #254 # CHECK-NEXT: Block RThroughput: 0.7 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . ldr x1, [x27], #254 -# CHECK-NEXT: [0,1] D====eeeeER ldr x2, [x1], #254 +# CHECK-NEXT: [0,1] DPPPPeeeeER ldr x2, [x1], #254 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/AMDGPU/carried-over.s b/llvm/test/tools/llvm-mca/AMDGPU/carried-over.s index 4378dc979fc72..1ae07727ea627 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/carried-over.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/carried-over.s @@ -60,7 +60,14 @@ v_sub_u32 v5, v1, v2 # CHECK-NEXT: - - - - 1.00 - - v_sub_u32_e32 v5, v1, v2 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DE . . v_pk_mov_b32 v[0:1], v[2:3], v[4:5] # CHECK-NEXT: [0,1] .DE . . v_pk_add_f32 v[0:1], v[0:1], v[0:1] diff --git a/llvm/test/tools/llvm-mca/AMDGPU/gfx10-add-sequence.s b/llvm/test/tools/llvm-mca/AMDGPU/gfx10-add-sequence.s index 84289299cf192..b15f7788bafc0 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/gfx10-add-sequence.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/gfx10-add-sequence.s @@ -49,7 +49,14 @@ v_add_f32 v2, v1, v0 # CHECK-NEXT: - - - 1.00 - - 1.00 - v_add_f32_e32 v2, v1, v0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeE .. v_add_f32_e32 v0, v0, v0 diff --git a/llvm/test/tools/llvm-mca/AMDGPU/gfx10-double.s b/llvm/test/tools/llvm-mca/AMDGPU/gfx10-double.s index 00b429ef6d67d..0b186f253a79b 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/gfx10-double.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/gfx10-double.s @@ -133,7 +133,14 @@ v_sqrt_f64 v[4:5], v[4:5] # CHECK-NEXT: - - - 1.00 - 1.00 1.00 - v_sqrt_f64_e32 v[4:5], v[4:5] # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 01234 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v_cvt_i32_f64_e32 v0, v[0:1] diff --git a/llvm/test/tools/llvm-mca/AMDGPU/gfx10-trans.s b/llvm/test/tools/llvm-mca/AMDGPU/gfx10-trans.s index 571f1ef6c7ec0..ae73d7d0b7786 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/gfx10-trans.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/gfx10-trans.s @@ -75,11 +75,17 @@ v_sqrt_f64 v[2:3], v[0:1] # CHECK-NEXT: - - - 1.00 - 1.00 1.00 - v_sqrt_f64_e32 v[2:3], v[0:1] # CHECK: Timeline view: - -# GFX10-NEXT: 0123456789 0123456789 0123456789 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# GFX10: 0123456789 0123456789 0123456789 0123456789 0123 # GFX10-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 -# GFX11-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 +# GFX11: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 # GFX11-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 01 # GFX10: [0,0] DeeeeeeeeeE . . . . . . . . . . . . . . . . . v_log_f32_e32 v0, v0 diff --git a/llvm/test/tools/llvm-mca/AMDGPU/gfx11-double.s b/llvm/test/tools/llvm-mca/AMDGPU/gfx11-double.s index 7516ee97818a0..8be510ba03eb2 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/gfx11-double.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/gfx11-double.s @@ -133,7 +133,14 @@ v_sqrt_f64 v[4:5], v[4:5] # CHECK-NEXT: - - - 1.00 - 1.00 1.00 - v_sqrt_f64_e32 v[4:5], v[4:5] # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v_cvt_i32_f64_e32 v0, v[0:1] diff --git a/llvm/test/tools/llvm-mca/AMDGPU/gfx12-pseudo-scalar-trans.s b/llvm/test/tools/llvm-mca/AMDGPU/gfx12-pseudo-scalar-trans.s index d11b61919b3ce..33e5cc049c80b 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/gfx12-pseudo-scalar-trans.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/gfx12-pseudo-scalar-trans.s @@ -69,7 +69,14 @@ v_s_sqrt_f16 s5, s5 # CHECK-NEXT: - - - 1.00 - 1.00 - v_s_sqrt_f16 s5, s5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234 # CHECK: [0,0] DeeeeeeE . . . . . . . . v_s_exp_f32 s0, s0 diff --git a/llvm/test/tools/llvm-mca/AMDGPU/gfx9-retireooo.s b/llvm/test/tools/llvm-mca/AMDGPU/gfx9-retireooo.s index 706ed36f9e980..18bcacbb5a8df 100644 --- a/llvm/test/tools/llvm-mca/AMDGPU/gfx9-retireooo.s +++ b/llvm/test/tools/llvm-mca/AMDGPU/gfx9-retireooo.s @@ -147,7 +147,14 @@ s_waitcnt vmcnt(0) lgkmcnt(0) # CHECK-NEXT: - - - 1.00 - - - s_waitcnt vmcnt(0) lgkmcnt(0) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeE . . . . . . . . . . . . . . . . . . s_load_dwordx2 s[2:3], s[0:1], 0x24 diff --git a/llvm/test/tools/llvm-mca/ARM/cortex-a57-carryover.s b/llvm/test/tools/llvm-mca/ARM/cortex-a57-carryover.s index ec99d704f0e5e..47ec15cdb44c7 100644 --- a/llvm/test/tools/llvm-mca/ARM/cortex-a57-carryover.s +++ b/llvm/test/tools/llvm-mca/ARM/cortex-a57-carryover.s @@ -49,7 +49,14 @@ # CHECK-NEXT: - - - - - - - - nop # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 012 # CHECK: [0,0] DeeeeER . . . . . . . . pop {r3, r4, r5, r6, r7, pc} @@ -59,19 +66,19 @@ # CHECK-NEXT: [2,0] . .D==eeeeER. . . . . . . pop {r3, r4, r5, r6, r7, pc} # CHECK-NEXT: [2,1] . . DE----R. . . . . . . nop # CHECK-NEXT: [3,0] . . D===eeeeER . . . . . . pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [3,1] . . .D=E----R . . . . . . nop -# CHECK-NEXT: [4,0] . . . D====eeeeER . . . . . pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [4,1] . . . D==E----R . . . . . nop -# CHECK-NEXT: [5,0] . . . D=====eeeeER . . . . pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [5,1] . . . . D===E----R . . . . nop -# CHECK-NEXT: [6,0] . . . . D======eeeeER . . . pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [6,1] . . . . D====E----R . . . nop -# CHECK-NEXT: [7,0] . . . . .D=======eeeeER. . . pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [7,1] . . . . . D=====E----R. . . nop -# CHECK-NEXT: [8,0] . . . . . D========eeeeER . . pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [8,1] . . . . . .D======E----R . . nop -# CHECK-NEXT: [9,0] . . . . . . D=========eeeeER pop {r3, r4, r5, r6, r7, pc} -# CHECK-NEXT: [9,1] . . . . . . D=======E----R nop +# CHECK-NEXT: [3,1] . . .DPE----R . . . . . . nop +# CHECK-NEXT: [4,0] . . . DP===eeeeER . . . . . pop {r3, r4, r5, r6, r7, pc} +# CHECK-NEXT: [4,1] . . . DPPE----R . . . . . nop +# CHECK-NEXT: [5,0] . . . DPP===eeeeER . . . . pop {r3, r4, r5, r6, r7, pc} +# CHECK-NEXT: [5,1] . . . . DPPPE----R . . . . nop +# CHECK-NEXT: [6,0] . . . . DPPP===eeeeER . . . pop {r3, r4, r5, r6, r7, pc} +# CHECK-NEXT: [6,1] . . . . DPPPPE----R . . . nop +# CHECK-NEXT: [7,0] . . . . .DPPPP===eeeeER. . . pop {r3, r4, r5, r6, r7, pc} +# CHECK-NEXT: [7,1] . . . . . DPPPPPE----R. . . nop +# CHECK-NEXT: [8,0] . . . . . DPPPPP===eeeeER . . pop {r3, r4, r5, r6, r7, pc} +# CHECK-NEXT: [8,1] . . . . . .DPPPPPPE----R . . nop +# CHECK-NEXT: [9,0] . . . . . . DPPPPPP===eeeeER pop {r3, r4, r5, r6, r7, pc} +# CHECK-NEXT: [9,1] . . . . . . DPPPPPPPE----R nop # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/ARM/m55-storefwd.s b/llvm/test/tools/llvm-mca/ARM/m55-storefwd.s index 3a744da93cfbf..b3b111589426a 100644 --- a/llvm/test/tools/llvm-mca/ARM/m55-storefwd.s +++ b/llvm/test/tools/llvm-mca/ARM/m55-storefwd.s @@ -160,7 +160,14 @@ vstrb.8 q0, [r0, #0] # CHECK-NEXT: - 2.00 - - - vstrb.8 q0, [r0] # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DE . . . . . . . . . . . . . . . . vadd.i8 q0, q2, q1 diff --git a/llvm/test/tools/llvm-mca/ARM/m7-negative-readadvance.s b/llvm/test/tools/llvm-mca/ARM/m7-negative-readadvance.s index a63e7486bf600..c666c729d7d36 100644 --- a/llvm/test/tools/llvm-mca/ARM/m7-negative-readadvance.s +++ b/llvm/test/tools/llvm-mca/ARM/m7-negative-readadvance.s @@ -56,7 +56,14 @@ vldr d0, [r1] # CHECK-NEXT: - - - 1.00 1.00 - - - - - - 1.00 1.00 vldr d0, [r1] # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DE . add.w r1, r1, #1 # CHECK-NEXT: [0,1] .DE . add.w r1, r1, #2 diff --git a/llvm/test/tools/llvm-mca/ARM/memcpy-ldm-stm.s b/llvm/test/tools/llvm-mca/ARM/memcpy-ldm-stm.s index 865aa7455125b..509ba48569ead 100644 --- a/llvm/test/tools/llvm-mca/ARM/memcpy-ldm-stm.s +++ b/llvm/test/tools/llvm-mca/ARM/memcpy-ldm-stm.s @@ -44,15 +44,22 @@ # CHECK-NEXT: - - - 2.00 1.37 1.63 stm r0!, {r3, r4, r5, r6, r12, lr} # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeER . . ldm r2!, {r3, r4, r5, r6, r12, lr} -# CHECK-NEXT: [0,1] .D=================eER . . stm r0!, {r3, r4, r5, r6, r12, lr} +# CHECK-NEXT: [0,1] .DPPPPPPPPPPPPPPPPPeER . . stm r0!, {r3, r4, r5, r6, r12, lr} # CHECK-NEXT: [1,0] . DeeeeeeeeeeeeeeeeeeER . . ldm r2!, {r3, r4, r5, r6, r12, lr} -# CHECK-NEXT: [1,1] . D=================eER. . stm r0!, {r3, r4, r5, r6, r12, lr} +# CHECK-NEXT: [1,1] . DPPPPPPPPPPPPPPPPPeER. . stm r0!, {r3, r4, r5, r6, r12, lr} # CHECK-NEXT: [2,0] . .DeeeeeeeeeeeeeeeeeeER . ldm r2!, {r3, r4, r5, r6, r12, lr} -# CHECK-NEXT: [2,1] . . D==================eER stm r0!, {r3, r4, r5, r6, r12, lr} +# CHECK-NEXT: [2,1] . . DPPPPPPPPPPPPPPPPP=eER stm r0!, {r3, r4, r5, r6, r12, lr} # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/ARM/vld1-index-update.s b/llvm/test/tools/llvm-mca/ARM/vld1-index-update.s index 776466cd60077..efc8e85fb7adb 100644 --- a/llvm/test/tools/llvm-mca/ARM/vld1-index-update.s +++ b/llvm/test/tools/llvm-mca/ARM/vld1-index-update.s @@ -47,19 +47,26 @@ vld1.32 {d16, d17}, [r1]! # CHECK-NEXT: - - - 1.00 1.00 - vld1.32 {d16, d17}, [r1]! # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . add r1, r1, r12 -# CHECK-NEXT: [0,1] D=eeeeER . . vld1.32 {d16, d17}, [r1]! -# CHECK-NEXT: [1,0] .D=eE--R . . add r1, r1, r12 -# CHECK-NEXT: [1,1] .D==eeeeER. . vld1.32 {d16, d17}, [r1]! -# CHECK-NEXT: [2,0] . D==eE--R. . add r1, r1, r12 -# CHECK-NEXT: [2,1] . D===eeeeER . vld1.32 {d16, d17}, [r1]! -# CHECK-NEXT: [3,0] . D===eE--R . add r1, r1, r12 -# CHECK-NEXT: [3,1] . D====eeeeER . vld1.32 {d16, d17}, [r1]! -# CHECK-NEXT: [4,0] . D====eE--R . add r1, r1, r12 -# CHECK-NEXT: [4,1] . D=====eeeeER vld1.32 {d16, d17}, [r1]! +# CHECK-NEXT: [0,1] DPeeeeER . . vld1.32 {d16, d17}, [r1]! +# CHECK-NEXT: [1,0] .DPeE--R . . add r1, r1, r12 +# CHECK-NEXT: [1,1] .DPPeeeeER. . vld1.32 {d16, d17}, [r1]! +# CHECK-NEXT: [2,0] . DPPeE--R. . add r1, r1, r12 +# CHECK-NEXT: [2,1] . DPPPeeeeER . vld1.32 {d16, d17}, [r1]! +# CHECK-NEXT: [3,0] . DPPPeE--R . add r1, r1, r12 +# CHECK-NEXT: [3,1] . DPPPPeeeeER . vld1.32 {d16, d17}, [r1]! +# CHECK-NEXT: [4,0] . DPPPPeE--R . add r1, r1, r12 +# CHECK-NEXT: [4,1] . DPPPPPeeeeER vld1.32 {d16, d17}, [r1]! # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/RISCV/MIPS/p8700.s b/llvm/test/tools/llvm-mca/RISCV/MIPS/p8700.s index d93129129a176..04c7138c6dbd2 100644 --- a/llvm/test/tools/llvm-mca/RISCV/MIPS/p8700.s +++ b/llvm/test/tools/llvm-mca/RISCV/MIPS/p8700.s @@ -105,18 +105,25 @@ # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - nop # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. .. div a0, a1, a2 # CHECK-NEXT: [0,1] DeeeeE---R. .. mul a4, a1, a2 # CHECK-NEXT: [0,2] DeeeeeE--R. .. fmul.s ft1, ft2, ft3 -# CHECK-NEXT: [0,3] D=======eeeeER .. lw a3, 0(a0) -# CHECK-NEXT: [0,4] .D==========eeeER sw a3, 0(a1) +# CHECK-NEXT: [0,3] DPPPPPPPeeeeER .. lw a3, 0(a0) +# CHECK-NEXT: [0,4] .DPPPPPPPPPPeeeER sw a3, 0(a1) # CHECK-NEXT: [0,5] .DeE------------R add a5, a1, a2 -# CHECK-NEXT: [0,6] .D=eE-----------R ror a6, a5, a2 +# CHECK-NEXT: [0,6] .DPeE-----------R ror a6, a5, a2 # CHECK-NEXT: [0,7] .DeE------------R j .Lend -# CHECK-NEXT: [0,8] . D=====eE------R add a7, a4, a0 +# CHECK-NEXT: [0,8] . DPPPPPeE------R add a7, a4, a0 # CHECK-NEXT: [0,9] . DE------------R nop # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFive7/div-fdiv.s b/llvm/test/tools/llvm-mca/RISCV/SiFive7/div-fdiv.s index cb60d8ea935ad..3825af1956759 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFive7/div-fdiv.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFive7/div-fdiv.s @@ -47,7 +47,14 @@ fdiv.s f1, f2, f3 # CHECK-NEXT: 26.00 - - 1.00 - - - - fdiv.s ft1, ft2, ft3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeE div a0, a1, a2 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass-c.s b/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass-c.s index c7ff5e6a6b9c4..390cbbb6c520e 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass-c.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass-c.s @@ -103,7 +103,14 @@ c.jr a0 # CHECK-NEXT: - - - 1.00 - - - - jr a0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeeE . . . . lui a0, 1 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass.s b/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass.s index 03f7de2fe9a4c..b34c257d81272 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFive7/gpr-bypass.s @@ -322,7 +322,14 @@ jr a0 # CHECK-NEXT: - - - 1.00 - - - - jr a0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 012345678 # CHECK: [0,0] DeeE . . . . . . . . . . . . . . . . . . . . . . lui a0, 1 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFive7/jump.s b/llvm/test/tools/llvm-mca/RISCV/SiFive7/jump.s index f23a9ccfca3be..ee31295328b00 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFive7/jump.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFive7/jump.s @@ -58,7 +58,14 @@ ret # CHECK-NEXT: - - - 1.00 - - - - ret # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE j .Ltmp0 # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-lmul-instruments.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-lmul-instruments.s index 0e7284fb550af..b1df7184c2613 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-lmul-instruments.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-lmul-instruments.s @@ -54,7 +54,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 17.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . .. vsetvli zero, a0, e8, m1, tu, mu diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-sew-instruments.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-sew-instruments.s index b445855ef3c11..e896f9e841f19 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-sew-instruments.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/different-sew-instruments.s @@ -55,7 +55,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 115.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/disable-im.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/disable-im.s index 0cd96701fd8f8..f78537efc2734 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/disable-im.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/disable-im.s @@ -61,7 +61,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 17.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01 # CHECK: [0,0] DeeE . . . . . . . .. vsetvli zero, a0, e8, m2, tu, mu diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-at-start.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-at-start.s index 53d106a327411..93bf80df2bfe1 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-at-start.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-at-start.s @@ -47,7 +47,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 3.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeE . . vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: [0,1] . DeeeE vadd.vv v12, v12, v12 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-middle.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-middle.s index 2b0e3fa1b8af4..0c1ef80a3ab9a 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-middle.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-middle.s @@ -50,7 +50,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 2.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeE. . . .. vadd.vv v12, v12, v12 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-region.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-region.s index 308994116ed26..36e49953f905a 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-region.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-in-region.s @@ -51,7 +51,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 3.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeE . . vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: [0,1] . DeeeE vadd.vv v12, v12, v12 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-straddles-region.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-straddles-region.s index 7c596b16109fb..99019a363faa4 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-straddles-region.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/lmul-instrument-straddles-region.s @@ -52,7 +52,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 3.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeE . . vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: [0,1] . DeeeE vadd.vv v12, v12, v12 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-lmul-instruments.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-lmul-instruments.s index 680d84e9dc226..04d400d9149f1 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-lmul-instruments.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-lmul-instruments.s @@ -67,7 +67,14 @@ vsub.vv v12, v12, v12 # CHECK-NEXT: - - - - 9.00 1.00 - - vsub.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeeE . . . . . . vsetvli zero, a0, e8, m1, tu, mu diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-sew-instruments.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-sew-instruments.s index 02e1fd72bceea..3b56230cf0e01 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-sew-instruments.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/multiple-same-sew-instruments.s @@ -68,7 +68,14 @@ vdivu.vv v8, v8, v12 # CHECK-NEXT: - - - - 113.00 1.00 - - vdivu.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e64, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/needs-sew-but-only-lmul.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/needs-sew-but-only-lmul.s index 2a58ea7962ae8..e42e543e5d539 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/needs-sew-but-only-lmul.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/needs-sew-but-only-lmul.s @@ -52,7 +52,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 241.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/no-vsetvli-to-start.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/no-vsetvli-to-start.s index e16b8f982b9c9..3d161a8dd7380 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/no-vsetvli-to-start.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/no-vsetvli-to-start.s @@ -49,7 +49,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 3.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeE. . . .. vadd.vv v12, v12, v12 diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-at-start.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-at-start.s index e9b0ee562a4ce..79fcd3b734cd6 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-at-start.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-at-start.s @@ -48,7 +48,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 241.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-middle.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-middle.s index dbec706866f63..068bcf490c8e1 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-middle.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-middle.s @@ -30,7 +30,7 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: [6]: HasSideEffects (U) # CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 1920 1920.00 vdiv.vv v8, v8, v12 +# CHECK-NEXT: 1 1920 1920.00 vdiv.vv v8, v8, v12 # CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m8, tu, mu # CHECK-NEXT: 1 912 912.00 vdiv.vv v8, v8, v12 @@ -55,7 +55,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 913.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0 # CHECK-NEXT: Truncated display due to cycle limit # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-region.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-region.s index 49e639d8c06fd..61c74b0da5ee2 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-region.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-in-region.s @@ -52,7 +52,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 115.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e64, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-straddles-region.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-straddles-region.s index e1e222f7f035c..4d326d0b2666d 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-straddles-region.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/sew-instrument-straddles-region.s @@ -53,7 +53,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 115.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e64, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-instrument.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-instrument.s index f39b33fd70f32..e647d2cc22d04 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-instrument.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-instrument.s @@ -52,7 +52,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 17.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . .. vsetivli zero, 8, e8, m1, tu, mu diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-sew-instrument.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-sew-instrument.s index 8dc7cac02c885..f38873fb40f06 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-sew-instrument.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetivli-lmul-sew-instrument.s @@ -52,7 +52,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 897.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetivli zero, 8, e8, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-instrument.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-instrument.s index 130bb19280f20..5bf4d3adfbb0c 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-instrument.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-instrument.s @@ -52,7 +52,14 @@ vadd.vv v12, v12, v12 # CHECK-NEXT: - - - - 17.00 1.00 - - vadd.vv v12, v12, v12 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeE . .. vsetvli zero, a0, e8, m1, tu, mu diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-sew-instrument.s b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-sew-instrument.s index fe4d3f6169c93..3c5b80e4759eb 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-sew-instrument.s +++ b/llvm/test/tools/llvm-mca/RISCV/SiFiveX280/vsetvli-lmul-sew-instrument.s @@ -52,7 +52,14 @@ vdiv.vv v8, v8, v12 # CHECK-NEXT: - - - - 897.00 1.00 - - vdiv.vv v8, v8, v12 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DeeE vsetvli zero, a0, e8, m1, tu, mu # CHECK-NEXT: Truncated display due to cycle limit diff --git a/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR4_5-FPU.s b/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR4_5-FPU.s index 90fef749a1c3d..4e3bfa52b99c8 100644 --- a/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR4_5-FPU.s +++ b/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR4_5-FPU.s @@ -115,7 +115,14 @@ fdiv.d ft7, ft7, ft7 # CHECK-NEXT: - - - 15.00 - - - fdiv.d ft7, ft7, ft7 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeE . . . . . . . . . . . . fadd.s ft0, ft0, ft0 diff --git a/llvm/test/tools/llvm-mca/RISCV/XiangShan/gpr-bypass.s b/llvm/test/tools/llvm-mca/RISCV/XiangShan/gpr-bypass.s index 677fece1535a0..2b2e22b8f217c 100644 --- a/llvm/test/tools/llvm-mca/RISCV/XiangShan/gpr-bypass.s +++ b/llvm/test/tools/llvm-mca/RISCV/XiangShan/gpr-bypass.s @@ -331,100 +331,107 @@ jr a0 # CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - jr a0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123 # CHECK: [0,0] DeER . . . . . . . . . . . . . . . . . . . . . . . . . lui a0, 1 # CHECK-NEXT: [0,1] DeER . . . . . . . . . . . . . . . . . . . . . . . . . auipc a1, 1 -# CHECK-NEXT: [0,2] D=eER. . . . . . . . . . . . . . . . . . . . . . . . . add a0, a0, a1 -# CHECK-NEXT: [0,3] D==eER . . . . . . . . . . . . . . . . . . . . . . . . addi a0, a0, 1 -# CHECK-NEXT: [0,4] D===eER . . . . . . . . . . . . . . . . . . . . . . . . addw a0, a0, a0 -# CHECK-NEXT: [0,5] D====eER . . . . . . . . . . . . . . . . . . . . . . . . addiw a0, a0, 1 -# CHECK-NEXT: [0,6] .D====eER . . . . . . . . . . . . . . . . . . . . . . . . sub a0, a0, a0 -# CHECK-NEXT: [0,7] .D=====eER. . . . . . . . . . . . . . . . . . . . . . . . subw a0, a0, a0 -# CHECK-NEXT: [0,8] .D======eER . . . . . . . . . . . . . . . . . . . . . . . and a0, a0, a0 -# CHECK-NEXT: [0,9] .D=======eER . . . . . . . . . . . . . . . . . . . . . . . andi a0, a0, 1 -# CHECK-NEXT: [0,10] .D========eER . . . . . . . . . . . . . . . . . . . . . . . or a0, a0, a0 -# CHECK-NEXT: [0,11] .D=========eER . . . . . . . . . . . . . . . . . . . . . . . ori a0, a0, 1 -# CHECK-NEXT: [0,12] . D=========eER. . . . . . . . . . . . . . . . . . . . . . . xor a0, a0, a0 -# CHECK-NEXT: [0,13] . D==========eER . . . . . . . . . . . . . . . . . . . . . . xori a0, a0, 1 -# CHECK-NEXT: [0,14] . D===========eER . . . . . . . . . . . . . . . . . . . . . . sll a0, a0, a0 -# CHECK-NEXT: [0,15] . D============eER . . . . . . . . . . . . . . . . . . . . . . slli a0, a0, 1 -# CHECK-NEXT: [0,16] . D=============eER . . . . . . . . . . . . . . . . . . . . . . sllw a0, a0, a0 -# CHECK-NEXT: [0,17] . D==============eER. . . . . . . . . . . . . . . . . . . . . . slliw a0, a0, 1 -# CHECK-NEXT: [0,18] . D==============eER . . . . . . . . . . . . . . . . . . . . . srl a0, a0, a0 -# CHECK-NEXT: [0,19] . D===============eER . . . . . . . . . . . . . . . . . . . . . srli a0, a0, 1 -# CHECK-NEXT: [0,20] . D===============eER . . . . . . . . . . . . . . . . . . . . . srlw a0, a0, a0 -# CHECK-NEXT: [0,21] . D===============eER . . . . . . . . . . . . . . . . . . . . . srliw a0, a0, 1 -# CHECK-NEXT: [0,22] . .D===============eER. . . . . . . . . . . . . . . . . . . . . sra a0, a0, a0 -# CHECK-NEXT: [0,23] . . D===============eER . . . . . . . . . . . . . . . . . . . . srai a0, a0, 1 -# CHECK-NEXT: [0,24] . . D===============eER . . . . . . . . . . . . . . . . . . . . sraw a0, a0, a0 -# CHECK-NEXT: [0,25] . . D===============eER . . . . . . . . . . . . . . . . . . . . sraiw a0, a0, 1 -# CHECK-NEXT: [0,26] . . D===============eER . . . . . . . . . . . . . . . . . . . . slt a0, a0, a0 -# CHECK-NEXT: [0,27] . . .D===============eER. . . . . . . . . . . . . . . . . . . . slti a0, a0, 1 -# CHECK-NEXT: [0,28] . . . D===============eER . . . . . . . . . . . . . . . . . . . sltu a0, a0, a0 -# CHECK-NEXT: [0,29] . . . D===============eER . . . . . . . . . . . . . . . . . . . seqz a0, a0 -# CHECK-NEXT: [0,30] . . . D================eeeER. . . . . . . . . . . . . . . . . . . mul a0, a0, a0 -# CHECK-NEXT: [0,31] . . . D==================eER . . . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,32] . . . D===================eeeER . . . . . . . . . . . . . . . . . . mulw a0, a0, a0 -# CHECK-NEXT: [0,33] . . . D=====================eER. . . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,34] . . . D======================eER . . . . . . . . . . . . . . . . . beq a0, a0, .Ltmp0 -# CHECK-NEXT: [0,35] . . . .D=====================eER . . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,36] . . . .D======================eER . . . . . . . . . . . . . . . . . bne a0, a0, .Ltmp1 -# CHECK-NEXT: [0,37] . . . . D=====================eER . . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,38] . . . . D======================eER . . . . . . . . . . . . . . . . . blt a0, a0, .Ltmp2 -# CHECK-NEXT: [0,39] . . . . D=====================eER . . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,40] . . . . D======================eER . . . . . . . . . . . . . . . . . bltu a0, a0, .Ltmp3 -# CHECK-NEXT: [0,41] . . . . D=====================eER . . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,42] . . . . D======================eER. . . . . . . . . . . . . . . . . bge a0, a0, .Ltmp4 -# CHECK-NEXT: [0,43] . . . . D=====================eER. . . . . . . . . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,44] . . . . D======================eER . . . . . . . . . . . . . . . . bgeu a0, a0, .Ltmp5 -# CHECK-NEXT: [0,45] . . . . .D=====================eER . . . . . . . . . . . . . . . . add.uw a0, a0, a0 -# CHECK-NEXT: [0,46] . . . . . D=====================eER . . . . . . . . . . . . . . . . slli.uw a0, a0, 1 -# CHECK-NEXT: [0,47] . . . . . D=====================eER . . . . . . . . . . . . . . . . sh1add.uw a0, a0, a0 -# CHECK-NEXT: [0,48] . . . . . D=====================eER . . . . . . . . . . . . . . . . sh2add.uw a0, a0, a0 -# CHECK-NEXT: [0,49] . . . . . D=====================eER. . . . . . . . . . . . . . . . sh3add.uw a0, a0, a0 -# CHECK-NEXT: [0,50] . . . . . .D=====================eER . . . . . . . . . . . . . . . sh1add a0, a0, a0 -# CHECK-NEXT: [0,51] . . . . . . D=====================eER . . . . . . . . . . . . . . . sh2add a0, a0, a0 -# CHECK-NEXT: [0,52] . . . . . . D=====================eER . . . . . . . . . . . . . . . sh3add a0, a0, a0 -# CHECK-NEXT: [0,53] . . . . . . D=====================eER . . . . . . . . . . . . . . . andn a0, a0, a0 -# CHECK-NEXT: [0,54] . . . . . . . D==================eER. . . . . . . . . . . . . . . orn a0, a0, a0 -# CHECK-NEXT: [0,55] . . . . . . . . D===============eER . . . . . . . . . . . . . . xnor a0, a0, a0 -# CHECK-NEXT: [0,56] . . . . . . . . D===============eER . . . . . . . . . . . . . . sext.b a0, a0 -# CHECK-NEXT: [0,57] . . . . . . . . D===============eER . . . . . . . . . . . . . . sext.h a0, a0 -# CHECK-NEXT: [0,58] . . . . . . . . D===============eER . . . . . . . . . . . . . . zext.h a0, a0 -# CHECK-NEXT: [0,59] . . . . . . . . .D===============eER. . . . . . . . . . . . . . min a0, a0, a0 -# CHECK-NEXT: [0,60] . . . . . . . . . D===============eER . . . . . . . . . . . . . minu a0, a0, a0 -# CHECK-NEXT: [0,61] . . . . . . . . . D===============eER . . . . . . . . . . . . . max a0, a0, a0 -# CHECK-NEXT: [0,62] . . . . . . . . . D===============eER . . . . . . . . . . . . . maxu a0, a0, a0 -# CHECK-NEXT: [0,63] . . . . . . . . . D===============eER . . . . . . . . . . . . . rol a0, a0, a0 -# CHECK-NEXT: [0,64] . . . . . . . . . .D===============eER. . . . . . . . . . . . . ror a0, a0, a0 -# CHECK-NEXT: [0,65] . . . . . . . . . . D===============eER . . . . . . . . . . . . rori a0, a0, 1 -# CHECK-NEXT: [0,66] . . . . . . . . . . D================eeeER . . . . . . . . . . . . clz a0, a0 -# CHECK-NEXT: [0,67] . . . . . . . . . . D===================eeeER . . . . . . . . . . . clzw a0, a0 -# CHECK-NEXT: [0,68] . . . . . . . . . . D======================eeeER. . . . . . . . . . . ctz a0, a0 -# CHECK-NEXT: [0,69] . . . . . . . . . . D=========================eeeER . . . . . . . . . . ctzw a0, a0 -# CHECK-NEXT: [0,70] . . . . . . . . . . D============================eeeER . . . . . . . . . cpop a0, a0 -# CHECK-NEXT: [0,71] . . . . . . . . . . D==============================eER . . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,72] . . . . . . . . . . D===============================eeeER. . . . . . . . . cpopw a0, a0 -# CHECK-NEXT: [0,73] . . . . . . . . . . D=================================eER . . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,74] . . . . . . . . . . D=================================eER . . . . . . . . rev8 a0, a0 -# CHECK-NEXT: [0,75] . . . . . . . . . . .D=================================eER . . . . . . . . orc.b a0, a0 -# CHECK-NEXT: [0,76] . . . . . . . . . . .D==================================eeeeeER . . . . . . . lb a0, 0(a0) -# CHECK-NEXT: [0,77] . . . . . . . . . . . D=====================================eER . . . . . . . add a0, a0, a0 -# CHECK-NEXT: [0,78] . . . . . . . . . . . D======================================eeeeeER . . . . . . lh a0, 0(a0) -# CHECK-NEXT: [0,79] . . . . . . . . . . . D=========================================eER . . . . . . and a0, a0, a0 -# CHECK-NEXT: [0,80] . . . . . . . . . . . D==========================================eeeeeER . . . . . lw a0, 0(a0) -# CHECK-NEXT: [0,81] . . . . . . . . . . . D=============================================eER . . . . . or a0, a0, a0 -# CHECK-NEXT: [0,82] . . . . . . . . . . . D==============================================eeeeeER . . . . ld a0, 0(a0) -# CHECK-NEXT: [0,83] . . . . . . . . . . . D=================================================eER . . . . xor a0, a0, a0 -# CHECK-NEXT: [0,84] . . . . . . . . . . . D==================================================eeeeeER . . . lbu a0, 0(a0) -# CHECK-NEXT: [0,85] . . . . . . . . . . . .D=====================================================eER . . . addi a0, a0, 1 -# CHECK-NEXT: [0,86] . . . . . . . . . . . .D======================================================eeeeeER . . lhu a0, 0(a0) -# CHECK-NEXT: [0,87] . . . . . . . . . . . . D=========================================================eER . . sub a0, a0, a0 -# CHECK-NEXT: [0,88] . . . . . . . . . . . . D==========================================================eeeeeER. lwu a0, 0(a0) -# CHECK-NEXT: [0,89] . . . . . . . . . . . . D=============================================================eER. addw a0, a0, a0 -# CHECK-NEXT: [0,90] . . . . . . . . . . . . D==============================================================eER jr a0 +# CHECK-NEXT: [0,2] DPeER. . . . . . . . . . . . . . . . . . . . . . . . . add a0, a0, a1 +# CHECK-NEXT: [0,3] DPPeER . . . . . . . . . . . . . . . . . . . . . . . . addi a0, a0, 1 +# CHECK-NEXT: [0,4] DPPPeER . . . . . . . . . . . . . . . . . . . . . . . . addw a0, a0, a0 +# CHECK-NEXT: [0,5] DPPPPeER . . . . . . . . . . . . . . . . . . . . . . . . addiw a0, a0, 1 +# CHECK-NEXT: [0,6] .DPPPPeER . . . . . . . . . . . . . . . . . . . . . . . . sub a0, a0, a0 +# CHECK-NEXT: [0,7] .DPPPPPeER. . . . . . . . . . . . . . . . . . . . . . . . subw a0, a0, a0 +# CHECK-NEXT: [0,8] .DPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . . and a0, a0, a0 +# CHECK-NEXT: [0,9] .DPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . . andi a0, a0, 1 +# CHECK-NEXT: [0,10] .DPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . . or a0, a0, a0 +# CHECK-NEXT: [0,11] .DPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . . ori a0, a0, 1 +# CHECK-NEXT: [0,12] . DPPPPPPPPPeER. . . . . . . . . . . . . . . . . . . . . . . xor a0, a0, a0 +# CHECK-NEXT: [0,13] . DPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . xori a0, a0, 1 +# CHECK-NEXT: [0,14] . DPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . sll a0, a0, a0 +# CHECK-NEXT: [0,15] . DPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . slli a0, a0, 1 +# CHECK-NEXT: [0,16] . DPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . . sllw a0, a0, a0 +# CHECK-NEXT: [0,17] . DPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . . . . . . . slliw a0, a0, 1 +# CHECK-NEXT: [0,18] . DPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . srl a0, a0, a0 +# CHECK-NEXT: [0,19] . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . srli a0, a0, 1 +# CHECK-NEXT: [0,20] . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . srlw a0, a0, a0 +# CHECK-NEXT: [0,21] . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . . srliw a0, a0, 1 +# CHECK-NEXT: [0,22] . .DPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . . . . . . sra a0, a0, a0 +# CHECK-NEXT: [0,23] . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . srai a0, a0, 1 +# CHECK-NEXT: [0,24] . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . sraw a0, a0, a0 +# CHECK-NEXT: [0,25] . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . sraiw a0, a0, 1 +# CHECK-NEXT: [0,26] . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . . slt a0, a0, a0 +# CHECK-NEXT: [0,27] . . .DPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . . . . . slti a0, a0, 1 +# CHECK-NEXT: [0,28] . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . sltu a0, a0, a0 +# CHECK-NEXT: [0,29] . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . . seqz a0, a0 +# CHECK-NEXT: [0,30] . . . DPPPPPPPPPPPPPPPPeeeER. . . . . . . . . . . . . . . . . . . mul a0, a0, a0 +# CHECK-NEXT: [0,31] . . . DPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,32] . . . DPPPPPPPPPPPPPPPPPPPeeeER . . . . . . . . . . . . . . . . . . mulw a0, a0, a0 +# CHECK-NEXT: [0,33] . . . DPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,34] . . . DPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . beq a0, a0, .Ltmp0 +# CHECK-NEXT: [0,35] . . . .DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,36] . . . .DPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . bne a0, a0, .Ltmp1 +# CHECK-NEXT: [0,37] . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,38] . . . . DPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . blt a0, a0, .Ltmp2 +# CHECK-NEXT: [0,39] . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,40] . . . . DPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . bltu a0, a0, .Ltmp3 +# CHECK-NEXT: [0,41] . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,42] . . . . DPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . . bge a0, a0, .Ltmp4 +# CHECK-NEXT: [0,43] . . . . DPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,44] . . . . DPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . bgeu a0, a0, .Ltmp5 +# CHECK-NEXT: [0,45] . . . . .DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . add.uw a0, a0, a0 +# CHECK-NEXT: [0,46] . . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . slli.uw a0, a0, 1 +# CHECK-NEXT: [0,47] . . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . sh1add.uw a0, a0, a0 +# CHECK-NEXT: [0,48] . . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . . sh2add.uw a0, a0, a0 +# CHECK-NEXT: [0,49] . . . . . DPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . . sh3add.uw a0, a0, a0 +# CHECK-NEXT: [0,50] . . . . . .DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . sh1add a0, a0, a0 +# CHECK-NEXT: [0,51] . . . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . sh2add a0, a0, a0 +# CHECK-NEXT: [0,52] . . . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . sh3add a0, a0, a0 +# CHECK-NEXT: [0,53] . . . . . . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . . andn a0, a0, a0 +# CHECK-NEXT: [0,54] . . . . . . . DPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . . orn a0, a0, a0 +# CHECK-NEXT: [0,55] . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . xnor a0, a0, a0 +# CHECK-NEXT: [0,56] . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . sext.b a0, a0 +# CHECK-NEXT: [0,57] . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . sext.h a0, a0 +# CHECK-NEXT: [0,58] . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . . zext.h a0, a0 +# CHECK-NEXT: [0,59] . . . . . . . . .DPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . . min a0, a0, a0 +# CHECK-NEXT: [0,60] . . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . minu a0, a0, a0 +# CHECK-NEXT: [0,61] . . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . max a0, a0, a0 +# CHECK-NEXT: [0,62] . . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . maxu a0, a0, a0 +# CHECK-NEXT: [0,63] . . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . . rol a0, a0, a0 +# CHECK-NEXT: [0,64] . . . . . . . . . .DPPPPPPPPPPPPPPPeER. . . . . . . . . . . . . ror a0, a0, a0 +# CHECK-NEXT: [0,65] . . . . . . . . . . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . rori a0, a0, 1 +# CHECK-NEXT: [0,66] . . . . . . . . . . DPPPPPPPPPPPPPPPPeeeER . . . . . . . . . . . . clz a0, a0 +# CHECK-NEXT: [0,67] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPeeeER . . . . . . . . . . . clzw a0, a0 +# CHECK-NEXT: [0,68] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPeeeER. . . . . . . . . . . ctz a0, a0 +# CHECK-NEXT: [0,69] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPeeeER . . . . . . . . . . ctzw a0, a0 +# CHECK-NEXT: [0,70] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeER . . . . . . . . . cpop a0, a0 +# CHECK-NEXT: [0,71] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,72] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeER. . . . . . . . . cpopw a0, a0 +# CHECK-NEXT: [0,73] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,74] . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . rev8 a0, a0 +# CHECK-NEXT: [0,75] . . . . . . . . . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . orc.b a0, a0 +# CHECK-NEXT: [0,76] . . . . . . . . . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . . . . . lb a0, 0(a0) +# CHECK-NEXT: [0,77] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . add a0, a0, a0 +# CHECK-NEXT: [0,78] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . . . . lh a0, 0(a0) +# CHECK-NEXT: [0,79] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . and a0, a0, a0 +# CHECK-NEXT: [0,80] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . . . lw a0, 0(a0) +# CHECK-NEXT: [0,81] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . or a0, a0, a0 +# CHECK-NEXT: [0,82] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . . ld a0, 0(a0) +# CHECK-NEXT: [0,83] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . xor a0, a0, a0 +# CHECK-NEXT: [0,84] . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . lbu a0, 0(a0) +# CHECK-NEXT: [0,85] . . . . . . . . . . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . addi a0, a0, 1 +# CHECK-NEXT: [0,86] . . . . . . . . . . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . lhu a0, 0(a0) +# CHECK-NEXT: [0,87] . . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . sub a0, a0, a0 +# CHECK-NEXT: [0,88] . . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER. lwu a0, 0(a0) +# CHECK-NEXT: [0,89] . . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. addw a0, a0, a0 +# CHECK-NEXT: [0,90] . . . . . . . . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER jr a0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/RISCV/XiangShan/load-to-alu.s b/llvm/test/tools/llvm-mca/RISCV/XiangShan/load-to-alu.s index e1925e7647e33..9d5f9d2ba2aa0 100644 --- a/llvm/test/tools/llvm-mca/RISCV/XiangShan/load-to-alu.s +++ b/llvm/test/tools/llvm-mca/RISCV/XiangShan/load-to-alu.s @@ -56,10 +56,17 @@ addi a2, a1, 1 # CHECK-NEXT: - - - 1.00 - - - - - - - - - - - - - addi a2, a1, 1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeeeER ld a1, 0(a0) -# CHECK-NEXT: [0,1] D====eER addi a2, a1, 1 +# CHECK-NEXT: [0,1] DPPPPeER addi a2, a1, 1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/SystemZ/stm-lm.s b/llvm/test/tools/llvm-mca/SystemZ/stm-lm.s index a4b5190c32ec7..a8e7bbee8ceec 100644 --- a/llvm/test/tools/llvm-mca/SystemZ/stm-lm.s +++ b/llvm/test/tools/llvm-mca/SystemZ/stm-lm.s @@ -51,15 +51,22 @@ lmg %r6, %r15, 48(%r15) # CHECK-NEXT: - - - - 0.10 4.90 - - - - - - - lmg %r6, %r15, 48(%r15) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . . stmg %r6, %r15, 48(%r15) # CHECK-NEXT: [0,1] .DeeeeeeeeeeER . . . . . lmg %r6, %r15, 48(%r15) -# CHECK-NEXT: [1,0] . D=========eER. . . . . stmg %r6, %r15, 48(%r15) -# CHECK-NEXT: [1,1] . D========eeeeeeeeeeER . . . lmg %r6, %r15, 48(%r15) -# CHECK-NEXT: [2,0] . D=================eER. . . stmg %r6, %r15, 48(%r15) -# CHECK-NEXT: [2,1] . D================eeeeeeeeeeER lmg %r6, %r15, 48(%r15) +# CHECK-NEXT: [1,0] . DPPPPPPPPPeER. . . . . stmg %r6, %r15, 48(%r15) +# CHECK-NEXT: [1,1] . DPPPPPPPPeeeeeeeeeeER . . . lmg %r6, %r15, 48(%r15) +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPPPPPPPeER. . . stmg %r6, %r15, 48(%r15) +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPPPPeeeeeeeeeeER lmg %r6, %r15, 48(%r15) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/AlderlakeP/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/AlderlakeP/independent-load-stores.s index f70ce42d115f2..8b94d3c1f03ec 100644 --- a/llvm/test/tools/llvm-mca/X86/AlderlakeP/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/AlderlakeP/independent-load-stores.s @@ -84,11 +84,17 @@ # ALL-NEXT: 1.00 - 0.33 0.33 1.00 - - 1.00 - - 0.34 - - addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 0123456789 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 0123456789 # NOALIAS-NEXT: Index 0123456789 0123 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 01234 +# YESALIAS: 0123456789 0123456789 0123456789 01234 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # NOALIAS: [0,0] DeeeeeeeeeeeeER. . . addq $44, 64(%r14) @@ -103,11 +109,11 @@ # NOALIAS-NEXT: [0,9] . . DeeeeeeeeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeeeeeeeER. . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] .D===========eeeeeeeeeeeeER . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] . D======================eeeeeeeeeeeeER . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] . D=================================eeeeeeeeeeeeER . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D============================================eeeeeeeeeeeeER . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D=======================================================eeeeeeeeeeeeER addq $44, 384(%r14) +# YESALIAS-NEXT: [0,1] .DPPPPPPPPPPPeeeeeeeeeeeeER . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] . DPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER addq $44, 384(%r14) # YESALIAS-NEXT: Truncated display due to cycle limit # ALL: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/AlderlakeP/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/AlderlakeP/zero-idioms.s index 66f647b1978f0..21f98663372aa 100644 --- a/llvm/test/tools/llvm-mca/X86/AlderlakeP/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/AlderlakeP/zero-idioms.s @@ -316,92 +316,99 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: - 1.00 - - - - - - - - - - - vpxor %ymm3, %ymm3, %ymm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . . subl %eax, %eax -# CHECK-NEXT: [0,1] D=eER. . . . . . . subq %rax, %rax -# CHECK-NEXT: [0,2] D==eeER . . . . . . xorl %eax, %eax -# CHECK-NEXT: [0,3] D====eeER . . . . . . xorq %rax, %rax +# CHECK-NEXT: [0,1] DPeER. . . . . . . subq %rax, %rax +# CHECK-NEXT: [0,2] DPPeeER . . . . . . xorl %eax, %eax +# CHECK-NEXT: [0,3] DPPPPeeER . . . . . . xorq %rax, %rax # CHECK-NEXT: [0,4] DeE-----R . . . . . . pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] D=eE----R . . . . . . pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D=eE---R . . . . . . pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] DPeE----R . . . . . . pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPeE---R . . . . . . pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .DeE----R . . . . . . pcmpgtb %xmm2, %xmm2 -# CHECK-NEXT: [0,8] .D=eE---R . . . . . . pcmpgtd %xmm2, %xmm2 -# CHECK-NEXT: [0,9] .D==eeeER . . . . . . pcmpgtq %xmm2, %xmm2 -# CHECK-NEXT: [0,10] .D=====eER. . . . . . pcmpgtw %xmm2, %xmm2 +# CHECK-NEXT: [0,8] .DPeE---R . . . . . . pcmpgtd %xmm2, %xmm2 +# CHECK-NEXT: [0,9] .DPPeeeER . . . . . . pcmpgtq %xmm2, %xmm2 +# CHECK-NEXT: [0,10] .DPPPPPeER. . . . . . pcmpgtw %xmm2, %xmm2 # CHECK-NEXT: [0,11] .D==eE---R. . . . . . vpcmpgtb %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,12] . D==eE--R. . . . . . vpcmpgtd %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,13] . D===eeeER . . . . . vpcmpgtq %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,14] . D======eER . . . . . vpcmpgtw %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,15] . D=======eER . . . . . vpcmpgtb %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,16] . D=======eER . . . . . vpcmpgtd %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,17] . D=======eeeER. . . . . vpcmpgtq %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,18] . D=======eE-R. . . . . vpcmpgtw %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,19] . D=======eE-R. . . . . vpcmpgtb %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,20] . D========eER. . . . . vpcmpgtd %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,21] . D=========eeeER . . . . vpcmpgtq %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,22] . D============eER . . . . vpcmpgtw %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,23] . D=============eER. . . . vpcmpgtb %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,24] . D============eER. . . . vpcmpgtd %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,25] . D============eeeER . . . vpcmpgtq %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,26] . D=============eE-R . . . vpcmpgtw %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,12] . DPPeE--R. . . . . . vpcmpgtd %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,13] . DPPPeeeER . . . . . vpcmpgtq %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,14] . DPPPPPPeER . . . . . vpcmpgtw %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,15] . DPPPPPPPeER . . . . . vpcmpgtb %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,16] . DPPPPPPPeER . . . . . vpcmpgtd %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,17] . DPPPPPPPeeeER. . . . . vpcmpgtq %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,18] . DPPPPPP=eE-R. . . . . vpcmpgtw %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,19] . DPPPPPP=eE-R. . . . . vpcmpgtb %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,20] . DPPPPPPPPeER. . . . . vpcmpgtd %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,21] . DPPPPPPPPPeeeER . . . . vpcmpgtq %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,22] . DPPPPPPPPPPPPeER . . . . vpcmpgtw %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,23] . DPPPPPPPPPPPPPeER. . . . vpcmpgtb %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,24] . DPPPPPPPPPPPPeER. . . . vpcmpgtd %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,25] . DPPPPPPPPPPPPeeeER . . . vpcmpgtq %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,26] . DPPPPPPPPPPPP=eE-R . . . vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . DeE--------------R . . . psubb %mm2, %mm2 -# CHECK-NEXT: [0,28] . D=eE-------------R . . . psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . D==eE------------R . . . psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . D==eE-----------R . . . psubw %mm2, %mm2 -# CHECK-NEXT: [0,31] . D==eE-----------R . . . psubb %xmm2, %xmm2 -# CHECK-NEXT: [0,32] . D===eE----------R . . . psubd %xmm2, %xmm2 -# CHECK-NEXT: [0,33] . D=====eE--------R . . . psubq %xmm2, %xmm2 -# CHECK-NEXT: [0,34] . D======eE-------R . . . psubw %xmm2, %xmm2 -# CHECK-NEXT: [0,35] . D============eE-R . . . vpsubb %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,36] . .D============eER . . . vpsubd %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,37] . .D=============eER . . . vpsubq %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,38] . .D==============eER . . . vpsubw %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,39] . .D===============eER. . . vpsubb %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,40] . .D================eER . . vpsubd %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,41] . .D=================eER . . vpsubq %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,42] . . D=================eER . . vpsubw %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,43] . . D==================eER . . vpsubb %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,44] . . D==================eER . . vpsubd %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,45] . . D==================eER . . vpsubq %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,46] . . D===================eER. . vpsubw %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,47] . . D===================eER. . vpsubb %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,48] . . D==================eER. . vpsubd %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,49] . . D===================eER . vpsubq %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,50] . . D===================eER . vpsubw %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,28] . DPeE-------------R . . . psubd %mm2, %mm2 +# CHECK-NEXT: [0,29] . DPPeE------------R . . . psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . DPPeE-----------R . . . psubw %mm2, %mm2 +# CHECK-NEXT: [0,31] . DPPeE-----------R . . . psubb %xmm2, %xmm2 +# CHECK-NEXT: [0,32] . DPPPeE----------R . . . psubd %xmm2, %xmm2 +# CHECK-NEXT: [0,33] . DPPPP=eE--------R . . . psubq %xmm2, %xmm2 +# CHECK-NEXT: [0,34] . DPPPPPPeE-------R . . . psubw %xmm2, %xmm2 +# CHECK-NEXT: [0,35] . DPPPPPPPPPPP=eE-R . . . vpsubb %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,36] . .DPPPPPPPPPPPPeER . . . vpsubd %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,37] . .DPPPPPPPPPPPPPeER . . . vpsubq %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,38] . .DPPPPPPPPPPPPPPeER . . . vpsubw %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,39] . .DPPPPPPPPPPPPPPPeER. . . vpsubb %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,40] . .DPPPPPPPPPPPPPPPPeER . . vpsubd %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,41] . .DPPPPPPPPPPPPPPPPPeER . . vpsubq %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,42] . . DPPPPPPPPPPPPPPPPPeER . . vpsubw %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,43] . . DPPPPPPPPPPPPPPPPPPeER . . vpsubb %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,44] . . DPPPPPPPPPPPPPPPPPPeER . . vpsubd %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,45] . . DPPPPPPPPPPPPPPPPPPeER . . vpsubq %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,46] . . DPPPPPPPPPPPPPPPPPP=eER. . vpsubw %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,47] . . DPPPPPPPPPPPPPPPPPP=eER. . vpsubb %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,48] . . DPPPPPPPPPPPPPPPPP=eER. . vpsubd %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,49] . . DPPPPPPPPPPPPPPPPP==eER . vpsubq %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,50] . . DPPPPPPPPPPPPPPPPP==eER . vpsubw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,51] . . DeE-------------------R . andnps %xmm0, %xmm0 # CHECK-NEXT: [0,52] . . D===eE----------------R . andnpd %xmm1, %xmm1 -# CHECK-NEXT: [0,53] . . D====eE---------------R . vandnps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,54] . . D===eE---------------R . vandnpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,55] . . D====eE--------------R . vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,56] . . D====eE--------------R . vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,53] . . DPPPPeE---------------R . vandnps %xmm2, %xmm2, %xmm2 +# CHECK-NEXT: [0,54] . . DPPPeE---------------R . vandnpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,55] . . DPPPPeE--------------R . vandnps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,56] . . DPPPPeE--------------R . vandnpd %ymm1, %ymm1, %ymm1 # CHECK-NEXT: [0,57] . . D====eE--------------R . pandn %mm2, %mm2 -# CHECK-NEXT: [0,58] . . D=====eE-------------R . pandn %xmm2, %xmm2 -# CHECK-NEXT: [0,59] . . D==================eER . vpandn %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,60] . . D==================eER . vpandn %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,61] . . D=====eE-------------R . vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,62] . . D====eE--------------R . vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,63] . . D===================eER. vpandn %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,64] . . D=====eE--------------R. vandnps %ymm2, %ymm2, %ymm5 -# CHECK-NEXT: [0,65] . . D====eE---------------R. vandnpd %ymm1, %ymm1, %ymm5 -# CHECK-NEXT: [0,66] . . .D==================eER. vpandn %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,58] . . DPPPPPeE-------------R . pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,59] . . DPPPPPPPPPPPPPPPP==eER . vpandn %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,60] . . DPPPPPPPPPPPPPPPPPPeER . vpandn %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,61] . . DPPPPPeE-------------R . vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,62] . . DPPPPeE--------------R . vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,63] . . DPPPPPPPPPPPPPPPPPPPeER. vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,64] . . DPPPPPeE--------------R. vandnps %ymm2, %ymm2, %ymm5 +# CHECK-NEXT: [0,65] . . DPPPPeE---------------R. vandnpd %ymm1, %ymm1, %ymm5 +# CHECK-NEXT: [0,66] . . .DPPPPPPPPPPPPPPPPPPeER. vpandn %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,67] . . .D=======eE-----------R. xorps %xmm0, %xmm0 -# CHECK-NEXT: [0,68] . . .D======eE------------R. xorpd %xmm1, %xmm1 -# CHECK-NEXT: [0,69] . . .D=======eE-----------R. vxorps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,70] . . .D========eE----------R. vxorpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,71] . . .D========eE----------R. vxorps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,72] . . . D========eE---------R. vxorpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,73] . . . D========eE---------R. pxor %mm2, %mm2 -# CHECK-NEXT: [0,74] . . . D=========eE--------R. pxor %xmm2, %xmm2 -# CHECK-NEXT: [0,75] . . . D=================eER. vpxor %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,76] . . . D==================eER vpxor %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,68] . . .DPPP===eE------------R. xorpd %xmm1, %xmm1 +# CHECK-NEXT: [0,69] . . .DPPPP===eE-----------R. vxorps %xmm2, %xmm2, %xmm2 +# CHECK-NEXT: [0,70] . . .DPPPPPPP=eE----------R. vxorpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,71] . . .DPPPPPPPPeE----------R. vxorps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,72] . . . DPPPPPPPPeE---------R. vxorpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,73] . . . DPP======eE---------R. pxor %mm2, %mm2 +# CHECK-NEXT: [0,74] . . . DPPPPPPPP=eE--------R. pxor %xmm2, %xmm2 +# CHECK-NEXT: [0,75] . . . DPPPPPPPPPPPPPPPPPeER. vpxor %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,76] . . . DPPPPPPPPPPPPPPPPPPeER vpxor %ymm3, %ymm3, %ymm3 # CHECK-NEXT: [0,77] . . . D==========eE--------R vxorps %xmm4, %xmm4, %xmm5 -# CHECK-NEXT: [0,78] . . . D=========eE--------R vxorpd %xmm1, %xmm1, %xmm3 +# CHECK-NEXT: [0,78] . . . DPPPPPPPP=eE--------R vxorpd %xmm1, %xmm1, %xmm3 # CHECK-NEXT: [0,79] . . . D==========eE-------R vxorps %ymm4, %ymm4, %ymm5 -# CHECK-NEXT: [0,80] . . . D========eE---------R vxorpd %ymm1, %ymm1, %ymm3 -# CHECK-NEXT: [0,81] . . . D==========eE-------R vpxor %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,82] . . . D===========eE------R vpxor %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,80] . . . DPPPPPPPPeE---------R vxorpd %ymm1, %ymm1, %ymm3 +# CHECK-NEXT: [0,81] . . . DPPPPPPPPP=eE-------R vpxor %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,82] . . . DPPPPPPPPP==eE------R vpxor %ymm3, %ymm3, %ymm5 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s index 905e1aeaca7ed..181bf567cabf6 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/zero-idioms.s @@ -154,7 +154,14 @@ pxor %xmm2, %xmm2 # CHECK-NEXT: 1.00 - pxor %xmm2, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DE . . . . . subl %eax, %eax diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-1.s b/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-1.s index 99b9e0ce6e46a..0e86e02d8693e 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-1.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-1.s @@ -38,17 +38,24 @@ bsf %rax, %rcx # CHECK-NEXT: 1 3 1.00 bsfq %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . . imulq $5, %rcx, %rax # CHECK-NEXT: [0,1] D=eeeER . . . lzcntl %ecx, %eax -# CHECK-NEXT: [0,2] D====eER . . . andq %rcx, %rax -# CHECK-NEXT: [0,3] D=====eeeER . . bsfq %rax, %rcx -# CHECK-NEXT: [1,0] .D=======eeeER . . imulq $5, %rcx, %rax -# CHECK-NEXT: [1,1] .D========eeeER. . lzcntl %ecx, %eax -# CHECK-NEXT: [1,2] .D===========eER . andq %rcx, %rax -# CHECK-NEXT: [1,3] .D============eeeER bsfq %rax, %rcx +# CHECK-NEXT: [0,2] DPPPPeER . . . andq %rcx, %rax +# CHECK-NEXT: [0,3] DPPPPPeeeER . . bsfq %rax, %rcx +# CHECK-NEXT: [1,0] .DPPPPPPPeeeER . . imulq $5, %rcx, %rax +# CHECK-NEXT: [1,1] .DPPPPPPP=eeeER. . lzcntl %ecx, %eax +# CHECK-NEXT: [1,2] .DPPPPPPPPPPPeER . andq %rcx, %rax +# CHECK-NEXT: [1,3] .DPPPPPPPPPPPPeeeER bsfq %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-2.s b/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-2.s index da943dc3f1bba..12be742d1bd62 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-2.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/clear-super-register-2.s @@ -43,18 +43,25 @@ addps %xmm0, %xmm0 # CHECK-NEXT: 1 3 1.00 addps %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234 # CHECK: [0,0] DeeeeeeeeeeeeeeER . . . . . . sqrtss %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeeeeeeE--------R . . . . . . movss (%eax), %xmm0 -# CHECK-NEXT: [0,2] D======eeeE-----R . . . . . . addps %xmm0, %xmm0 -# CHECK-NEXT: [1,0] D==============eeeeeeeeeeeeeeER . . . sqrtss %xmm0, %xmm0 +# CHECK-NEXT: [0,2] DPPPPPPeeeE-----R . . . . . . addps %xmm0, %xmm0 +# CHECK-NEXT: [1,0] DPPPPPPPPP=====eeeeeeeeeeeeeeER . . . sqrtss %xmm0, %xmm0 # CHECK-NEXT: [1,1] .DeeeeeeE---------------------R . . . movss (%eax), %xmm0 -# CHECK-NEXT: [1,2] .D======eeeE------------------R . . . addps %xmm0, %xmm0 -# CHECK-NEXT: [2,0] .D===========================eeeeeeeeeeeeeeER sqrtss %xmm0, %xmm0 +# CHECK-NEXT: [1,2] .DPPPPPPeeeE------------------R . . . addps %xmm0, %xmm0 +# CHECK-NEXT: [2,0] .DPPPPPPPPP==================eeeeeeeeeeeeeeER sqrtss %xmm0, %xmm0 # CHECK-NEXT: [2,1] .DeeeeeeE-----------------------------------R movss (%eax), %xmm0 -# CHECK-NEXT: [2,2] . D======eeeE-------------------------------R addps %xmm0, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPP=eeeE-------------------------------R addps %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -94,18 +101,25 @@ addps %xmm0, %xmm0 # CHECK-NEXT: 1 3 1.00 addps %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 012345 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeER . . . . . . . . . sqrtsd %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeeeeeeE---------------R . . . . . . . . . movsd (%eax), %xmm0 -# CHECK-NEXT: [0,2] D======eeeE------------R . . . . . . . . . addps %xmm0, %xmm0 -# CHECK-NEXT: [1,0] D=====================eeeeeeeeeeeeeeeeeeeeeER. . . . . sqrtsd %xmm0, %xmm0 +# CHECK-NEXT: [0,2] DPPPPPPeeeE------------R . . . . . . . . . addps %xmm0, %xmm0 +# CHECK-NEXT: [1,0] DPPPPPPPPP============eeeeeeeeeeeeeeeeeeeeeER. . . . . sqrtsd %xmm0, %xmm0 # CHECK-NEXT: [1,1] .DeeeeeeE-----------------------------------R. . . . . movsd (%eax), %xmm0 -# CHECK-NEXT: [1,2] .D======eeeE--------------------------------R. . . . . addps %xmm0, %xmm0 -# CHECK-NEXT: [2,0] .D=========================================eeeeeeeeeeeeeeeeeeeeeER sqrtsd %xmm0, %xmm0 +# CHECK-NEXT: [1,2] .DPPPPPPeeeE--------------------------------R. . . . . addps %xmm0, %xmm0 +# CHECK-NEXT: [2,0] .DPPPPPPPPP================================eeeeeeeeeeeeeeeeeeeeeER sqrtsd %xmm0, %xmm0 # CHECK-NEXT: [2,1] .DeeeeeeE--------------------------------------------------------R movsd (%eax), %xmm0 -# CHECK-NEXT: [2,2] . D======eeeE----------------------------------------------------R addps %xmm0, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPP=eeeE----------------------------------------------------R addps %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-cmp.s b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-cmp.s index d42a49b4b862d..50f05e396ab94 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-cmp.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-cmp.s @@ -49,15 +49,22 @@ cmovae %ebx, %eax # CHECK-NEXT: - - 1.00 1.00 - - - - cmovael %ebx, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . .. cmpl %eax, %eax -# CHECK-NEXT: [0,1] D=eeER .. cmovael %ebx, %eax -# CHECK-NEXT: [1,0] D===eER .. cmpl %eax, %eax -# CHECK-NEXT: [1,1] .D===eeER .. cmovael %ebx, %eax -# CHECK-NEXT: [2,0] .D=====eER.. cmpl %eax, %eax -# CHECK-NEXT: [2,1] . D=====eeER cmovael %ebx, %eax +# CHECK-NEXT: [0,1] DPeeER .. cmovael %ebx, %eax +# CHECK-NEXT: [1,0] DPPPeER .. cmpl %eax, %eax +# CHECK-NEXT: [1,1] .DPPPeeER .. cmovael %ebx, %eax +# CHECK-NEXT: [2,0] .DPPPPPeER.. cmpl %eax, %eax +# CHECK-NEXT: [2,1] . DPPPPPeeER cmovael %ebx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpeq.s b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpeq.s index 94ed93a94e7e3..b0f80b465efef 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpeq.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpeq.s @@ -66,30 +66,37 @@ pcmpeqw %xmm0, %xmm0 # CHECK-NEXT: - - - 0.99 - 0.01 - - pcmpeqw %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . pcmpeqb %mm0, %mm0 -# CHECK-NEXT: [0,1] D===eeeER . . . . . pcmpeqd %mm0, %mm0 -# CHECK-NEXT: [0,2] D======eeeER . . . . pcmpeqw %mm0, %mm0 +# CHECK-NEXT: [0,1] DPPPeeeER . . . . . pcmpeqd %mm0, %mm0 +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . . . pcmpeqw %mm0, %mm0 # CHECK-NEXT: [0,3] DeE--------R . . . . pcmpeqb %xmm0, %xmm0 # CHECK-NEXT: [0,4] .DeE-------R . . . . pcmpeqd %xmm0, %xmm0 -# CHECK-NEXT: [0,5] .D=eE------R . . . . pcmpeqq %xmm0, %xmm0 -# CHECK-NEXT: [0,6] .D==eE-----R . . . . pcmpeqw %xmm0, %xmm0 -# CHECK-NEXT: [1,0] .D========eeeER. . . . pcmpeqb %mm0, %mm0 -# CHECK-NEXT: [1,1] . D==========eeeER . . . pcmpeqd %mm0, %mm0 -# CHECK-NEXT: [1,2] . D=============eeeER . . pcmpeqw %mm0, %mm0 -# CHECK-NEXT: [1,3] . D==eE-------------R . . pcmpeqb %xmm0, %xmm0 -# CHECK-NEXT: [1,4] . D===eE------------R . . pcmpeqd %xmm0, %xmm0 -# CHECK-NEXT: [1,5] . D===eE-----------R . . pcmpeqq %xmm0, %xmm0 -# CHECK-NEXT: [1,6] . D====eE----------R . . pcmpeqw %xmm0, %xmm0 -# CHECK-NEXT: [2,0] . D===============eeeER . . pcmpeqb %mm0, %mm0 -# CHECK-NEXT: [2,1] . D==================eeeER . pcmpeqd %mm0, %mm0 -# CHECK-NEXT: [2,2] . D====================eeeER pcmpeqw %mm0, %mm0 -# CHECK-NEXT: [2,3] . D====eE------------------R pcmpeqb %xmm0, %xmm0 -# CHECK-NEXT: [2,4] . D=====eE-----------------R pcmpeqd %xmm0, %xmm0 -# CHECK-NEXT: [2,5] . D======eE----------------R pcmpeqq %xmm0, %xmm0 -# CHECK-NEXT: [2,6] . D======eE---------------R pcmpeqw %xmm0, %xmm0 +# CHECK-NEXT: [0,5] .DPeE------R . . . . pcmpeqq %xmm0, %xmm0 +# CHECK-NEXT: [0,6] .DPPeE-----R . . . . pcmpeqw %xmm0, %xmm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPeeeER. . . . pcmpeqb %mm0, %mm0 +# CHECK-NEXT: [1,1] . DPPPPPPPPPPeeeER . . . pcmpeqd %mm0, %mm0 +# CHECK-NEXT: [1,2] . DPPPPPPPPPPPPPeeeER . . pcmpeqw %mm0, %mm0 +# CHECK-NEXT: [1,3] . DPPeE-------------R . . pcmpeqb %xmm0, %xmm0 +# CHECK-NEXT: [1,4] . DPPPeE------------R . . pcmpeqd %xmm0, %xmm0 +# CHECK-NEXT: [1,5] . DPPPeE-----------R . . pcmpeqq %xmm0, %xmm0 +# CHECK-NEXT: [1,6] . DPPPPeE----------R . . pcmpeqw %xmm0, %xmm0 +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPPPPPeeeER . . pcmpeqb %mm0, %mm0 +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPPPPPPeeeER . pcmpeqd %mm0, %mm0 +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPPPPPPeeeER pcmpeqw %mm0, %mm0 +# CHECK-NEXT: [2,3] . DPPPPeE------------------R pcmpeqb %xmm0, %xmm0 +# CHECK-NEXT: [2,4] . DPPPPPeE-----------------R pcmpeqd %xmm0, %xmm0 +# CHECK-NEXT: [2,5] . DPPPPPPeE----------------R pcmpeqq %xmm0, %xmm0 +# CHECK-NEXT: [2,6] . DPPPPPPeE---------------R pcmpeqw %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpgt.s b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpgt.s index 1e387719a10ab..ca265ec8fdabc 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpgt.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-pcmpgt.s @@ -67,26 +67,33 @@ pcmpgtw %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - pcmpgtw %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . pcmpgtb %mm0, %mm0 -# CHECK-NEXT: [0,1] D===eeeER . . . . . pcmpgtd %mm0, %mm0 -# CHECK-NEXT: [0,2] D======eeeER . . . . pcmpgtw %mm0, %mm0 +# CHECK-NEXT: [0,1] DPPPeeeER . . . . . pcmpgtd %mm0, %mm0 +# CHECK-NEXT: [0,2] DPPPPPPeeeER . . . . pcmpgtw %mm0, %mm0 # CHECK-NEXT: [0,3] D----------R . . . . pcmpgtb %xmm0, %xmm0 # CHECK-NEXT: [0,4] .D---------R . . . . pcmpgtd %xmm0, %xmm0 # CHECK-NEXT: [0,5] .D---------R . . . . pcmpgtq %xmm0, %xmm0 # CHECK-NEXT: [0,6] .D---------R . . . . pcmpgtw %xmm0, %xmm0 -# CHECK-NEXT: [1,0] .D========eeeER. . . . pcmpgtb %mm0, %mm0 -# CHECK-NEXT: [1,1] . D==========eeeER . . . pcmpgtd %mm0, %mm0 -# CHECK-NEXT: [1,2] . D=============eeeER . . pcmpgtw %mm0, %mm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPeeeER. . . . pcmpgtb %mm0, %mm0 +# CHECK-NEXT: [1,1] . DPPPPPPPPPPeeeER . . . pcmpgtd %mm0, %mm0 +# CHECK-NEXT: [1,2] . DPPPPPPPPPPPPPeeeER . . pcmpgtw %mm0, %mm0 # CHECK-NEXT: [1,3] . D-----------------R . . pcmpgtb %xmm0, %xmm0 # CHECK-NEXT: [1,4] . D-----------------R . . pcmpgtd %xmm0, %xmm0 # CHECK-NEXT: [1,5] . D----------------R . . pcmpgtq %xmm0, %xmm0 # CHECK-NEXT: [1,6] . D----------------R . . pcmpgtw %xmm0, %xmm0 -# CHECK-NEXT: [2,0] . D===============eeeER . . pcmpgtb %mm0, %mm0 -# CHECK-NEXT: [2,1] . D==================eeeER . pcmpgtd %mm0, %mm0 -# CHECK-NEXT: [2,2] . D====================eeeER pcmpgtw %mm0, %mm0 +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPPPPPeeeER . . pcmpgtb %mm0, %mm0 +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPPPPPPeeeER . pcmpgtd %mm0, %mm0 +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPPPPPPeeeER pcmpgtw %mm0, %mm0 # CHECK-NEXT: [2,3] . D------------------------R pcmpgtb %xmm0, %xmm0 # CHECK-NEXT: [2,4] . D------------------------R pcmpgtd %xmm0, %xmm0 # CHECK-NEXT: [2,5] . D------------------------R pcmpgtq %xmm0, %xmm0 diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-1.s b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-1.s index b685814b88159..17c22f345715f 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-1.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-1.s @@ -50,15 +50,22 @@ sbb %eax, %eax # CHECK-NEXT: - - 0.67 0.67 - 0.67 - - sbbl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . sbbl %edx, %edx -# CHECK-NEXT: [0,1] D==eeER . . sbbl %eax, %eax -# CHECK-NEXT: [1,0] .D===eeER . . sbbl %edx, %edx -# CHECK-NEXT: [1,1] .D=====eeER . sbbl %eax, %eax -# CHECK-NEXT: [2,0] . D======eeER . sbbl %edx, %edx -# CHECK-NEXT: [2,1] . D========eeER sbbl %eax, %eax +# CHECK-NEXT: [0,1] DPPeeER . . sbbl %eax, %eax +# CHECK-NEXT: [1,0] .DPPPeeER . . sbbl %edx, %edx +# CHECK-NEXT: [1,1] .DPPPPPeeER . sbbl %eax, %eax +# CHECK-NEXT: [2,0] . DPPPPPPeeER . sbbl %edx, %edx +# CHECK-NEXT: [2,1] . DPPPPPPPPeeER sbbl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-2.s b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-2.s index 6df5e68f0bd21..4e94033c5d363 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-2.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/dependency-breaking-sbb-2.s @@ -53,18 +53,25 @@ sbb %eax, %eax # CHECK-NEXT: - - 1.00 - - 1.00 - - sbbl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . . imull %edx, %eax # CHECK-NEXT: [0,1] DeE--R . . . addl %edx, %edx -# CHECK-NEXT: [0,2] D===eeER . . . sbbl %eax, %eax -# CHECK-NEXT: [1,0] .D====eeeER . . imull %edx, %eax +# CHECK-NEXT: [0,2] DPPPeeER . . . sbbl %eax, %eax +# CHECK-NEXT: [1,0] .DPPPPeeeER . . imull %edx, %eax # CHECK-NEXT: [1,1] .DeE------R . . addl %edx, %edx -# CHECK-NEXT: [1,2] .D=======eeER . . sbbl %eax, %eax -# CHECK-NEXT: [2,0] . D========eeeER . imull %edx, %eax +# CHECK-NEXT: [1,2] .DPPPPPPPeeER . . sbbl %eax, %eax +# CHECK-NEXT: [2,0] . DPPPPPPPPeeeER . imull %edx, %eax # CHECK-NEXT: [2,1] . DeE----------R . addl %edx, %edx -# CHECK-NEXT: [2,2] . D===========eeER sbbl %eax, %eax +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPeeER sbbl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/int-to-fpu-forwarding-3.s b/llvm/test/tools/llvm-mca/X86/Barcelona/int-to-fpu-forwarding-3.s index ccdf431ddc7a2..1c03fca0be9f7 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/int-to-fpu-forwarding-3.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/int-to-fpu-forwarding-3.s @@ -49,18 +49,25 @@ pinsrw $1, %eax, %xmm0 # CHECK-NEXT: - - - 1.00 - 1.00 - - pinsrw $1, %eax, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . addl %eax, %eax -# CHECK-NEXT: [0,1] D=eeER . . pinsrw $0, %eax, %xmm0 -# CHECK-NEXT: [0,2] .D==eeER . . pinsrw $1, %eax, %xmm0 +# CHECK-NEXT: [0,1] DPeeER . . pinsrw $0, %eax, %xmm0 +# CHECK-NEXT: [0,2] .DPPeeER . . pinsrw $1, %eax, %xmm0 # CHECK-NEXT: [1,0] .DeE---R . . addl %eax, %eax -# CHECK-NEXT: [1,1] . D===eeER. . pinsrw $0, %eax, %xmm0 -# CHECK-NEXT: [1,2] . D=====eeER . pinsrw $1, %eax, %xmm0 +# CHECK-NEXT: [1,1] . DPPPeeER. . pinsrw $0, %eax, %xmm0 +# CHECK-NEXT: [1,2] . DPPPPPeeER . pinsrw $1, %eax, %xmm0 # CHECK-NEXT: [2,0] . DeE-----R . addl %eax, %eax -# CHECK-NEXT: [2,1] . D======eeER . pinsrw $0, %eax, %xmm0 -# CHECK-NEXT: [2,2] . D=======eeER pinsrw $1, %eax, %xmm0 +# CHECK-NEXT: [2,1] . DPPPPPPeeER . pinsrw $0, %eax, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPPPPeeER pinsrw $1, %eax, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/load-store-throughput.s b/llvm/test/tools/llvm-mca/X86/Barcelona/load-store-throughput.s index 97649581c2192..12204b541e1ba 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/load-store-throughput.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/load-store-throughput.s @@ -120,12 +120,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movb %dil, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movb %spl, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movb (%rcx), %bpl # CHECK-NEXT: [0,2] D=eeeeeER movb (%rdx), %sil -# CHECK-NEXT: [0,3] D=eE----R movb %dil, (%rbx) +# CHECK-NEXT: [0,3] DPeE----R movb %dil, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -217,12 +224,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movw %di, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movw %sp, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movw (%rcx), %bp # CHECK-NEXT: [0,2] D=eeeeeER movw (%rdx), %si -# CHECK-NEXT: [0,3] D=eE----R movw %di, (%rbx) +# CHECK-NEXT: [0,3] DPeE----R movw %di, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -314,12 +328,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movl %edi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movl %esp, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movl (%rcx), %ebp # CHECK-NEXT: [0,2] D=eeeeeER movl (%rdx), %esi -# CHECK-NEXT: [0,3] D=eE----R movl %edi, (%rbx) +# CHECK-NEXT: [0,3] DPeE----R movl %edi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -411,12 +432,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movq %rdi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movq %rsp, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movq (%rcx), %rbp # CHECK-NEXT: [0,2] D=eeeeeER movq (%rdx), %rsi -# CHECK-NEXT: [0,3] D=eE----R movq %rdi, (%rbx) +# CHECK-NEXT: [0,3] DPeE----R movq %rdi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -508,12 +536,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movd %mm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movd %mm0, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movd (%rcx), %mm1 # CHECK-NEXT: [0,2] D=eeeeeER movd (%rdx), %mm2 -# CHECK-NEXT: [0,3] D=eE----R movd %mm3, (%rbx) +# CHECK-NEXT: [0,3] DPeE----R movd %mm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -605,12 +640,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movaps %xmm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeER . . movaps %xmm0, (%rax) # CHECK-NEXT: [0,1] DeeeeeeER. movaps (%rcx), %xmm1 # CHECK-NEXT: [0,2] D=eeeeeeER movaps (%rdx), %xmm2 -# CHECK-NEXT: [0,3] D=eE-----R movaps %xmm3, (%rbx) +# CHECK-NEXT: [0,3] DPeE-----R movaps %xmm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/load-throughput.s b/llvm/test/tools/llvm-mca/X86/Barcelona/load-throughput.s index 1e1bfd5c98ca6..f4aca85cff20d 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/load-throughput.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/load-throughput.s @@ -120,7 +120,14 @@ movaps (%rbx), %xmm3 # CHECK-NEXT: - - - - - - 1.00 - movb (%rbx), %dil # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. movb (%rax), %spl # CHECK-NEXT: [0,1] DeeeeeER. movb (%rcx), %bpl @@ -217,7 +224,14 @@ movaps (%rbx), %xmm3 # CHECK-NEXT: - - - - - - 1.00 - movw (%rbx), %di # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. movw (%rax), %sp # CHECK-NEXT: [0,1] DeeeeeER. movw (%rcx), %bp @@ -314,7 +328,14 @@ movaps (%rbx), %xmm3 # CHECK-NEXT: - - - - - - 1.00 - movl (%rbx), %edi # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. movl (%rax), %esp # CHECK-NEXT: [0,1] DeeeeeER. movl (%rcx), %ebp @@ -411,7 +432,14 @@ movaps (%rbx), %xmm3 # CHECK-NEXT: - - - - - - 1.00 - movq (%rbx), %rdi # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. movq (%rax), %rsp # CHECK-NEXT: [0,1] DeeeeeER. movq (%rcx), %rbp @@ -508,7 +536,14 @@ movaps (%rbx), %xmm3 # CHECK-NEXT: - - - - - - 1.00 - movd (%rbx), %mm3 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. movd (%rax), %mm0 # CHECK-NEXT: [0,1] DeeeeeER. movd (%rcx), %mm1 @@ -605,7 +640,14 @@ movaps (%rbx), %xmm3 # CHECK-NEXT: - - - - - - 1.00 - movaps (%rbx), %xmm3 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeeER. movaps (%rax), %xmm0 # CHECK-NEXT: [0,1] DeeeeeeER. movaps (%rcx), %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/one-idioms.s b/llvm/test/tools/llvm-mca/X86/Barcelona/one-idioms.s index 2021863416260..7e900114d590d 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/one-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/one-idioms.s @@ -69,16 +69,23 @@ pcmpeqw %xmm2, %xmm2 # CHECK-NEXT: - - - 0.79 - 0.21 - - pcmpeqw %xmm2, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER .. pcmpeqb %mm2, %mm2 -# CHECK-NEXT: [0,1] D===eeeER .. pcmpeqd %mm2, %mm2 -# CHECK-NEXT: [0,2] D======eeeER pcmpeqw %mm2, %mm2 +# CHECK-NEXT: [0,1] DPPPeeeER .. pcmpeqd %mm2, %mm2 +# CHECK-NEXT: [0,2] DPPPPPPeeeER pcmpeqw %mm2, %mm2 # CHECK-NEXT: [0,3] DeE--------R pcmpeqb %xmm2, %xmm2 # CHECK-NEXT: [0,4] .DeE-------R pcmpeqd %xmm2, %xmm2 -# CHECK-NEXT: [0,5] .D=eE------R pcmpeqq %xmm2, %xmm2 -# CHECK-NEXT: [0,6] .D==eE-----R pcmpeqw %xmm2, %xmm2 +# CHECK-NEXT: [0,5] .DPeE------R pcmpeqq %xmm2, %xmm2 +# CHECK-NEXT: [0,6] .DPPeE-----R pcmpeqw %xmm2, %xmm2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-2.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-2.s index 5412821894296..1c1202f096181 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-2.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-2.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.33 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulq %rax, %rbx # CHECK-NEXT: [0,1] D=eeeER. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D====eER addl %ecx, %ebx +# CHECK-NEXT: [0,2] DPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-3.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-3.s index 6cf7d93cb748e..557a6849908ed 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-3.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-3.s @@ -52,15 +52,22 @@ xor %bx, %dx # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - xorw %bx, %dx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. addw %cx, %dx # CHECK-NEXT: [0,1] DeER .. movw %ax, %dx -# CHECK-NEXT: [0,2] D=eER.. xorw %bx, %dx -# CHECK-NEXT: [1,0] D==eER. addw %cx, %dx +# CHECK-NEXT: [0,2] DPeER.. xorw %bx, %dx +# CHECK-NEXT: [1,0] DPPeER. addw %cx, %dx # CHECK-NEXT: [1,1] .DeE-R. movw %ax, %dx -# CHECK-NEXT: [1,2] .D=eER. xorw %bx, %dx -# CHECK-NEXT: [2,0] .D==eER addw %cx, %dx +# CHECK-NEXT: [1,2] .DPeER. xorw %bx, %dx +# CHECK-NEXT: [2,0] .DPPeER addw %cx, %dx # CHECK-NEXT: [2,1] .DeE--R movw %ax, %dx # CHECK-NEXT: [2,2] . DeE-R xorw %bx, %dx diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-4.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-4.s index f349c3e0e61ee..e398a94044065 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-4.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-4.s @@ -52,18 +52,25 @@ add %cx, %bx # CHECK-NEXT: - - 0.50 - - 0.50 - - addw %cx, %bx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER .. imulw %ax, %bx # CHECK-NEXT: [0,1] D=eeeER .. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D====eER .. addw %cx, %bx -# CHECK-NEXT: [1,0] D=====eeeER. imulw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPeER .. addw %cx, %bx +# CHECK-NEXT: [1,0] DPPPPPeeeER. imulw %ax, %bx # CHECK-NEXT: [1,1] .D=eeeE---R. lzcntw %ax, %bx -# CHECK-NEXT: [1,2] .D====eE--R. addw %cx, %bx -# CHECK-NEXT: [2,0] .D=====eeeER imulw %ax, %bx +# CHECK-NEXT: [1,2] .DPPPPeE--R. addw %cx, %bx +# CHECK-NEXT: [2,0] .DPPPPPeeeER imulw %ax, %bx # CHECK-NEXT: [2,1] .D==eeeE---R lzcntw %ax, %bx -# CHECK-NEXT: [2,2] . D====eE--R addw %cx, %bx +# CHECK-NEXT: [2,2] . DPPPPeE--R addw %cx, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-5.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-5.s index fcda63029475a..4e4cb3dc8028a 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-5.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-5.s @@ -43,7 +43,14 @@ lzcnt %ax, %bx ## partial register stall. # CHECK-NEXT: - - - 1.00 - - - - lzcntw %ax, %bx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . lzcntw %ax, %bx # CHECK-NEXT: [1,0] D=eeeER. lzcntw %ax, %bx diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-6.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-6.s index cb7cbda3d82f2..f26f667d3a77e 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-6.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-6.s @@ -54,16 +54,23 @@ lzcnt 2(%rsp), %cx # CHECK-NEXT: - - - 1.00 - - 1.00 - lzcntw 2(%rsp), %cx # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . . imull %edx, %ecx # CHECK-NEXT: [0,1] D=eeeeeeeeER . . lzcntw (%rsp), %cx # CHECK-NEXT: [0,2] .D=eeeeeeeeER . . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [1,0] .D=========eeeER . imull %edx, %ecx +# CHECK-NEXT: [1,0] .DPPPPPPPPPeeeER . imull %edx, %ecx # CHECK-NEXT: [1,1] . D=eeeeeeeeE--R . lzcntw (%rsp), %cx # CHECK-NEXT: [1,2] . D==eeeeeeeeE-R . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [2,0] . D==========eeeER imull %edx, %ecx +# CHECK-NEXT: [2,0] . DPPPPPPPPPPeeeER imull %edx, %ecx # CHECK-NEXT: [2,1] . D==eeeeeeeeE---R lzcntw (%rsp), %cx # CHECK-NEXT: [2,2] . D==eeeeeeeeE--R lzcntw 2(%rsp), %cx diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-7.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-7.s index 58981f9a3a914..bb58ef1ca6e3d 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-7.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update-7.s @@ -55,34 +55,41 @@ cmpl $1025, %eax # CHECK-NEXT: - - 0.33 0.33 - 0.34 - - cmpl $1025, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeER . . . . . . sete %r9b # CHECK-NEXT: [0,1] DeER . . . . . . movzbl %al, %eax -# CHECK-NEXT: [0,2] D=eER. . . . . . shll $2, %eax -# CHECK-NEXT: [0,3] D==eeeER . . . . . imull %ecx, %eax -# CHECK-NEXT: [0,4] .D====eER . . . . . cmpl $1025, %eax -# CHECK-NEXT: [1,0] .D=====eER. . . . . sete %r9b -# CHECK-NEXT: [1,1] .D====eE-R. . . . . movzbl %al, %eax -# CHECK-NEXT: [1,2] .D=====eER. . . . . shll $2, %eax -# CHECK-NEXT: [1,3] . D=====eeeER . . . . imull %ecx, %eax -# CHECK-NEXT: [1,4] . D========eER . . . . cmpl $1025, %eax -# CHECK-NEXT: [2,0] . D=========eER. . . . sete %r9b -# CHECK-NEXT: [2,1] . D========eE-R. . . . movzbl %al, %eax -# CHECK-NEXT: [2,2] . D========eER. . . . shll $2, %eax -# CHECK-NEXT: [2,3] . D=========eeeER . . . imull %ecx, %eax -# CHECK-NEXT: [2,4] . D============eER . . . cmpl $1025, %eax -# CHECK-NEXT: [3,0] . D=============eER. . . sete %r9b -# CHECK-NEXT: [3,1] . D===========eE-R. . . movzbl %al, %eax -# CHECK-NEXT: [3,2] . D============eER. . . shll $2, %eax -# CHECK-NEXT: [3,3] . D=============eeeER . . imull %ecx, %eax -# CHECK-NEXT: [3,4] . D================eER . . cmpl $1025, %eax -# CHECK-NEXT: [4,0] . D================eER. . sete %r9b -# CHECK-NEXT: [4,1] . D===============eE-R. . movzbl %al, %eax -# CHECK-NEXT: [4,2] . D================eER. . shll $2, %eax -# CHECK-NEXT: [4,3] . D=================eeeER. imull %ecx, %eax -# CHECK-NEXT: [4,4] . .D===================eER cmpl $1025, %eax +# CHECK-NEXT: [0,2] DPeER. . . . . . shll $2, %eax +# CHECK-NEXT: [0,3] DPPeeeER . . . . . imull %ecx, %eax +# CHECK-NEXT: [0,4] .DPPPPeER . . . . . cmpl $1025, %eax +# CHECK-NEXT: [1,0] .DPPPPPeER. . . . . sete %r9b +# CHECK-NEXT: [1,1] .DPPPPeE-R. . . . . movzbl %al, %eax +# CHECK-NEXT: [1,2] .DPPPPPeER. . . . . shll $2, %eax +# CHECK-NEXT: [1,3] . DPPPPPeeeER . . . . imull %ecx, %eax +# CHECK-NEXT: [1,4] . DPPPPPPPPeER . . . . cmpl $1025, %eax +# CHECK-NEXT: [2,0] . DPPPPPPPPPeER. . . . sete %r9b +# CHECK-NEXT: [2,1] . DPPPPPPPPeE-R. . . . movzbl %al, %eax +# CHECK-NEXT: [2,2] . DPPPPPPPPeER. . . . shll $2, %eax +# CHECK-NEXT: [2,3] . DPPPPPPPPPeeeER . . . imull %ecx, %eax +# CHECK-NEXT: [2,4] . DPPPPPPPPPPPPeER . . . cmpl $1025, %eax +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPeER. . . sete %r9b +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPeE-R. . . movzbl %al, %eax +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPeER. . . shll $2, %eax +# CHECK-NEXT: [3,3] . DPPPPPPPPPPPPPeeeER . . imull %ecx, %eax +# CHECK-NEXT: [3,4] . DPPPPPPPPPPPPPPPPeER . . cmpl $1025, %eax +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPeER. . sete %r9b +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPeE-R. . movzbl %al, %eax +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPPPPPeER. . shll $2, %eax +# CHECK-NEXT: [4,3] . DPPPPPPPPPPPPPPPPPeeeER. imull %ecx, %eax +# CHECK-NEXT: [4,4] . .DPPPPPPPPPPPPPPPPPPPeER cmpl $1025, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update.s b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update.s index e5cc4bc0f2c40..8fc736654b521 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/partial-reg-update.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.33 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulw %ax, %cx -# CHECK-NEXT: [0,1] D===eER. addb %al, %cl -# CHECK-NEXT: [0,2] D====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeER. addb %al, %cl +# CHECK-NEXT: [0,2] DPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-1.s b/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-1.s index deb69273d7c31..61b319005c7b5 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-1.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-1.s @@ -31,7 +31,14 @@ mulps (%rdi), %xmm1 # CHECK-NEXT: 2 11 1.00 * mulps (%rdi), %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . addps %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-2.s b/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-2.s index d57e9fb4a7987..0bb44407dc729 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-2.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-2.s @@ -30,7 +30,14 @@ imull (%rdi) # CHECK-NEXT: 4 9 1.00 * imull (%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . imull %esi diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-3.s b/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-3.s index 071207df27e77..c6c592334541b 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-3.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/read-advance-3.s @@ -29,7 +29,14 @@ add %rdx, %r8 # CHECK-NEXT: 1 1 0.33 addq %rdx, %r8 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . addq %rdi, %rsi # CHECK-NEXT: [0,1] DeeeeeeER addq (%rsp), %rsi diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-1.s b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-1.s index 46852e69dd9a7..6bfd58e33d5f5 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-1.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-1.s @@ -56,17 +56,24 @@ addps %xmm1, %xmm1 # CHECK-NEXT: - - - 1.00 - - - - addps %xmm1, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DR . . xorps %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER . . movaps %xmm0, %xmm1 -# CHECK-NEXT: [0,2] D=eeeER . addps %xmm1, %xmm1 +# CHECK-NEXT: [0,2] DPeeeER . addps %xmm1, %xmm1 # CHECK-NEXT: [1,0] D-----R . xorps %xmm0, %xmm0 # CHECK-NEXT: [1,1] .DeE--R . movaps %xmm0, %xmm1 -# CHECK-NEXT: [1,2] .D=eeeER. addps %xmm1, %xmm1 +# CHECK-NEXT: [1,2] .DPeeeER. addps %xmm1, %xmm1 # CHECK-NEXT: [2,0] .D-----R. xorps %xmm0, %xmm0 # CHECK-NEXT: [2,1] .D=eE--R. movaps %xmm0, %xmm1 -# CHECK-NEXT: [2,2] . D=eeeER addps %xmm1, %xmm1 +# CHECK-NEXT: [2,2] . DPeeeER addps %xmm1, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-2.s b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-2.s index 598319ee6b55a..28f2d93e0b66b 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-2.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-2.s @@ -72,36 +72,43 @@ movdqu %xmm5, %xmm0 # CHECK-NEXT: - - - 1.00 - - - - movdqu %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . . pxor %mm0, %mm0 -# CHECK-NEXT: [0,1] D=eER. . . . movq %mm0, %mm1 +# CHECK-NEXT: [0,1] DPeER. . . . movq %mm0, %mm1 # CHECK-NEXT: [0,2] D---R. . . . xorps %xmm0, %xmm0 # CHECK-NEXT: [0,3] D=eER. . . . movaps %xmm0, %xmm1 -# CHECK-NEXT: [0,4] .D=eER . . . movups %xmm1, %xmm2 -# CHECK-NEXT: [0,5] .D==eER . . . movapd %xmm2, %xmm3 -# CHECK-NEXT: [0,6] .D===eER . . . movupd %xmm3, %xmm4 -# CHECK-NEXT: [0,7] .D====eER . . . movdqa %xmm4, %xmm5 -# CHECK-NEXT: [0,8] . D====eER. . . movdqu %xmm5, %xmm0 +# CHECK-NEXT: [0,4] .DPeER . . . movups %xmm1, %xmm2 +# CHECK-NEXT: [0,5] .DPPeER . . . movapd %xmm2, %xmm3 +# CHECK-NEXT: [0,6] .DPPPeER . . . movupd %xmm3, %xmm4 +# CHECK-NEXT: [0,7] .DPPPPeER . . . movdqa %xmm4, %xmm5 +# CHECK-NEXT: [0,8] . DPPPPeER. . . movdqu %xmm5, %xmm0 # CHECK-NEXT: [1,0] . DeE----R. . . pxor %mm0, %mm0 -# CHECK-NEXT: [1,1] . D=eE---R. . . movq %mm0, %mm1 +# CHECK-NEXT: [1,1] . DPeE---R. . . movq %mm0, %mm1 # CHECK-NEXT: [1,2] . D------R. . . xorps %xmm0, %xmm0 # CHECK-NEXT: [1,3] . D==eE-R. . . movaps %xmm0, %xmm1 -# CHECK-NEXT: [1,4] . D===eER. . . movups %xmm1, %xmm2 -# CHECK-NEXT: [1,5] . D====eER . . movapd %xmm2, %xmm3 -# CHECK-NEXT: [1,6] . D=====eER . . movupd %xmm3, %xmm4 -# CHECK-NEXT: [1,7] . D=====eER . . movdqa %xmm4, %xmm5 -# CHECK-NEXT: [1,8] . D======eER . . movdqu %xmm5, %xmm0 +# CHECK-NEXT: [1,4] . DPPPeER. . . movups %xmm1, %xmm2 +# CHECK-NEXT: [1,5] . DPPPPeER . . movapd %xmm2, %xmm3 +# CHECK-NEXT: [1,6] . DPPPPPeER . . movupd %xmm3, %xmm4 +# CHECK-NEXT: [1,7] . DPPPPPeER . . movdqa %xmm4, %xmm5 +# CHECK-NEXT: [1,8] . DPPPPPPeER . . movdqu %xmm5, %xmm0 # CHECK-NEXT: [2,0] . DeE------R . . pxor %mm0, %mm0 -# CHECK-NEXT: [2,1] . D=eE-----R . . movq %mm0, %mm1 +# CHECK-NEXT: [2,1] . DPeE-----R . . movq %mm0, %mm1 # CHECK-NEXT: [2,2] . D-------R . . xorps %xmm0, %xmm0 # CHECK-NEXT: [2,3] . D====eE-R . . movaps %xmm0, %xmm1 -# CHECK-NEXT: [2,4] . D=====eER . . movups %xmm1, %xmm2 -# CHECK-NEXT: [2,5] . D======eER. . movapd %xmm2, %xmm3 -# CHECK-NEXT: [2,6] . .D======eER . movupd %xmm3, %xmm4 -# CHECK-NEXT: [2,7] . .D=======eER. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [2,8] . .D========eER movdqu %xmm5, %xmm0 +# CHECK-NEXT: [2,4] . DPPPPPeER . . movups %xmm1, %xmm2 +# CHECK-NEXT: [2,5] . DPPPPPPeER. . movapd %xmm2, %xmm3 +# CHECK-NEXT: [2,6] . .DPPPPPPeER . movupd %xmm3, %xmm4 +# CHECK-NEXT: [2,7] . .DPPPPPPPeER. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [2,8] . .DPPPPPPPPeER movdqu %xmm5, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-3.s b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-3.s index f37d4199514cf..c4c8f14d47c92 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-3.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-3.s @@ -65,30 +65,37 @@ movdqu %xmm5, %xmm0 # CHECK-NEXT: - - 1.00 - - - - - movdqu %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . .. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER . . .. movaps %xmm0, %xmm1 -# CHECK-NEXT: [0,2] D=eER. . .. movups %xmm1, %xmm2 -# CHECK-NEXT: [0,3] D==eER . .. movapd %xmm2, %xmm3 -# CHECK-NEXT: [0,4] .D==eER . .. movupd %xmm3, %xmm4 -# CHECK-NEXT: [0,5] .D===eER . .. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [0,6] .D====eER . .. movdqu %xmm5, %xmm0 +# CHECK-NEXT: [0,2] DPeER. . .. movups %xmm1, %xmm2 +# CHECK-NEXT: [0,3] DPPeER . .. movapd %xmm2, %xmm3 +# CHECK-NEXT: [0,4] .DPPeER . .. movupd %xmm3, %xmm4 +# CHECK-NEXT: [0,5] .DPPPeER . .. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [0,6] .DPPPPeER . .. movdqu %xmm5, %xmm0 # CHECK-NEXT: [1,0] .D------R . .. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,1] . D==eE-R . .. movaps %xmm0, %xmm1 -# CHECK-NEXT: [1,2] . D===eER . .. movups %xmm1, %xmm2 -# CHECK-NEXT: [1,3] . D====eER. .. movapd %xmm2, %xmm3 -# CHECK-NEXT: [1,4] . D=====eER .. movupd %xmm3, %xmm4 -# CHECK-NEXT: [1,5] . D=====eER .. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [1,6] . D======eER .. movdqu %xmm5, %xmm0 +# CHECK-NEXT: [1,2] . DPPPeER . .. movups %xmm1, %xmm2 +# CHECK-NEXT: [1,3] . DPPPPeER. .. movapd %xmm2, %xmm3 +# CHECK-NEXT: [1,4] . DPPPPPeER .. movupd %xmm3, %xmm4 +# CHECK-NEXT: [1,5] . DPPPPPeER .. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [1,6] . DPPPPPPeER .. movdqu %xmm5, %xmm0 # CHECK-NEXT: [2,0] . D--------R .. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [2,1] . D=====eE-R .. movaps %xmm0, %xmm1 -# CHECK-NEXT: [2,2] . D=====eER .. movups %xmm1, %xmm2 -# CHECK-NEXT: [2,3] . D======eER .. movapd %xmm2, %xmm3 -# CHECK-NEXT: [2,4] . D=======eER.. movupd %xmm3, %xmm4 -# CHECK-NEXT: [2,5] . D========eER. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [2,6] . D========eER movdqu %xmm5, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPPeER .. movups %xmm1, %xmm2 +# CHECK-NEXT: [2,3] . DPPPPPPeER .. movapd %xmm2, %xmm3 +# CHECK-NEXT: [2,4] . DPPPPPPPeER.. movupd %xmm3, %xmm4 +# CHECK-NEXT: [2,5] . DPPPPPPPPeER. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [2,6] . DPPPPPPPPeER movdqu %xmm5, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-4.s b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-4.s index 93c3e4c5fee59..9c553cf41c146 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-4.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-4.s @@ -59,23 +59,30 @@ mov %edx, %eax # CHECK-NEXT: - - 0.33 - - 0.67 - - movl %edx, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DR . . xorl %eax, %eax # CHECK-NEXT: [0,1] DeER . . movl %eax, %ebx -# CHECK-NEXT: [0,2] D=eER. . movl %ebx, %ecx -# CHECK-NEXT: [0,3] D==eER . movl %ecx, %edx -# CHECK-NEXT: [0,4] .D==eER . movl %edx, %eax +# CHECK-NEXT: [0,2] DPeER. . movl %ebx, %ecx +# CHECK-NEXT: [0,3] DPPeER . movl %ecx, %edx +# CHECK-NEXT: [0,4] .DPPeER . movl %edx, %eax # CHECK-NEXT: [1,0] .D----R . xorl %eax, %eax # CHECK-NEXT: [1,1] .DeE--R . movl %eax, %ebx -# CHECK-NEXT: [1,2] .D=eE-R . movl %ebx, %ecx -# CHECK-NEXT: [1,3] . D=eER . movl %ecx, %edx -# CHECK-NEXT: [1,4] . D==eER. movl %edx, %eax +# CHECK-NEXT: [1,2] .DPeE-R . movl %ebx, %ecx +# CHECK-NEXT: [1,3] . DPeER . movl %ecx, %edx +# CHECK-NEXT: [1,4] . DPPeER. movl %edx, %eax # CHECK-NEXT: [2,0] . D----R. xorl %eax, %eax # CHECK-NEXT: [2,1] . DeE--R. movl %eax, %ebx # CHECK-NEXT: [2,2] . DeE-R. movl %ebx, %ecx -# CHECK-NEXT: [2,3] . D=eER. movl %ecx, %edx -# CHECK-NEXT: [2,4] . D==eER movl %edx, %eax +# CHECK-NEXT: [2,3] . DPeER. movl %ecx, %edx +# CHECK-NEXT: [2,4] . DPPeER movl %edx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-5.s b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-5.s index 775781c5072d5..5fb9678d6eb16 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-5.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-5.s @@ -59,23 +59,30 @@ mov %rdx, %rax # CHECK-NEXT: - - 0.33 - - 0.67 - - movq %rdx, %rax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DR . . xorq %rax, %rax # CHECK-NEXT: [0,1] DeER . . movq %rax, %rbx -# CHECK-NEXT: [0,2] D=eER. . movq %rbx, %rcx -# CHECK-NEXT: [0,3] D==eER . movq %rcx, %rdx -# CHECK-NEXT: [0,4] .D==eER . movq %rdx, %rax +# CHECK-NEXT: [0,2] DPeER. . movq %rbx, %rcx +# CHECK-NEXT: [0,3] DPPeER . movq %rcx, %rdx +# CHECK-NEXT: [0,4] .DPPeER . movq %rdx, %rax # CHECK-NEXT: [1,0] .D----R . xorq %rax, %rax # CHECK-NEXT: [1,1] .DeE--R . movq %rax, %rbx -# CHECK-NEXT: [1,2] .D=eE-R . movq %rbx, %rcx -# CHECK-NEXT: [1,3] . D=eER . movq %rcx, %rdx -# CHECK-NEXT: [1,4] . D==eER. movq %rdx, %rax +# CHECK-NEXT: [1,2] .DPeE-R . movq %rbx, %rcx +# CHECK-NEXT: [1,3] . DPeER . movq %rcx, %rdx +# CHECK-NEXT: [1,4] . DPPeER. movq %rdx, %rax # CHECK-NEXT: [2,0] . D----R. xorq %rax, %rax # CHECK-NEXT: [2,1] . DeE--R. movq %rax, %rbx # CHECK-NEXT: [2,2] . DeE-R. movq %rbx, %rcx -# CHECK-NEXT: [2,3] . D=eER. movq %rcx, %rdx -# CHECK-NEXT: [2,4] . D==eER movq %rdx, %rax +# CHECK-NEXT: [2,3] . DPeER. movq %rcx, %rdx +# CHECK-NEXT: [2,4] . DPPeER movq %rdx, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-6.s b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-6.s index d3aee3db57356..70f8f0574e141 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-6.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/reg-move-elimination-6.s @@ -62,25 +62,32 @@ mov %esi, %ecx # CHECK-NEXT: - - 1.00 - - - - - movl %esi, %ecx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DR . . xorq %rsi, %rsi # CHECK-NEXT: [0,1] DeER . . addq %rcx, %rcx -# CHECK-NEXT: [0,2] D=eER. . addq %rcx, %rcx -# CHECK-NEXT: [0,3] D==eER . addq %rcx, %rcx -# CHECK-NEXT: [0,4] .D==eER . addq %rcx, %rcx +# CHECK-NEXT: [0,2] DPeER. . addq %rcx, %rcx +# CHECK-NEXT: [0,3] DPPeER . addq %rcx, %rcx +# CHECK-NEXT: [0,4] .DPPeER . addq %rcx, %rcx # CHECK-NEXT: [0,5] .DeE--R . movl %esi, %ecx # CHECK-NEXT: [1,0] .D----R . xorq %rsi, %rsi -# CHECK-NEXT: [1,1] .D=eE-R . addq %rcx, %rcx -# CHECK-NEXT: [1,2] . D=eER . addq %rcx, %rcx -# CHECK-NEXT: [1,3] . D==eER . addq %rcx, %rcx -# CHECK-NEXT: [1,4] . D===eER. addq %rcx, %rcx +# CHECK-NEXT: [1,1] .DPeE-R . addq %rcx, %rcx +# CHECK-NEXT: [1,2] . DPeER . addq %rcx, %rcx +# CHECK-NEXT: [1,3] . DPPeER . addq %rcx, %rcx +# CHECK-NEXT: [1,4] . DPPPeER. addq %rcx, %rcx # CHECK-NEXT: [1,5] . DeE---R. movl %esi, %ecx # CHECK-NEXT: [2,0] . D----R. xorq %rsi, %rsi # CHECK-NEXT: [2,1] . DeE--R. addq %rcx, %rcx -# CHECK-NEXT: [2,2] . D=eE-R. addq %rcx, %rcx -# CHECK-NEXT: [2,3] . D==eER. addq %rcx, %rcx -# CHECK-NEXT: [2,4] . D==eER addq %rcx, %rcx +# CHECK-NEXT: [2,2] . DPeE-R. addq %rcx, %rcx +# CHECK-NEXT: [2,3] . DPPeER. addq %rcx, %rcx +# CHECK-NEXT: [2,4] . DPPeER addq %rcx, %rcx # CHECK-NEXT: [2,5] . DeE--R movl %esi, %ecx # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/store-throughput.s b/llvm/test/tools/llvm-mca/X86/Barcelona/store-throughput.s index d9aabb783f1e7..9ea4d24cb05ff 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/store-throughput.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/store-throughput.s @@ -121,12 +121,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movb %dil, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movb %spl, (%rax) # CHECK-NEXT: [0,1] D=eER.. movb %bpl, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movb %sil, (%rdx) -# CHECK-NEXT: [0,3] D===eER movb %dil, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movb %sil, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movb %dil, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -219,12 +226,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movw %di, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movw %sp, (%rax) # CHECK-NEXT: [0,1] D=eER.. movw %bp, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movw %si, (%rdx) -# CHECK-NEXT: [0,3] D===eER movw %di, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movw %si, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movw %di, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -317,12 +331,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movl %edi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movl %esp, (%rax) # CHECK-NEXT: [0,1] D=eER.. movl %ebp, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movl %esi, (%rdx) -# CHECK-NEXT: [0,3] D===eER movl %edi, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movl %esi, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movl %edi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -415,12 +436,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movq %rdi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movq %rsp, (%rax) # CHECK-NEXT: [0,1] D=eER.. movq %rbp, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movq %rsi, (%rdx) -# CHECK-NEXT: [0,3] D===eER movq %rdi, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movq %rsi, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movq %rdi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -513,12 +541,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movd %mm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movd %mm0, (%rax) # CHECK-NEXT: [0,1] D=eER.. movd %mm1, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movd %mm2, (%rdx) -# CHECK-NEXT: [0,3] D===eER movd %mm3, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movd %mm2, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movd %mm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -611,12 +646,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: - - - - 1.00 - 1.00 - movaps %xmm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movaps %xmm0, (%rax) # CHECK-NEXT: [0,1] D=eER.. movaps %xmm1, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movaps %xmm2, (%rdx) -# CHECK-NEXT: [0,3] D===eER movaps %xmm3, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movaps %xmm2, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movaps %xmm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Barcelona/zero-idioms.s index 54ff0134bc8c4..f3c3782b87d75 100644 --- a/llvm/test/tools/llvm-mca/X86/Barcelona/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/zero-idioms.s @@ -159,7 +159,14 @@ pxor %xmm2, %xmm2 # CHECK-NEXT: - - - - - - - - pxor %xmm2, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DR . . . . . . .. subl %eax, %eax @@ -167,35 +174,35 @@ pxor %xmm2, %xmm2 # CHECK-NEXT: [0,2] DR . . . . . . .. xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . . . .. xorq %rax, %rax # CHECK-NEXT: [0,4] .DeeeER . . . . . .. pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] .D===eeeER. . . . . .. pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D======eeeER . . . . .. pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] .DPPPeeeER. . . . . .. pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPPPPPPeeeER . . . . .. pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D----------R . . . . .. pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] . D---------R . . . . .. pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] . D---------R . . . . .. pcmpgtq %xmm2, %xmm2 # CHECK-NEXT: [0,10] . D---------R . . . . .. pcmpgtw %xmm2, %xmm2 -# CHECK-NEXT: [0,11] . D========eeeER . . . .. psubb %mm2, %mm2 -# CHECK-NEXT: [0,12] . D==========eeeER . . . .. psubd %mm2, %mm2 -# CHECK-NEXT: [0,13] . D=============eER. . . .. psubq %mm2, %mm2 -# CHECK-NEXT: [0,14] . D==============eeeER . . .. psubw %mm2, %mm2 +# CHECK-NEXT: [0,11] . DPPPPPPPPeeeER . . . .. psubb %mm2, %mm2 +# CHECK-NEXT: [0,12] . DPPPPPPPPPPeeeER . . . .. psubd %mm2, %mm2 +# CHECK-NEXT: [0,13] . DPPPPPPPPPPPPPeER. . . .. psubq %mm2, %mm2 +# CHECK-NEXT: [0,14] . DPPPPPPPPPPPPPPeeeER . . .. psubw %mm2, %mm2 # CHECK-NEXT: [0,15] . D------------------R . . .. psubb %xmm2, %xmm2 # CHECK-NEXT: [0,16] . D-----------------R . . .. psubd %xmm2, %xmm2 # CHECK-NEXT: [0,17] . D-----------------R . . .. psubq %xmm2, %xmm2 # CHECK-NEXT: [0,18] . D-----------------R . . .. psubw %xmm2, %xmm2 -# CHECK-NEXT: [0,19] . D================eeeER . .. psubsb %mm2, %mm2 -# CHECK-NEXT: [0,20] . D==================eeeER . .. psubsw %mm2, %mm2 +# CHECK-NEXT: [0,19] . DPPPPPPPPPPPPPPPPeeeER . .. psubsb %mm2, %mm2 +# CHECK-NEXT: [0,20] . DPPPPPPPPPPPPPPPPPPeeeER . .. psubsw %mm2, %mm2 # CHECK-NEXT: [0,21] . DeE--------------------R . .. psubsb %xmm2, %xmm2 -# CHECK-NEXT: [0,22] . D=eE-------------------R . .. psubsw %xmm2, %xmm2 -# CHECK-NEXT: [0,23] . D=====================eeeER .. psubusb %mm2, %mm2 -# CHECK-NEXT: [0,24] . .D=======================eeeER.. psubusw %mm2, %mm2 -# CHECK-NEXT: [0,25] . .D=eE------------------------R.. psubusb %xmm2, %xmm2 -# CHECK-NEXT: [0,26] . .D==eE-----------------------R.. psubusw %xmm2, %xmm2 +# CHECK-NEXT: [0,22] . DPeE-------------------R . .. psubsw %xmm2, %xmm2 +# CHECK-NEXT: [0,23] . DPPPPPPPPPPPPPPPPPPPPPeeeER .. psubusb %mm2, %mm2 +# CHECK-NEXT: [0,24] . .DPPPPPPPPPPPPPPPPPPPPPPPeeeER.. psubusw %mm2, %mm2 +# CHECK-NEXT: [0,25] . .DPeE------------------------R.. psubusb %xmm2, %xmm2 +# CHECK-NEXT: [0,26] . .DPPeE-----------------------R.. psubusw %xmm2, %xmm2 # CHECK-NEXT: [0,27] . .D==eE-----------------------R.. andnps %xmm0, %xmm0 # CHECK-NEXT: [0,28] . . D==eE----------------------R.. andnpd %xmm1, %xmm1 -# CHECK-NEXT: [0,29] . . D=========================eER. pandn %mm2, %mm2 -# CHECK-NEXT: [0,30] . . D==eE-----------------------R. pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,29] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeER. pandn %mm2, %mm2 +# CHECK-NEXT: [0,30] . . DPPeE-----------------------R. pandn %xmm2, %xmm2 # CHECK-NEXT: [0,31] . . D---------------------------R. xorps %xmm0, %xmm0 # CHECK-NEXT: [0,32] . . D--------------------------R. xorpd %xmm1, %xmm1 -# CHECK-NEXT: [0,33] . . D=========================eER pxor %mm2, %mm2 +# CHECK-NEXT: [0,33] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeER pxor %mm2, %mm2 # CHECK-NEXT: [0,34] . . D---------------------------R pxor %xmm2, %xmm2 # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/add-sequence.s b/llvm/test/tools/llvm-mca/X86/BdVer2/add-sequence.s index 918fb1d1d3a41..fcc5115732753 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/add-sequence.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/add-sequence.s @@ -64,39 +64,46 @@ add %eax, %edx # CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - - - - - - - - - - - addl %eax, %edx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . .. addl %eax, %ecx # CHECK-NEXT: [0,1] DeER . . . . . .. addl %esi, %eax -# CHECK-NEXT: [0,2] D==eER . . . . .. addl %eax, %edx -# CHECK-NEXT: [1,0] D====eER . . . . .. addl %eax, %ecx +# CHECK-NEXT: [0,2] DP=eER . . . . .. addl %eax, %edx +# CHECK-NEXT: [1,0] DP===eER . . . . .. addl %eax, %ecx # CHECK-NEXT: [1,1] .D=eE--R . . . . .. addl %esi, %eax -# CHECK-NEXT: [1,2] .D===eER . . . . .. addl %eax, %edx -# CHECK-NEXT: [2,0] .D=====eER. . . . .. addl %eax, %ecx -# CHECK-NEXT: [2,1] .D=====eER. . . . .. addl %esi, %eax -# CHECK-NEXT: [2,2] . D======eER . . . .. addl %eax, %edx -# CHECK-NEXT: [3,0] . D========eER . . . .. addl %eax, %ecx -# CHECK-NEXT: [3,1] . D======eE--R . . . .. addl %esi, %eax -# CHECK-NEXT: [3,2] . D========eER . . . .. addl %eax, %edx -# CHECK-NEXT: [4,0] . D=========eER . . .. addl %eax, %ecx -# CHECK-NEXT: [4,1] . D=========eER . . .. addl %esi, %eax -# CHECK-NEXT: [4,2] . D===========eER . . .. addl %eax, %edx -# CHECK-NEXT: [5,0] . D=============eER. . .. addl %eax, %ecx -# CHECK-NEXT: [5,1] . D==========eE--R. . .. addl %esi, %eax -# CHECK-NEXT: [5,2] . D============eER. . .. addl %eax, %edx -# CHECK-NEXT: [6,0] . D==============eER . .. addl %eax, %ecx -# CHECK-NEXT: [6,1] . D==============eER . .. addl %esi, %eax -# CHECK-NEXT: [6,2] . D===============eER . .. addl %eax, %edx -# CHECK-NEXT: [7,0] . D=================eER .. addl %eax, %ecx -# CHECK-NEXT: [7,1] . D===============eE--R .. addl %esi, %eax -# CHECK-NEXT: [7,2] . D=================eER .. addl %eax, %edx -# CHECK-NEXT: [8,0] . .D==================eER .. addl %eax, %ecx -# CHECK-NEXT: [8,1] . .D==================eER .. addl %esi, %eax -# CHECK-NEXT: [8,2] . .D====================eER.. addl %eax, %edx -# CHECK-NEXT: [9,0] . .D======================eER addl %eax, %ecx -# CHECK-NEXT: [9,1] . . D===================eE--R addl %esi, %eax -# CHECK-NEXT: [9,2] . . D=====================eER addl %eax, %edx +# CHECK-NEXT: [1,2] .DPP=eER . . . . .. addl %eax, %edx +# CHECK-NEXT: [2,0] .DPPPP=eER. . . . .. addl %eax, %ecx +# CHECK-NEXT: [2,1] .DPP===eER. . . . .. addl %esi, %eax +# CHECK-NEXT: [2,2] . DPPPPP=eER . . . .. addl %eax, %edx +# CHECK-NEXT: [3,0] . DPPPPP===eER . . . .. addl %eax, %ecx +# CHECK-NEXT: [3,1] . DPPPPP=eE--R . . . .. addl %esi, %eax +# CHECK-NEXT: [3,2] . DPPPPPPP=eER . . . .. addl %eax, %edx +# CHECK-NEXT: [4,0] . DPPPPPPPP=eER . . .. addl %eax, %ecx +# CHECK-NEXT: [4,1] . DPPPPPP===eER . . .. addl %esi, %eax +# CHECK-NEXT: [4,2] . DPPPPPPPPPP=eER . . .. addl %eax, %edx +# CHECK-NEXT: [5,0] . DPPPPPPPPPP===eER. . .. addl %eax, %ecx +# CHECK-NEXT: [5,1] . DPPPPPPPPP=eE--R. . .. addl %esi, %eax +# CHECK-NEXT: [5,2] . DPPPPPPPPPPP=eER. . .. addl %eax, %edx +# CHECK-NEXT: [6,0] . DPPPPPPPPPPPPP=eER . .. addl %eax, %ecx +# CHECK-NEXT: [6,1] . DPPPPPPPPPPP===eER . .. addl %esi, %eax +# CHECK-NEXT: [6,2] . DPPPPPPPPPPPPPP=eER . .. addl %eax, %edx +# CHECK-NEXT: [7,0] . DPPPPPPPPPPPPPP===eER .. addl %eax, %ecx +# CHECK-NEXT: [7,1] . DPPPPPPPPPPPPPP=eE--R .. addl %esi, %eax +# CHECK-NEXT: [7,2] . DPPPPPPPPPPPPPPPP=eER .. addl %eax, %edx +# CHECK-NEXT: [8,0] . .DPPPPPPPPPPPPPPPPP=eER .. addl %eax, %ecx +# CHECK-NEXT: [8,1] . .DPPPPPPPPPPPPPPP===eER .. addl %esi, %eax +# CHECK-NEXT: [8,2] . .DPPPPPPPPPPPPPPPPPPP=eER.. addl %eax, %edx +# CHECK-NEXT: [9,0] . .DPPPPPPPPPPPPPPPPPPP===eER addl %eax, %ecx +# CHECK-NEXT: [9,1] . . DPPPPPPPPPPPPPPPPPP=eE--R addl %esi, %eax +# CHECK-NEXT: [9,2] . . DPPPPPPPPPPPPPPPPPPPP=eER addl %eax, %edx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-1.s index bc0aa4e6e3344..6d836113587eb 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-1.s @@ -38,17 +38,24 @@ bsf %rax, %rcx # CHECK-NEXT: 6 3 3.00 bsfq %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . . imulq $5, %rcx, %rax # CHECK-NEXT: [0,1] DeeE----R . . . lzcntl %ecx, %eax -# CHECK-NEXT: [0,2] D==eE---R . . . andq %rcx, %rax -# CHECK-NEXT: [0,3] .D==eeeER . . . bsfq %rax, %rcx -# CHECK-NEXT: [1,0] . D====eeeeeeER. . imulq $5, %rcx, %rax -# CHECK-NEXT: [1,1] . D======eeE-R. . lzcntl %ecx, %eax -# CHECK-NEXT: [1,2] . D========eER. . andq %rcx, %rax -# CHECK-NEXT: [1,3] . D========eeeER bsfq %rax, %rcx +# CHECK-NEXT: [0,2] DPPeE---R . . . andq %rcx, %rax +# CHECK-NEXT: [0,3] .DPPeeeER . . . bsfq %rax, %rcx +# CHECK-NEXT: [1,0] . DPPPPeeeeeeER. . imulq $5, %rcx, %rax +# CHECK-NEXT: [1,1] . DPPP===eeE-R. . lzcntl %ecx, %eax +# CHECK-NEXT: [1,2] . DPPPPPPPPeER. . andq %rcx, %rax +# CHECK-NEXT: [1,3] . DPPPPPPPPeeeER bsfq %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-2.s index 35754bba21cc9..9ab7c9c5f9b87 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-2.s @@ -70,19 +70,26 @@ vandps %xmm4, %xmm1, %xmm0 # CHECK-NEXT: 1 2 0.50 vandps %xmm4, %xmm1, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456 # CHECK: [0,0] DeeeeeeeeeER . . . . . . . . . . .. vdivps %ymm0, %ymm1, %ymm3 # CHECK-NEXT: [0,1] DeeeeeE----R . . . . . . . . . . .. vaddps %xmm0, %xmm1, %xmm3 -# CHECK-NEXT: [0,2] .D====eeeeeER . . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,3] .D======eeeeeER. . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,4] . D=======eeeeeER . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,5] . D=========eeeeeER . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,6] . D==========eeeeeER . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,7] . D============eeeeeER . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,8] . D=============eeeeeER. . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,9] . D==============eeeeeER . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,2] .DPPPPeeeeeER . . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,3] .DPPPP==eeeeeER. . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,4] . DPPP====eeeeeER . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,5] . DPPP======eeeeeER . . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,6] . DPP========eeeeeER . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,7] . DPP==========eeeeeER . . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,8] . DP============eeeeeER. . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,9] . DP=============eeeeeER . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,10] . D==============eeeeeER . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,11] . D===============eeeeeER . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,12] . .D===============eeeeeER . . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 @@ -90,25 +97,25 @@ vandps %xmm4, %xmm1, %xmm0 # CHECK-NEXT: [0,14] . . D================eeeeeER . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,15] . . D=================eeeeeER . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,16] . . D=================eeeeeER . . . . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,17] . . D======================eeER. . . . . . .. vandps %xmm4, %xmm1, %xmm0 -# CHECK-NEXT: [1,0] . . D=======================eeeeeeeeeER . . . . .. vdivps %ymm0, %ymm1, %ymm3 -# CHECK-NEXT: [1,1] . . D=======================eeeeeE----R . . . . .. vaddps %xmm0, %xmm1, %xmm3 -# CHECK-NEXT: [1,2] . . D===========================eeeeeER. . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,3] . . D=============================eeeeeER . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,4] . . .D==============================eeeeeER . . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,5] . . .D================================eeeeeER . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,6] . . . D=================================eeeeeER . . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,7] . . . D===================================eeeeeER. . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,8] . . . D====================================eeeeeER . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,9] . . . D=====================================eeeeeER . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,10] . . . D=====================================eeeeeER . .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,11] . . . D======================================eeeeeER. .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,12] . . . D======================================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,13] . . . D=======================================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,14] . . . .D=======================================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,15] . . . .D========================================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,16] . . . . D========================================eeeeeER.. vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,17] . . . . D=============================================eeER vandps %xmm4, %xmm1, %xmm0 +# CHECK-NEXT: [0,17] . . DPPPPPPPPPPPPPPPPPPPPPPeeER. . . . . . .. vandps %xmm4, %xmm1, %xmm0 +# CHECK-NEXT: [1,0] . . DPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeER . . . . .. vdivps %ymm0, %ymm1, %ymm3 +# CHECK-NEXT: [1,1] . . DPPPPPPPPPPPPPPPPPPPPPPPeeeeeE----R . . . . .. vaddps %xmm0, %xmm1, %xmm3 +# CHECK-NEXT: [1,2] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER. . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,3] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPP==eeeeeER . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,4] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPP====eeeeeER . . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,5] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPP======eeeeeER . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,6] . . . DPPPPPPPPPPPPPPPPPPPPPPPPP========eeeeeER . . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,7] . . . DPPPPPPPPPPPPPPPPPPPPPPPPP==========eeeeeER. . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,8] . . . DPPPPPPPPPPPPPPPPPPPPPPPP============eeeeeER . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,9] . . . DPPPPPPPPPPPPPPPPPPPPPPPP=============eeeeeER . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,10] . . . DPPPPPPPPPPPPPPPPPPPPPPP==============eeeeeER . .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,11] . . . DPPPPPPPPPPPPPPPPPPPPPPP===============eeeeeER. .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,12] . . . DPPPPPPPPPPPPPPPPPPPPPP================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,13] . . . DPPPPPPPPPPPPPPPPPPPPPP=================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,14] . . . .DPPPPPPPPPPPPPPPPPPPPP==================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,15] . . . .DPPPPPPPPPPPPPPPPPPPPP===================eeeeeER .. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,16] . . . . DPPPPPPPPPPPPPPPPPPPP====================eeeeeER.. vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,17] . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER vandps %xmm4, %xmm1, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-3.s b/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-3.s index 32a440966f876..12712d8e586af 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-3.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/clear-super-register-3.s @@ -43,15 +43,22 @@ addps %xmm0, %xmm0 # CHECK-NEXT: 1 5 1.00 addps %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] D=eeeeeeeeeER . . . sqrtss %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeeeeeE-----R . . . movss (%eax), %xmm0 -# CHECK-NEXT: [0,2] D======eeeeeER . . . addps %xmm0, %xmm0 -# CHECK-NEXT: [1,0] D===========eeeeeeeeeER sqrtss %xmm0, %xmm0 +# CHECK-NEXT: [0,2] DPPPPP=eeeeeER . . . addps %xmm0, %xmm0 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeeeeeeER sqrtss %xmm0, %xmm0 # CHECK-NEXT: [1,1] .D==eeeeeE------------R movss (%eax), %xmm0 -# CHECK-NEXT: [1,2] .D=========eeeeeE-----R addps %xmm0, %xmm0 +# CHECK-NEXT: [1,2] .DPPPPPPP==eeeeeE-----R addps %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -91,15 +98,22 @@ addps %xmm0, %xmm0 # CHECK-NEXT: 1 5 1.00 addps %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] D=eeeeeeeeeER . . . sqrtsd %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeeeeeE-----R . . . movsd (%eax), %xmm0 -# CHECK-NEXT: [0,2] D======eeeeeER . . . addps %xmm0, %xmm0 -# CHECK-NEXT: [1,0] D===========eeeeeeeeeER sqrtsd %xmm0, %xmm0 +# CHECK-NEXT: [0,2] DPPPPP=eeeeeER . . . addps %xmm0, %xmm0 +# CHECK-NEXT: [1,0] DPPPPPPPPPPPeeeeeeeeeER sqrtsd %xmm0, %xmm0 # CHECK-NEXT: [1,1] .D==eeeeeE------------R movsd (%eax), %xmm0 -# CHECK-NEXT: [1,2] .D=========eeeeeE-----R addps %xmm0, %xmm0 +# CHECK-NEXT: [1,2] .DPPPPPPP==eeeeeE-----R addps %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-cmp.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-cmp.s index fbf47e4d83ef8..968b220844414 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-cmp.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-cmp.s @@ -66,14 +66,21 @@ cmovae %ebx, %eax # CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - cmovael %ebx, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . cmpl %eax, %eax -# CHECK-NEXT: [0,1] D==eER . cmovael %ebx, %eax +# CHECK-NEXT: [0,1] DP=eER . cmovael %ebx, %eax # CHECK-NEXT: [1,0] DeE--R . cmpl %eax, %eax -# CHECK-NEXT: [1,1] D===eER. cmovael %ebx, %eax +# CHECK-NEXT: [1,1] DPPPeER. cmovael %ebx, %eax # CHECK-NEXT: [2,0] .D=eE-R. cmpl %eax, %eax -# CHECK-NEXT: [2,1] .D===eER cmovael %ebx, %eax +# CHECK-NEXT: [2,1] .DPPPeER cmovael %ebx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpeq.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpeq.s index a1a921e59fed1..6b1499b0da19f 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpeq.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpeq.s @@ -73,21 +73,28 @@ vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - 1.00 - - - - - vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . vpcmpeqb %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [0,1] D=eeER . vpcmpeqw %xmm1, %xmm1, %xmm2 # CHECK-NEXT: [0,2] DeeE-R . vpcmpeqd %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [0,3] D==eeER . vpcmpeqq %xmm3, %xmm3, %xmm0 +# CHECK-NEXT: [0,3] DPPeeER . vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK-NEXT: [1,0] .DeeE-R . vpcmpeqb %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [1,1] .D==eeER . vpcmpeqw %xmm1, %xmm1, %xmm2 # CHECK-NEXT: [1,2] .D=eeE-R . vpcmpeqd %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [1,3] .D===eeER . vpcmpeqq %xmm3, %xmm3, %xmm0 +# CHECK-NEXT: [1,3] .DPPPeeER . vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK-NEXT: [2,0] . D=eeE-R . vpcmpeqb %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [2,1] . D===eeER. vpcmpeqw %xmm1, %xmm1, %xmm2 # CHECK-NEXT: [2,2] . D==eeE-R. vpcmpeqd %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [2,3] . D====eeER vpcmpeqq %xmm3, %xmm3, %xmm0 +# CHECK-NEXT: [2,3] . DPPPPeeER vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpgt.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpgt.s index 09d67e761aea3..3bb414908a3a7 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpgt.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-pcmpgt.s @@ -74,7 +74,14 @@ vpcmpgtq %xmm3, %xmm3, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - vpcmpgtq %xmm3, %xmm3, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DR .. vpcmpgtb %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [0,1] DR .. vpcmpgtw %xmm1, %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-1.s index 233586223ad9a..05322c157204b 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-1.s @@ -67,14 +67,21 @@ sbb %eax, %eax # CHECK-NEXT: - - - - - 2.00 - - - - - - - - - - - - - - - - - sbbl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . sbbl %edx, %edx -# CHECK-NEXT: [0,1] D=eER. . sbbl %eax, %eax -# CHECK-NEXT: [1,0] D==eER . sbbl %edx, %edx -# CHECK-NEXT: [1,1] D===eER . sbbl %eax, %eax -# CHECK-NEXT: [2,0] .D===eER. sbbl %edx, %edx -# CHECK-NEXT: [2,1] .D====eER sbbl %eax, %eax +# CHECK-NEXT: [0,1] DPeER. . sbbl %eax, %eax +# CHECK-NEXT: [1,0] DPPeER . sbbl %edx, %edx +# CHECK-NEXT: [1,1] DPPPeER . sbbl %eax, %eax +# CHECK-NEXT: [2,0] .DPPPeER. sbbl %edx, %edx +# CHECK-NEXT: [2,1] .DPPPPeER sbbl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-2.s index 0b48eb597fc14..f15af81363af1 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dependency-breaking-sbb-2.s @@ -70,18 +70,25 @@ sbb %eax, %eax # CHECK-NEXT: - - - - - 1.33 0.67 - - - - - - - - - - - - - - - - sbbl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] D==eeeeER . . imull %edx, %eax # CHECK-NEXT: [0,1] DeE-----R . . addl %edx, %edx -# CHECK-NEXT: [0,2] D===eE--R . . sbbl %eax, %eax -# CHECK-NEXT: [1,0] D=====eeeeER . imull %edx, %eax +# CHECK-NEXT: [0,2] DP==eE--R . . sbbl %eax, %eax +# CHECK-NEXT: [1,0] DPPPP=eeeeER . imull %edx, %eax # CHECK-NEXT: [1,1] .DeE-------R . addl %edx, %edx -# CHECK-NEXT: [1,2] .D====eE---R . sbbl %eax, %eax -# CHECK-NEXT: [2,0] .D=======eeeeER imull %edx, %eax -# CHECK-NEXT: [2,1] .D==eE--------R addl %edx, %edx -# CHECK-NEXT: [2,2] . D=====eE----R sbbl %eax, %eax +# CHECK-NEXT: [1,2] .DP===eE---R . sbbl %eax, %eax +# CHECK-NEXT: [2,0] .DPPPPP==eeeeER imull %edx, %eax +# CHECK-NEXT: [2,1] .DP=eE--------R addl %edx, %edx +# CHECK-NEXT: [2,2] . DPP===eE----R sbbl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dependent-pmuld-paddd.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dependent-pmuld-paddd.s index ade61a03b6a62..41556b15df667 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dependent-pmuld-paddd.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dependent-pmuld-paddd.s @@ -64,39 +64,46 @@ vpaddd %xmm0, %xmm0, %xmm3 # CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - - - - vpaddd %xmm0, %xmm0, %xmm3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 01234 # CHECK: [0,0] DeeeeER . . . . . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [0,1] D====eeER . . . . . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [0,2] D======eeER . . . . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [1,0] D======eeeeER . . . . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [1,1] .D=========eeER. . . . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [1,2] .D===========eeER . . . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [2,0] .D===========eeeeER . . . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [2,1] .D===============eeER . . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [2,2] . D================eeER . . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [3,0] . D================eeeeER. . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [3,1] . D====================eeER . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [3,2] . D======================eeER . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [4,0] . D=====================eeeeER . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [4,1] . D=========================eeER . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [4,2] . D===========================eeER. . . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [5,0] . D===========================eeeeER . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [5,1] . D==============================eeER . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [5,2] . D================================eeER . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [6,0] . D================================eeeeER . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [6,1] . D====================================eeER. . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [6,2] . D=====================================eeER . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [7,0] . D=====================================eeeeER . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [7,1] . D=========================================eeER . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [7,2] . D===========================================eeER . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [8,0] . .D==========================================eeeeER. . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [8,1] . .D==============================================eeER . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [8,2] . .D================================================eeER . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [9,0] . .D================================================eeeeER . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [9,1] . . D===================================================eeER . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [9,2] . . D=====================================================eeER vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [0,1] DPPPPeeER . . . . . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [0,2] DPPPPPPeeER . . . . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [1,0] DPPPPPPeeeeER . . . . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [1,1] .DPPPPPPPPPeeER. . . . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [1,2] .DPPPPPPPPPPPeeER . . . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [2,0] .DPPPPPPPPPPPeeeeER . . . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [2,1] .DPPPPPPPPPPPPPPPeeER . . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPPeeER . . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPPPPeeeeER. . . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPPPPPPPPeeER . . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPPPPPPPPPPPeeER . . . . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPPPPPPeeeeER . . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER. . . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [6,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [6,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER. . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [6,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [7,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [7,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [7,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [8,0] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER. . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [8,1] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [8,2] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [9,0] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeER . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [9,1] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [9,2] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER vpaddd %xmm0, %xmm0, %xmm3 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/dot-product.s b/llvm/test/tools/llvm-mca/X86/BdVer2/dot-product.s index 15c12903c94b6..c914887fbb8fc 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/dot-product.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/dot-product.s @@ -64,18 +64,25 @@ vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: - - - - - - - - 2.48 2.52 - - - - 1.00 - - - - - - - - vhaddps %xmm3, %xmm3, %xmm4 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: [0,1] D=====eeeeeeeeeeeER . . . . vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [0,2] .D===============eeeeeeeeeeeER. . vhaddps %xmm3, %xmm3, %xmm4 +# CHECK-NEXT: [0,1] DPPPPPeeeeeeeeeeeER . . . . vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPPPPPPeeeeeeeeeeeER. . vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: [1,0] .DeeeeeE---------------------R. . vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: [1,1] . D====eeeeeeeeeeeE----------R. . vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [1,2] . D==============eeeeeeeeeeeER . vhaddps %xmm3, %xmm3, %xmm4 +# CHECK-NEXT: [1,1] . DPPPPeeeeeeeeeeeE----------R. . vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: [1,2] . DPPPPPPPPPPPPPPeeeeeeeeeeeER . vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: [2,0] . DeeeeeE--------------------R . vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: [2,1] . D======eeeeeeeeeeeE-------R . vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [2,2] . D================eeeeeeeeeeeER vhaddps %xmm3, %xmm3, %xmm4 +# CHECK-NEXT: [2,1] . DPPPP==eeeeeeeeeeeE-------R . vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPPeeeeeeeeeeeER vhaddps %xmm3, %xmm3, %xmm4 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-1.s index 3a94cf970c7d6..8cb49c75f2952 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-1.s @@ -27,7 +27,14 @@ vhaddps (%rdi), %xmm1, %xmm2 # CHECK-NEXT: 4 16 2.50 * vhaddps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . . vshufps $0, %xmm0, %xmm1, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-2.s index cd05a43407a87..6923b8fb5d7ef 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/hadd-read-after-ld-2.s @@ -27,7 +27,14 @@ vhaddps (%rdi), %ymm1, %ymm2 # CHECK-NEXT: 10 16 4.00 * vhaddps (%rdi), %ymm1, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . . vshufps $0, %xmm0, %xmm1, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/int-to-fpu-forwarding-3.s b/llvm/test/tools/llvm-mca/X86/BdVer2/int-to-fpu-forwarding-3.s index 1df029fdcb24e..4369b8aa65c9a 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/int-to-fpu-forwarding-3.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/int-to-fpu-forwarding-3.s @@ -64,18 +64,25 @@ vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 3.00 - - - 1.00 - - - - - - - - vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DeER . . . . . addl %eax, %eax -# CHECK-NEXT: [0,1] D===========eeER . . vpinsrb $0, %eax, %xmm0, %xmm0 -# CHECK-NEXT: [0,2] .D============eeER . . vpinsrb $1, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPPPPPPPPPPPeeER . . vpinsrb $0, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPPPeeER . . vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK-NEXT: [1,0] .DeE-------------R . . addl %eax, %eax -# CHECK-NEXT: [1,1] . D=============eeER. . vpinsrb $0, %eax, %xmm0, %xmm0 -# CHECK-NEXT: [1,2] . D===============eeER . vpinsrb $1, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] . DPPPPPPPPPPPPPeeER. . vpinsrb $0, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [1,2] . DPPPPPPPPPPPPPPPeeER . vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK-NEXT: [2,0] . DeE---------------R . addl %eax, %eax -# CHECK-NEXT: [2,1] . D================eeER . vpinsrb $0, %eax, %xmm0, %xmm0 -# CHECK-NEXT: [2,2] . D=================eeER vpinsrb $1, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPPPPeeER . vpinsrb $0, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPPPeeER vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-alias.s b/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-alias.s index 54c07d70e2a74..c7d05d9ecac0a 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-alias.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-alias.s @@ -79,17 +79,24 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - - 3.00 - - - - - 1.00 vmovaps %xmm0, 48(%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmovaps (%rsi), %xmm0 -# CHECK-NEXT: [0,1] D=====eER . . . .. vmovaps %xmm0, (%rdi) -# CHECK-NEXT: [0,2] D======eeeeeER . . .. vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: [0,3] D===========eER. . .. vmovaps %xmm0, 16(%rdi) -# CHECK-NEXT: [0,4] .D===========eeeeeER. .. vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: [0,5] .D================eER .. vmovaps %xmm0, 32(%rdi) -# CHECK-NEXT: [0,6] .D=================eeeeeER. vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: [0,7] .D======================eER vmovaps %xmm0, 48(%rdi) +# CHECK-NEXT: [0,1] DPPPPPeER . . . .. vmovaps %xmm0, (%rdi) +# CHECK-NEXT: [0,2] DPPPPPPeeeeeER . . .. vmovaps 16(%rsi), %xmm0 +# CHECK-NEXT: [0,3] DPPPPPPPPPPPeER. . .. vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: [0,4] .DPPPPPPPPPPPeeeeeER. .. vmovaps 32(%rsi), %xmm0 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPPeER .. vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPeeeeeER. vmovaps 48(%rsi), %xmm0 +# CHECK-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPeER vmovaps %xmm0, 48(%rdi) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-throughput.s b/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-throughput.s index 1259de2cdd8b1..abb804dbf06c8 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-throughput.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/load-store-throughput.s @@ -141,12 +141,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movb %dil, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movb %spl, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movb (%rcx), %bpl # CHECK-NEXT: [0,2] D=eeeeeER movb (%rdx), %sil -# CHECK-NEXT: [0,3] D==eE---R movb %dil, (%rbx) +# CHECK-NEXT: [0,3] DP=eE---R movb %dil, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -259,12 +266,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movw %di, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movw %sp, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movw (%rcx), %bp # CHECK-NEXT: [0,2] D=eeeeeER movw (%rdx), %si -# CHECK-NEXT: [0,3] D==eE---R movw %di, (%rbx) +# CHECK-NEXT: [0,3] DP=eE---R movw %di, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -377,12 +391,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movl %edi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movl %esp, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movl (%rcx), %ebp # CHECK-NEXT: [0,2] D=eeeeeER movl (%rdx), %esi -# CHECK-NEXT: [0,3] D==eE---R movl %edi, (%rbx) +# CHECK-NEXT: [0,3] DP=eE---R movl %edi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -495,12 +516,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movq %rdi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movq %rsp, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movq (%rcx), %rbp # CHECK-NEXT: [0,2] D=eeeeeER movq (%rdx), %rsi -# CHECK-NEXT: [0,3] D==eE---R movq %rdi, (%rbx) +# CHECK-NEXT: [0,3] DP=eE---R movq %rdi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -612,12 +640,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - - 3.00 - - - - - 1.00 movd %mm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . movd %mm0, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movd (%rcx), %mm1 # CHECK-NEXT: [0,2] D=eeeeeER movd (%rdx), %mm2 -# CHECK-NEXT: [0,3] D===eeE-R movd %mm3, (%rbx) +# CHECK-NEXT: [0,3] DP==eeE-R movd %mm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -729,12 +764,19 @@ movaps %xmm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - - 3.00 - - - - - 1.00 movaps %xmm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . movaps %xmm0, (%rax) # CHECK-NEXT: [0,1] DeeeeeER. movaps (%rcx), %xmm1 # CHECK-NEXT: [0,2] D=eeeeeER movaps (%rdx), %xmm2 -# CHECK-NEXT: [0,3] D===eE--R movaps %xmm3, (%rbx) +# CHECK-NEXT: [0,3] DP==eE--R movaps %xmm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/load-throughput.s b/llvm/test/tools/llvm-mca/X86/BdVer2/load-throughput.s index 60566b7119f57..c4767ed2386b0 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/load-throughput.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/load-throughput.s @@ -145,7 +145,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 2.00 - - - - - - - - - - - - - - - - - - 2.00 - - - movb (%rbx), %dil # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . movb (%rax), %spl # CHECK-NEXT: [0,1] DeeeeeER . movb (%rcx), %bpl @@ -260,7 +267,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 2.00 - - - - - - - - - - - - - - - - - - 2.00 - - - movw (%rbx), %di # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . movw (%rax), %sp # CHECK-NEXT: [0,1] DeeeeeER . movw (%rcx), %bp @@ -375,7 +389,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 2.00 - - - - - - - - - - - - - - - - - - 2.00 - - - movl (%rbx), %edi # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . movl (%rax), %esp # CHECK-NEXT: [0,1] DeeeeeER . movl (%rcx), %ebp @@ -490,7 +511,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 2.00 - - - - - - - - - - - - - - - - - - 2.00 - - - movq (%rbx), %rdi # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . movq (%rax), %rsp # CHECK-NEXT: [0,1] DeeeeeER . movq (%rcx), %rbp @@ -605,7 +633,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 3.00 - - - - - - - - - 3.00 - - - 1.00 - - - - 3.00 - - - movd (%rbx), %mm3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . movd (%rax), %mm0 @@ -721,7 +756,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 3.00 - - - - - - - 3.00 - - - - - 1.00 - - - - 3.00 - - - movaps (%rbx), %xmm3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . movaps (%rax), %xmm0 @@ -836,7 +878,14 @@ vmovaps (%rbx), %ymm3 # CHECK-NEXT: 3.00 - - - - - - - 3.00 - - - - - 1.00 - - - - 3.00 - - - vmovaps (%rbx), %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . vmovaps (%rax), %ymm0 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/memcpy-like-test.s b/llvm/test/tools/llvm-mca/X86/BdVer2/memcpy-like-test.s index e1753784c7e64..fa87dcc82dfe3 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/memcpy-like-test.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/memcpy-like-test.s @@ -79,17 +79,24 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - - 3.00 - - - - - 1.00 vmovaps %xmm0, 48(%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . vmovaps (%rsi), %xmm0 -# CHECK-NEXT: [0,1] D======eER. . vmovaps %xmm0, (%rdi) +# CHECK-NEXT: [0,1] DPPPPP=eER. . vmovaps %xmm0, (%rdi) # CHECK-NEXT: [0,2] DeeeeeE--R. . vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: [0,3] D=======eER . vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: [0,3] DPPPPPP=eER . vmovaps %xmm0, 16(%rdi) # CHECK-NEXT: [0,4] .D==eeeeeER . vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: [0,5] .D========eER. vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: [0,5] .DPPPPPPP=eER. vmovaps %xmm0, 32(%rdi) # CHECK-NEXT: [0,6] .D==eeeeeE--R. vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: [0,7] .D=========eER vmovaps %xmm0, 48(%rdi) +# CHECK-NEXT: [0,7] .DPPPPPPPP=eER vmovaps %xmm0, 48(%rdi) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/one-idioms.s b/llvm/test/tools/llvm-mca/X86/BdVer2/one-idioms.s index 8589949a98583..f4b7398f6f729 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/one-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/one-idioms.s @@ -124,7 +124,14 @@ vpcmpeqw %xmm3, %xmm3, %xmm5 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - vpcmpeqw %xmm3, %xmm3, %xmm5 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. pcmpeqb %mm2, %mm2 @@ -132,15 +139,15 @@ vpcmpeqw %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,2] D=eeER .. pcmpeqw %mm2, %mm2 # CHECK-NEXT: [0,3] D==eeER .. pcmpeqb %xmm2, %xmm2 # CHECK-NEXT: [0,4] .DeeE-R .. pcmpeqd %xmm2, %xmm2 -# CHECK-NEXT: [0,5] .D==eeER .. pcmpeqq %xmm2, %xmm2 +# CHECK-NEXT: [0,5] .DPPeeER .. pcmpeqq %xmm2, %xmm2 # CHECK-NEXT: [0,6] .D=eeE-R .. pcmpeqw %xmm2, %xmm2 # CHECK-NEXT: [0,7] .D===eeER .. vpcmpeqb %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,8] . D=eeE-R .. vpcmpeqd %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,9] . D===eeER.. vpcmpeqq %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,9] . DPPPeeER.. vpcmpeqq %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,10] . D==eeE-R.. vpcmpeqw %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,11] . D===eeER.. vpcmpeqb %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,12] . D===eeER. vpcmpeqd %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,13] . D===eeER. vpcmpeqq %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,13] . DPPPeeER. vpcmpeqq %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,14] . D====eeER vpcmpeqw %xmm3, %xmm3, %xmm5 # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-2.s index fed8508572a12..2df99a0abca08 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-2.s @@ -29,12 +29,19 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 1.00 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . imulq %rax, %rbx -# CHECK-NEXT: [0,1] D=====eeER. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D=======eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPPPeeER. lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-3.s b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-3.s index 14e191f564119..e1f639a3fcf36 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-3.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-3.s @@ -69,18 +69,25 @@ xor %bx, %dx # CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - - - - - - - - - - - xorw %bx, %dx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . .. addw %cx, %dx -# CHECK-NEXT: [0,1] D=eER. .. movw %ax, %dx -# CHECK-NEXT: [0,2] D==eER .. xorw %bx, %dx -# CHECK-NEXT: [1,0] D===eER .. addw %cx, %dx -# CHECK-NEXT: [1,1] .D===eER .. movw %ax, %dx -# CHECK-NEXT: [1,2] .D====eER .. xorw %bx, %dx -# CHECK-NEXT: [2,0] .D=====eER.. addw %cx, %dx -# CHECK-NEXT: [2,1] .D======eER. movw %ax, %dx -# CHECK-NEXT: [2,2] . D======eER xorw %bx, %dx +# CHECK-NEXT: [0,1] DPeER. .. movw %ax, %dx +# CHECK-NEXT: [0,2] DPPeER .. xorw %bx, %dx +# CHECK-NEXT: [1,0] DPPPeER .. addw %cx, %dx +# CHECK-NEXT: [1,1] .DPPPeER .. movw %ax, %dx +# CHECK-NEXT: [1,2] .DPPPPeER .. xorw %bx, %dx +# CHECK-NEXT: [2,0] .DPPPPPeER.. addw %cx, %dx +# CHECK-NEXT: [2,1] .DPPPPPPeER. movw %ax, %dx +# CHECK-NEXT: [2,2] . DPPPPPPeER xorw %bx, %dx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-4.s b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-4.s index 5fa4e5ea96393..6b51abd7a8135 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-4.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-4.s @@ -69,18 +69,25 @@ add %cx, %bx # CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - - - - - - - - - - - addw %cx, %bx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01 # CHECK: [0,0] DeeeeER . . .. imulw %ax, %bx -# CHECK-NEXT: [0,1] D===eeER . . .. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D=====eER . . .. addw %cx, %bx -# CHECK-NEXT: [1,0] .D======eeeeER . .. imulw %ax, %bx -# CHECK-NEXT: [1,1] .D=========eeER. .. lzcntw %ax, %bx -# CHECK-NEXT: [1,2] .D===========eER .. addw %cx, %bx -# CHECK-NEXT: [2,0] . D===========eeeeER.. imulw %ax, %bx -# CHECK-NEXT: [2,1] . D==============eeER. lzcntw %ax, %bx -# CHECK-NEXT: [2,2] . D================eER addw %cx, %bx +# CHECK-NEXT: [0,1] DPPPeeER . . .. lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPPeER . . .. addw %cx, %bx +# CHECK-NEXT: [1,0] .DPPPPP=eeeeER . .. imulw %ax, %bx +# CHECK-NEXT: [1,1] .DPPPPPPPPPeeER. .. lzcntw %ax, %bx +# CHECK-NEXT: [1,2] .DPPPPPPPPPPPeER .. addw %cx, %bx +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPeeeeER.. imulw %ax, %bx +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPPeeER. lzcntw %ax, %bx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPPeER addw %cx, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-5.s b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-5.s index e4dddfca3a0f1..553b905b91ab9 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-5.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-5.s @@ -60,11 +60,18 @@ lzcnt %ax, %bx ## partial register stall. # CHECK-NEXT: - - - - - 2.00 - - - - - - - - - - - - - - - - - lzcntw %ax, %bx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . lzcntw %ax, %bx -# CHECK-NEXT: [1,0] D==eeER . lzcntw %ax, %bx -# CHECK-NEXT: [2,0] .D===eeER lzcntw %ax, %bx +# CHECK-NEXT: [1,0] DP=eeER . lzcntw %ax, %bx +# CHECK-NEXT: [2,0] .DPP=eeER lzcntw %ax, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-6.s b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-6.s index 03ad95df54925..48a5b8033115d 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-6.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update-6.s @@ -70,18 +70,25 @@ lzcnt 2(%rsp), %cx # CHECK-NEXT: 3.00 - - - - 2.00 - - - - - - - - - - - - - 3.00 - - - lzcntw 2(%rsp), %cx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeER . . . .. imull %edx, %ecx # CHECK-NEXT: [0,1] DeeeeeeER . . . .. lzcntw (%rsp), %cx # CHECK-NEXT: [0,2] .D=eeeeeeER . . .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [1,0] .D=======eeeeER. . .. imull %edx, %ecx -# CHECK-NEXT: [1,1] . D======eeeeeeER . .. lzcntw (%rsp), %cx -# CHECK-NEXT: [1,2] . D========eeeeeeER . .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [2,0] . D=============eeeeER .. imull %edx, %ecx -# CHECK-NEXT: [2,1] . D=============eeeeeeER.. lzcntw (%rsp), %cx -# CHECK-NEXT: [2,2] . D==============eeeeeeER lzcntw 2(%rsp), %cx +# CHECK-NEXT: [1,0] .DPPPPPPPeeeeER. . .. imull %edx, %ecx +# CHECK-NEXT: [1,1] . DPPPPPPeeeeeeER . .. lzcntw (%rsp), %cx +# CHECK-NEXT: [1,2] . DPPPPPPP=eeeeeeER . .. lzcntw 2(%rsp), %cx +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPPPeeeeER .. imull %edx, %ecx +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPeeeeeeER.. lzcntw (%rsp), %cx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPP=eeeeeeER lzcntw 2(%rsp), %cx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update.s b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update.s index 3c0c38d7cc05f..d6c58c8bb0a57 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/partial-reg-update.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 1.00 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . imulw %ax, %cx -# CHECK-NEXT: [0,1] D====eER. addb %al, %cl -# CHECK-NEXT: [0,2] D=====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPPeER. addb %al, %cl +# CHECK-NEXT: [0,2] DPPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/pipes-fpu.s b/llvm/test/tools/llvm-mca/X86/BdVer2/pipes-fpu.s index 857df60f2a6ed..88c370620fc2c 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/pipes-fpu.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/pipes-fpu.s @@ -86,7 +86,14 @@ vsqrtps %ymm0, %ymm2 # CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - 2.00 - - - - - - - vsqrtps %ymm0, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . vpmulld %xmm0, %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/pr37790.s b/llvm/test/tools/llvm-mca/X86/BdVer2/pr37790.s index 5caf3b67f5b35..a9a5e8e2d0f90 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/pr37790.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/pr37790.s @@ -27,7 +27,14 @@ stmxcsr (%rsp) # CHECK-NEXT: 2 1 18.00 * U stmxcsr (%rsp) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 012 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER int3 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/rank.s b/llvm/test/tools/llvm-mca/X86/BdVer2/rank.s index c929b8bae3b14..4b314411f0df4 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/rank.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/rank.s @@ -79,33 +79,40 @@ add %ebx, %eax # CHECK-NEXT: - - - - - 2.00 - - - - - - - - - - - - - - - - - addl %ebx, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeER . . . . .. addl %eax, %ecx # CHECK-NEXT: [0,1] DeER . . . . .. addl %eax, %edx # CHECK-NEXT: [0,2] D==eER . . . .. addl %eax, %ebx -# CHECK-NEXT: [0,3] D==eER . . . .. addl %edx, %esi -# CHECK-NEXT: [0,4] .D===eER . . . .. addl %ebx, %eax -# CHECK-NEXT: [0,5] .D===eER . . . .. addl %edx, %esi -# CHECK-NEXT: [0,6] .D=====eER. . . .. addl %ebx, %eax -# CHECK-NEXT: [0,7] .D======eER . . .. addl %ebx, %eax -# CHECK-NEXT: [1,0] . D========eER . . .. addl %eax, %ecx -# CHECK-NEXT: [1,1] . D======eE--R . . .. addl %eax, %edx -# CHECK-NEXT: [1,2] . D=======eE-R . . .. addl %eax, %ebx -# CHECK-NEXT: [1,3] . D=========eER. . .. addl %edx, %esi -# CHECK-NEXT: [1,4] . D=========eER . .. addl %ebx, %eax -# CHECK-NEXT: [1,5] . D==========eER . .. addl %edx, %esi -# CHECK-NEXT: [1,6] . D===========eER . .. addl %ebx, %eax -# CHECK-NEXT: [1,7] . D============eER . .. addl %ebx, %eax -# CHECK-NEXT: [2,0] . D==============eER .. addl %eax, %ecx -# CHECK-NEXT: [2,1] . D============eE--R .. addl %eax, %edx -# CHECK-NEXT: [2,2] . D=============eE-R .. addl %eax, %ebx -# CHECK-NEXT: [2,3] . D===============eER .. addl %edx, %esi -# CHECK-NEXT: [2,4] . D===============eER .. addl %ebx, %eax -# CHECK-NEXT: [2,5] . D================eER.. addl %edx, %esi -# CHECK-NEXT: [2,6] . D=================eER. addl %ebx, %eax -# CHECK-NEXT: [2,7] . D==================eER addl %ebx, %eax +# CHECK-NEXT: [0,3] DP=eER . . . .. addl %edx, %esi +# CHECK-NEXT: [0,4] .DPP=eER . . . .. addl %ebx, %eax +# CHECK-NEXT: [0,5] .DPP=eER . . . .. addl %edx, %esi +# CHECK-NEXT: [0,6] .DPPPP=eER. . . .. addl %ebx, %eax +# CHECK-NEXT: [0,7] .DPPPPPPeER . . .. addl %ebx, %eax +# CHECK-NEXT: [1,0] . DPPPPPP==eER . . .. addl %eax, %ecx +# CHECK-NEXT: [1,1] . DPPPPPPeE--R . . .. addl %eax, %edx +# CHECK-NEXT: [1,2] . DPPPPPP=eE-R . . .. addl %eax, %ebx +# CHECK-NEXT: [1,3] . DPPPPPPP==eER. . .. addl %edx, %esi +# CHECK-NEXT: [1,4] . DPPPPPPP==eER . .. addl %ebx, %eax +# CHECK-NEXT: [1,5] . DPPPPPPPPP=eER . .. addl %edx, %esi +# CHECK-NEXT: [1,6] . DPPPPPPPPPP=eER . .. addl %ebx, %eax +# CHECK-NEXT: [1,7] . DPPPPPPPPPPPPeER . .. addl %ebx, %eax +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPP==eER .. addl %eax, %ecx +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPeE--R .. addl %eax, %edx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPP=eE-R .. addl %eax, %ebx +# CHECK-NEXT: [2,3] . DPPPPPPPPPPPPP==eER .. addl %edx, %esi +# CHECK-NEXT: [2,4] . DPPPPPPPPPPPPP==eER .. addl %ebx, %eax +# CHECK-NEXT: [2,5] . DPPPPPPPPPPPPPPP=eER.. addl %edx, %esi +# CHECK-NEXT: [2,6] . DPPPPPPPPPPPPPPPP=eER. addl %ebx, %eax +# CHECK-NEXT: [2,7] . DPPPPPPPPPPPPPPPPPPeER addl %ebx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-1.s index e62f816acb074..6005b27c8c752 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-1.s @@ -31,7 +31,14 @@ vmulps (%rdi), %xmm1, %xmm2 # CHECK-NEXT: 1 10 1.50 * vmulps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . . vaddps %xmm0, %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-2.s index be28b7af9dafd..1df558fe0257b 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-2.s @@ -30,7 +30,14 @@ # CHECK-NEXT: 1 8 4.00 * imull (%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . . imull %esi diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-3.s b/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-3.s index e5e02b264e508..52b9e20bccc84 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-3.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/read-advance-3.s @@ -29,7 +29,14 @@ # CHECK-NEXT: 1 1 1.00 addq %rdx, %r8 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . addq %rdi, %rsi # CHECK-NEXT: [0,1] DeeeeeER addq (%rsp), %rsi diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-1.s index 7bfb210abf9ce..2f8c09c37ef0f 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-1.s @@ -81,18 +81,25 @@ vaddps %xmm1, %xmm1, %xmm2 # CHECK-NEXT: - - - - - - - - 0.67 0.33 - - - - 1.00 - - - - - - - - vaddps %xmm1, %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . . vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER . . . vmovaps %xmm0, %xmm1 -# CHECK-NEXT: [0,2] D=eeeeeER . . vaddps %xmm1, %xmm1, %xmm2 +# CHECK-NEXT: [0,2] DPeeeeeER . . vaddps %xmm1, %xmm1, %xmm2 # CHECK-NEXT: [1,0] D-------R . . vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,1] .D=eE---R . . vmovaps %xmm0, %xmm1 -# CHECK-NEXT: [1,2] .D===eeeeeER. vaddps %xmm1, %xmm1, %xmm2 +# CHECK-NEXT: [1,2] .DPP=eeeeeER. vaddps %xmm1, %xmm1, %xmm2 # CHECK-NEXT: [2,0] .D---------R. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [2,1] .D=eE------R. vmovaps %xmm0, %xmm1 -# CHECK-NEXT: [2,2] . D===eeeeeER vaddps %xmm1, %xmm1, %xmm2 +# CHECK-NEXT: [2,2] . DP==eeeeeER vaddps %xmm1, %xmm1, %xmm2 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-2.s index a6e2fa94ace24..b331bdbd2cc89 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-2.s @@ -97,7 +97,14 @@ movdqu %xmm5, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.67 1.33 - - 0.33 0.67 - - - - - - - movdqu %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . .. pxor %mm0, %mm0 @@ -105,28 +112,28 @@ movdqu %xmm5, %xmm0 # CHECK-NEXT: [0,2] D---R. . .. xorps %xmm0, %xmm0 # CHECK-NEXT: [0,3] DeE-R. . .. movaps %xmm0, %xmm1 # CHECK-NEXT: [0,4] .DeER. . .. movups %xmm1, %xmm2 -# CHECK-NEXT: [0,5] .D=eER . .. movapd %xmm2, %xmm3 -# CHECK-NEXT: [0,6] .D==eER . .. movupd %xmm3, %xmm4 -# CHECK-NEXT: [0,7] .D===eER . .. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [0,8] . D===eER . .. movdqu %xmm5, %xmm0 +# CHECK-NEXT: [0,5] .DPeER . .. movapd %xmm2, %xmm3 +# CHECK-NEXT: [0,6] .DPPeER . .. movupd %xmm3, %xmm4 +# CHECK-NEXT: [0,7] .DPPPeER . .. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [0,8] . DPPPeER . .. movdqu %xmm5, %xmm0 # CHECK-NEXT: [1,0] . D-----R . .. pxor %mm0, %mm0 # CHECK-NEXT: [1,1] . DeeE--R . .. movq %mm0, %mm1 # CHECK-NEXT: [1,2] . D-----R . .. xorps %xmm0, %xmm0 # CHECK-NEXT: [1,3] . D=eE--R. .. movaps %xmm0, %xmm1 -# CHECK-NEXT: [1,4] . D==eE-R. .. movups %xmm1, %xmm2 -# CHECK-NEXT: [1,5] . D===eER. .. movapd %xmm2, %xmm3 -# CHECK-NEXT: [1,6] . D====eER .. movupd %xmm3, %xmm4 -# CHECK-NEXT: [1,7] . D====eER .. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [1,8] . D=====eER .. movdqu %xmm5, %xmm0 +# CHECK-NEXT: [1,4] . DPPeE-R. .. movups %xmm1, %xmm2 +# CHECK-NEXT: [1,5] . DPPPeER. .. movapd %xmm2, %xmm3 +# CHECK-NEXT: [1,6] . DPPPPeER .. movupd %xmm3, %xmm4 +# CHECK-NEXT: [1,7] . DPPPPeER .. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [1,8] . DPPPPPeER .. movdqu %xmm5, %xmm0 # CHECK-NEXT: [2,0] . D-------R .. pxor %mm0, %mm0 # CHECK-NEXT: [2,1] . D==eeE--R .. movq %mm0, %mm1 # CHECK-NEXT: [2,2] . D------R .. xorps %xmm0, %xmm0 # CHECK-NEXT: [2,3] . D===eE--R .. movaps %xmm0, %xmm1 -# CHECK-NEXT: [2,4] . D====eE-R .. movups %xmm1, %xmm2 -# CHECK-NEXT: [2,5] . D=====eER .. movapd %xmm2, %xmm3 -# CHECK-NEXT: [2,6] . .D=====eER.. movupd %xmm3, %xmm4 -# CHECK-NEXT: [2,7] . .D======eER. movdqa %xmm4, %xmm5 -# CHECK-NEXT: [2,8] . .D=======eER movdqu %xmm5, %xmm0 +# CHECK-NEXT: [2,4] . DPPPPeE-R .. movups %xmm1, %xmm2 +# CHECK-NEXT: [2,5] . DPPPPPeER .. movapd %xmm2, %xmm3 +# CHECK-NEXT: [2,6] . .DPPPPPeER.. movupd %xmm3, %xmm4 +# CHECK-NEXT: [2,7] . .DPPPPPPeER. movdqa %xmm4, %xmm5 +# CHECK-NEXT: [2,8] . .DPPPPPPPeER movdqu %xmm5, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-3.s b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-3.s index 0a8fda9fe2eb7..7f1d14c7f3f3b 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-3.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-3.s @@ -90,30 +90,37 @@ vmovdqu %xmm5, %xmm0 # CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.33 0.67 - - - - - - - vmovdqu %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . .. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER . . .. vmovaps %xmm0, %xmm1 -# CHECK-NEXT: [0,2] D=eER. . .. vmovups %xmm1, %xmm2 -# CHECK-NEXT: [0,3] D==eER . .. vmovapd %xmm2, %xmm3 -# CHECK-NEXT: [0,4] .D==eER . .. vmovupd %xmm3, %xmm4 -# CHECK-NEXT: [0,5] .D===eER . .. vmovdqa %xmm4, %xmm5 -# CHECK-NEXT: [0,6] .D====eER . .. vmovdqu %xmm5, %xmm0 +# CHECK-NEXT: [0,2] DPeER. . .. vmovups %xmm1, %xmm2 +# CHECK-NEXT: [0,3] DPPeER . .. vmovapd %xmm2, %xmm3 +# CHECK-NEXT: [0,4] .DPPeER . .. vmovupd %xmm3, %xmm4 +# CHECK-NEXT: [0,5] .DPPPeER . .. vmovdqa %xmm4, %xmm5 +# CHECK-NEXT: [0,6] .DPPPPeER . .. vmovdqu %xmm5, %xmm0 # CHECK-NEXT: [1,0] .D------R . .. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,1] . D==eE-R . .. vmovaps %xmm0, %xmm1 -# CHECK-NEXT: [1,2] . D===eER . .. vmovups %xmm1, %xmm2 -# CHECK-NEXT: [1,3] . D====eER. .. vmovapd %xmm2, %xmm3 -# CHECK-NEXT: [1,4] . D=====eER .. vmovupd %xmm3, %xmm4 -# CHECK-NEXT: [1,5] . D=====eER .. vmovdqa %xmm4, %xmm5 -# CHECK-NEXT: [1,6] . D======eER .. vmovdqu %xmm5, %xmm0 +# CHECK-NEXT: [1,2] . DPPPeER . .. vmovups %xmm1, %xmm2 +# CHECK-NEXT: [1,3] . DPPPPeER. .. vmovapd %xmm2, %xmm3 +# CHECK-NEXT: [1,4] . DPPPPPeER .. vmovupd %xmm3, %xmm4 +# CHECK-NEXT: [1,5] . DPPPPPeER .. vmovdqa %xmm4, %xmm5 +# CHECK-NEXT: [1,6] . DPPPPPPeER .. vmovdqu %xmm5, %xmm0 # CHECK-NEXT: [2,0] . D--------R .. vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [2,1] . D=====eE-R .. vmovaps %xmm0, %xmm1 -# CHECK-NEXT: [2,2] . D=====eER .. vmovups %xmm1, %xmm2 -# CHECK-NEXT: [2,3] . D======eER .. vmovapd %xmm2, %xmm3 -# CHECK-NEXT: [2,4] . D=======eER.. vmovupd %xmm3, %xmm4 -# CHECK-NEXT: [2,5] . D========eER. vmovdqa %xmm4, %xmm5 -# CHECK-NEXT: [2,6] . D========eER vmovdqu %xmm5, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPPeER .. vmovups %xmm1, %xmm2 +# CHECK-NEXT: [2,3] . DPPPPPPeER .. vmovapd %xmm2, %xmm3 +# CHECK-NEXT: [2,4] . DPPPPPPPeER.. vmovupd %xmm3, %xmm4 +# CHECK-NEXT: [2,5] . DPPPPPPPPeER. vmovdqa %xmm4, %xmm5 +# CHECK-NEXT: [2,6] . DPPPPPPPPeER vmovdqu %xmm5, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-4.s b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-4.s index 94163b1162b4d..6513effb8fbb3 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-4.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-4.s @@ -84,24 +84,31 @@ mov %edx, %eax # CHECK-NEXT: - - - - - 2.00 - - - - - - - - - - - - - - - - - movl %edx, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . . xorl %eax, %eax # CHECK-NEXT: [0,1] DeER . . . movl %eax, %ebx -# CHECK-NEXT: [0,2] D=eER. . . movl %ebx, %ecx -# CHECK-NEXT: [0,3] D==eER . . movl %ecx, %edx -# CHECK-NEXT: [0,4] .D==eER . . movl %edx, %eax +# CHECK-NEXT: [0,2] DPeER. . . movl %ebx, %ecx +# CHECK-NEXT: [0,3] DPPeER . . movl %ecx, %edx +# CHECK-NEXT: [0,4] .DPPeER . . movl %edx, %eax # CHECK-NEXT: [1,0] .D----R . . xorl %eax, %eax # CHECK-NEXT: [1,1] .D===eER . . movl %eax, %ebx -# CHECK-NEXT: [1,2] .D====eER . . movl %ebx, %ecx -# CHECK-NEXT: [1,3] . D====eER. . movl %ecx, %edx -# CHECK-NEXT: [1,4] . D=====eER . movl %edx, %eax +# CHECK-NEXT: [1,2] .DPPPPeER . . movl %ebx, %ecx +# CHECK-NEXT: [1,3] . DPPPPeER. . movl %ecx, %edx +# CHECK-NEXT: [1,4] . DPPPPPeER . movl %edx, %eax # CHECK-NEXT: [2,0] . D-------R . xorl %eax, %eax # CHECK-NEXT: [2,1] . D======eER . movl %eax, %ebx -# CHECK-NEXT: [2,2] . D======eER . movl %ebx, %ecx -# CHECK-NEXT: [2,3] . D=======eER. movl %ecx, %edx -# CHECK-NEXT: [2,4] . D========eER movl %edx, %eax +# CHECK-NEXT: [2,2] . DPPPPPPeER . movl %ebx, %ecx +# CHECK-NEXT: [2,3] . DPPPPPPPeER. movl %ecx, %edx +# CHECK-NEXT: [2,4] . DPPPPPPPPeER movl %edx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-5.s b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-5.s index 8ccbbeab3cc2d..58b721dfae94e 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-5.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/reg-move-elimination-5.s @@ -84,24 +84,31 @@ mov %rdx, %rax # CHECK-NEXT: - - - - - 2.00 - - - - - - - - - - - - - - - - - movq %rdx, %rax # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . . xorq %rax, %rax # CHECK-NEXT: [0,1] DeER . . . movq %rax, %rbx -# CHECK-NEXT: [0,2] D=eER. . . movq %rbx, %rcx -# CHECK-NEXT: [0,3] D==eER . . movq %rcx, %rdx -# CHECK-NEXT: [0,4] .D==eER . . movq %rdx, %rax +# CHECK-NEXT: [0,2] DPeER. . . movq %rbx, %rcx +# CHECK-NEXT: [0,3] DPPeER . . movq %rcx, %rdx +# CHECK-NEXT: [0,4] .DPPeER . . movq %rdx, %rax # CHECK-NEXT: [1,0] .D----R . . xorq %rax, %rax # CHECK-NEXT: [1,1] .D===eER . . movq %rax, %rbx -# CHECK-NEXT: [1,2] .D====eER . . movq %rbx, %rcx -# CHECK-NEXT: [1,3] . D====eER. . movq %rcx, %rdx -# CHECK-NEXT: [1,4] . D=====eER . movq %rdx, %rax +# CHECK-NEXT: [1,2] .DPPPPeER . . movq %rbx, %rcx +# CHECK-NEXT: [1,3] . DPPPPeER. . movq %rcx, %rdx +# CHECK-NEXT: [1,4] . DPPPPPeER . movq %rdx, %rax # CHECK-NEXT: [2,0] . D-------R . xorq %rax, %rax # CHECK-NEXT: [2,1] . D======eER . movq %rax, %rbx -# CHECK-NEXT: [2,2] . D======eER . movq %rbx, %rcx -# CHECK-NEXT: [2,3] . D=======eER. movq %rcx, %rdx -# CHECK-NEXT: [2,4] . D========eER movq %rdx, %rax +# CHECK-NEXT: [2,2] . DPPPPPPeER . movq %rbx, %rcx +# CHECK-NEXT: [2,3] . DPPPPPPPeER. movq %rcx, %rdx +# CHECK-NEXT: [2,4] . DPPPPPPPPeER movq %rdx, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-1.s index eb9f3e6194e4c..5a104527adb91 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-1.s @@ -78,19 +78,26 @@ vmulps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 1.00 - - - - - - 1.00 - - - - - - - vmulps %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,0] D==========eeeeeER . . . . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D===============eeeeeER . . . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,0] .D===================eeeeeER . . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,1] .D========================eeeeeER . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,0] .D=============================eeeeeER . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,1] .D==================================eeeeeER . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,0] . D======================================eeeeeER . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,1] . D===========================================eeeeeER vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,0] DPPPPPPPPPPeeeeeER . . . . . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeeeER . . . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,0] .DPPPPPPPPPPPPPPPPPPPeeeeeER . . . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,1] .DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,0] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,1] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER vmulps %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-2.s index f7a6bfaebe5eb..bba08b909b451 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-2.s @@ -78,19 +78,26 @@ vmulps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 1.00 - - - - - - 1.00 - - - - - - - vmulps %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=====eeeeeER . . . . . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,0] D==========eeeeeER . . . . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D===============eeeeeER . . . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,0] .D===================eeeeeER . . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,1] . . D==================eeeeeER . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,0] . . . D==================eeeeeER . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,1] . . . . D==================eeeeeER . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,0] . . . . . D==================eeeeeER . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,1] . . . . . . D==================eeeeeER vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPPPPPeeeeeER . . . . . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,0] DPPPPPPPPPPeeeeeER . . . . . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPPPPPPPPPPPPPPPeeeeeER . . . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,0] .DPPPPPPPPPPPPPPPPPPPeeeeeER . . . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,1] . . DPPPPPPPPPPPPPPPPPPeeeeeER . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,0] . . . DPPPPPPPPPPPPPPPPPPeeeeeER . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,1] . . . . DPPPPPPPPPPPPPPPPPPeeeeeER . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,0] . . . . . DPPPPPPPPPPPPPPPPPPeeeeeER . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,1] . . . . . . DPPPPPPPPPPPPPPPPPPeeeeeER vmulps %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-3.s b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-3.s index df6613cec2831..38c0adec60236 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-3.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-3.s @@ -86,7 +86,14 @@ idiv %eax # CHECK-NEXT: - - - - 25.00 - 1.00 - - - - - - - - - - - - - - - - idivl %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01 # CHECK: [0,0] DeeeeeeeeeeeeeeER . . . . .. idivl %eax diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-4.s b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-4.s index 10d3859062c0b..9cb949a17b363 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-4.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-4.s @@ -53,12 +53,19 @@ idiv %eax # CHECK-NEXT: Max number of mappings used: 66 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456 # CHECK: [0,0] DeeeeeeeeeeeeeeER . . . . . . . . . .. idivl %eax -# CHECK-NEXT: [1,0] D=========================eeeeeeeeeeeeeeER . . . . .. idivl %eax -# CHECK-NEXT: [2,0] .D=================================================eeeeeeeeeeeeeeER idivl %eax +# CHECK-NEXT: [1,0] DPPPPPPPPPPPPPP===========eeeeeeeeeeeeeeER . . . . .. idivl %eax +# CHECK-NEXT: [2,0] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP===========eeeeeeeeeeeeeeER idivl %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-5.s b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-5.s index 465e904abd3ed..2923872fbd978 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-5.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/register-files-5.s @@ -75,7 +75,14 @@ # CHECK-NEXT: Max number of mappings used: 0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DeeeeeeeeeER . . . . . . . . vdivps %ymm0, %ymm0, %ymm1 @@ -94,23 +101,23 @@ # CHECK-NEXT: [0,13] . .D=================eeeeeER . . . . vaddps %ymm0, %ymm0, %ymm14 # CHECK-NEXT: [0,14] . . D=================eeeeeER . . . . vaddps %ymm0, %ymm0, %ymm15 # CHECK-NEXT: [0,15] . . D=====eeeeeE------------R . . . . vaddps %ymm2, %ymm0, %ymm0 -# CHECK-NEXT: [0,16] . . D==============eeeeeE--R . . . . vaddps %ymm2, %ymm0, %ymm3 -# CHECK-NEXT: [0,17] . . D=================eeeeeER . . . . vaddps %ymm2, %ymm0, %ymm4 -# CHECK-NEXT: [0,18] . . D=================eeeeeER . . . . vaddps %ymm2, %ymm0, %ymm5 -# CHECK-NEXT: [0,19] . . D==================eeeeeER. . . . vaddps %ymm2, %ymm0, %ymm6 -# CHECK-NEXT: [0,20] . . D==================eeeeeER . . . vaddps %ymm2, %ymm0, %ymm7 -# CHECK-NEXT: [0,21] . . D===================eeeeeER . . . vaddps %ymm2, %ymm0, %ymm8 -# CHECK-NEXT: [0,22] . . .D===================eeeeeER . . . vaddps %ymm2, %ymm0, %ymm9 -# CHECK-NEXT: [0,23] . . .D====================eeeeeER . . . vaddps %ymm2, %ymm0, %ymm10 -# CHECK-NEXT: [0,24] . . . D====================eeeeeER. . . vaddps %ymm2, %ymm0, %ymm11 -# CHECK-NEXT: [0,25] . . . D=====================eeeeeER . . vaddps %ymm2, %ymm0, %ymm12 -# CHECK-NEXT: [0,26] . . . D=====================eeeeeER . . vaddps %ymm2, %ymm0, %ymm13 -# CHECK-NEXT: [0,27] . . . D======================eeeeeER . . vaddps %ymm2, %ymm0, %ymm14 -# CHECK-NEXT: [0,28] . . . D======================eeeeeER . . vaddps %ymm2, %ymm0, %ymm15 -# CHECK-NEXT: [0,29] . . . D=======================eeeeeER. . vaddps %ymm3, %ymm0, %ymm2 -# CHECK-NEXT: [0,30] . . . D=======================eeeeeER . vaddps %ymm3, %ymm0, %ymm4 -# CHECK-NEXT: [0,31] . . . D========================eeeeeER. vaddps %ymm3, %ymm0, %ymm5 -# CHECK-NEXT: [0,32] . . . .D========================eeeeeER vaddps %ymm3, %ymm0, %ymm6 +# CHECK-NEXT: [0,16] . . DPPPPPPPPP=====eeeeeE--R . . . . vaddps %ymm2, %ymm0, %ymm3 +# CHECK-NEXT: [0,17] . . DPPPPPPPPP========eeeeeER . . . . vaddps %ymm2, %ymm0, %ymm4 +# CHECK-NEXT: [0,18] . . DPPPPPPPP=========eeeeeER . . . . vaddps %ymm2, %ymm0, %ymm5 +# CHECK-NEXT: [0,19] . . DPPPPPPPP==========eeeeeER. . . . vaddps %ymm2, %ymm0, %ymm6 +# CHECK-NEXT: [0,20] . . DPPPPPPP===========eeeeeER . . . vaddps %ymm2, %ymm0, %ymm7 +# CHECK-NEXT: [0,21] . . DPPPPPPP============eeeeeER . . . vaddps %ymm2, %ymm0, %ymm8 +# CHECK-NEXT: [0,22] . . .DPPPPPP=============eeeeeER . . . vaddps %ymm2, %ymm0, %ymm9 +# CHECK-NEXT: [0,23] . . .DPPPPPP==============eeeeeER . . . vaddps %ymm2, %ymm0, %ymm10 +# CHECK-NEXT: [0,24] . . . DPPPPP===============eeeeeER. . . vaddps %ymm2, %ymm0, %ymm11 +# CHECK-NEXT: [0,25] . . . DPPPPP================eeeeeER . . vaddps %ymm2, %ymm0, %ymm12 +# CHECK-NEXT: [0,26] . . . DPPPP=================eeeeeER . . vaddps %ymm2, %ymm0, %ymm13 +# CHECK-NEXT: [0,27] . . . DPPPP==================eeeeeER . . vaddps %ymm2, %ymm0, %ymm14 +# CHECK-NEXT: [0,28] . . . DPPP===================eeeeeER . . vaddps %ymm2, %ymm0, %ymm15 +# CHECK-NEXT: [0,29] . . . DPPPPPPPPPPPPP==========eeeeeER. . vaddps %ymm3, %ymm0, %ymm2 +# CHECK-NEXT: [0,30] . . . DPPPPPPPPPPPP===========eeeeeER . vaddps %ymm3, %ymm0, %ymm4 +# CHECK-NEXT: [0,31] . . . DPPPPPPPPPPPP============eeeeeER. vaddps %ymm3, %ymm0, %ymm5 +# CHECK-NEXT: [0,32] . . . .DPPPPPPPPPPP=============eeeeeER vaddps %ymm3, %ymm0, %ymm6 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/store-throughput.s b/llvm/test/tools/llvm-mca/X86/BdVer2/store-throughput.s index 0a2368f5f3f58..b418b41c8b748 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/store-throughput.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/store-throughput.s @@ -145,12 +145,19 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movb %dil, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movb %spl, (%rax) # CHECK-NEXT: [0,1] D=eER.. movb %bpl, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movb %sil, (%rdx) -# CHECK-NEXT: [0,3] D===eER movb %dil, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movb %sil, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movb %dil, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -260,12 +267,19 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movw %di, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movw %sp, (%rax) # CHECK-NEXT: [0,1] D=eER.. movw %bp, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movw %si, (%rdx) -# CHECK-NEXT: [0,3] D===eER movw %di, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movw %si, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movw %di, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -375,12 +389,19 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movl %edi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movl %esp, (%rax) # CHECK-NEXT: [0,1] D=eER.. movl %ebp, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movl %esi, (%rdx) -# CHECK-NEXT: [0,3] D===eER movl %edi, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movl %esi, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movl %edi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -490,12 +511,19 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - - - - - - - - - - 1.00 movq %rdi, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. movq %rsp, (%rax) # CHECK-NEXT: [0,1] D=eER.. movq %rbp, (%rcx) -# CHECK-NEXT: [0,2] D==eER. movq %rsi, (%rdx) -# CHECK-NEXT: [0,3] D===eER movq %rdi, (%rbx) +# CHECK-NEXT: [0,2] DP=eER. movq %rsi, (%rdx) +# CHECK-NEXT: [0,3] DPP=eER movq %rdi, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -606,12 +634,19 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - - 3.00 - - - - - 1.00 movd %mm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeER. . movd %mm0, (%rax) # CHECK-NEXT: [0,1] D=eeER . movd %mm1, (%rcx) -# CHECK-NEXT: [0,2] D===eeER. movd %mm2, (%rdx) -# CHECK-NEXT: [0,3] D====eeER movd %mm3, (%rbx) +# CHECK-NEXT: [0,2] DP==eeER. movd %mm2, (%rdx) +# CHECK-NEXT: [0,3] DPPP=eeER movd %mm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -722,12 +757,19 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 1.00 - - 3.00 - - - - - 1.00 movaps %xmm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeER . . movaps %xmm0, (%rax) # CHECK-NEXT: [0,1] D=eER. . movaps %xmm1, (%rcx) -# CHECK-NEXT: [0,2] D===eER. movaps %xmm2, (%rdx) -# CHECK-NEXT: [0,3] D====eER movaps %xmm3, (%rbx) +# CHECK-NEXT: [0,2] DP==eER. movaps %xmm2, (%rdx) +# CHECK-NEXT: [0,3] DPPP=eER movaps %xmm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -836,13 +878,20 @@ vmovaps %ymm3, (%rbx) # CHECK-NEXT: 1.00 - - - - - - - - - - - - 2.00 - - 36.00 - - - - - 1.00 vmovaps %ymm3, (%rbx) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01 # CHECK: [0,0] DeER . . . . . . . .. vmovaps %ymm0, (%rax) # CHECK-NEXT: [0,1] .D=eER . . . . . . .. vmovaps %ymm1, (%rcx) # CHECK-NEXT: [0,2] . D==================================eER.. vmovaps %ymm2, (%rdx) -# CHECK-NEXT: [0,3] . D===================================eER vmovaps %ymm3, (%rbx) +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP==eER vmovaps %ymm3, (%rbx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/vbroadcast-operand-latency.s b/llvm/test/tools/llvm-mca/X86/BdVer2/vbroadcast-operand-latency.s index a24feaebbf9eb..839b2907a307b 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/vbroadcast-operand-latency.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/vbroadcast-operand-latency.s @@ -61,7 +61,14 @@ vbroadcastss (%rax), %ymm0 # CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . leaq 8(%rsp,%rdi,2), %rax diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-1.s index 96e19db3b3a3b..b4a65f6e43e8a 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-1.s @@ -27,7 +27,14 @@ vandps (%rdi), %xmm1, %xmm2 # CHECK-NEXT: 1 7 1.50 * vandps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . vaddps %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [0,1] DeeeeeeeER vandps (%rdi), %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-2.s index ccedadfc0cd5a..785be891132fb 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/vec-logic-read-after-ld-2.s @@ -27,7 +27,14 @@ vandps (%rdi), %ymm1, %ymm2 # CHECK-NEXT: 2 7 1.50 * vandps (%rdi), %ymm1, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . vaddps %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [0,1] DeeeeeeeER vandps (%rdi), %ymm1, %ymm2 diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-1.s b/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-1.s index f694a0429e2a1..1e1aace0066ae 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-1.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-1.s @@ -73,21 +73,28 @@ # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 - - - - - - - - vaddps %ymm4, %ymm5, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . . vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] D=eeeeeeeeeeER . . . . . . vfrczpd %xmm1, %xmm2 -# CHECK-NEXT: [0,2] .D==========eeeeeER . . . . . vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [0,3] .D===============eeeeeER . . . . vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [0,4] . D===================eeeeeER . . . vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [0,5] . D========================eeeeeER . . vaddps %ymm4, %ymm5, %ymm0 -# CHECK-NEXT: [1,0] . D============================eeeeeER. vmulps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: [0,2] .DPPPPPPPPPPeeeeeER . . . . . vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPPPPPPeeeeeER . . . . vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPeeeeeER . . . vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER . . vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeER. vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [1,1] . DeeeeeeeeeeE-----------------------R. vfrczpd %xmm1, %xmm2 -# CHECK-NEXT: [1,2] . D==========eeeeeE-----------------R. vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [1,3] . D===============eeeeeE------------R. vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [1,4] . D===================eeeeeE--------R vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [1,5] . D========================eeeeeE---R vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,2] . DPPPPPPPPP=eeeeeE-----------------R. vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [1,3] . DPPPPPPPPPPPPPPPeeeeeE------------R. vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPPPPPPPPPPeeeeeE--------R vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeE---R vaddps %ymm4, %ymm5, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s index 72f072b764647..348c5ad8b3889 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s @@ -73,21 +73,28 @@ # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 - - - - - - - - vaddps %ymm4, %ymm5, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeER . . . . . . vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] D=eeeE-R . . . . . . vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2 -# CHECK-NEXT: [0,2] .D===eeeeeER . . . . . vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [0,3] .D========eeeeeER . . . . vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [0,4] . D============eeeeeER . . . vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [0,5] . D=================eeeeeER . . vaddps %ymm4, %ymm5, %ymm0 -# CHECK-NEXT: [1,0] . D=====================eeeeeER. vmulps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: [0,2] .DPPPeeeeeER . . . . . vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [0,3] .DPPPPPPPPeeeeeER . . . . vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPeeeeeER . . . vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPeeeeeER . . vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,0] . DPPPPPPPPPPPPPPPPPPPPPeeeeeER. vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [1,1] . DeeeE-----------------------R. vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2 -# CHECK-NEXT: [1,2] . D==eeeeeE------------------R. vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [1,3] . D=======eeeeeE-------------R. vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [1,4] . D===========eeeeeE---------R vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [1,5] . D================eeeeeE----R vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,2] . DPPeeeeeE------------------R. vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [1,3] . DPPPPPPPeeeeeE-------------R. vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPPeeeeeE---------R vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPPPPeeeeeE----R vaddps %ymm4, %ymm5, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms-avx-256.s b/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms-avx-256.s index df03ff86dbbf9..554f1a5ffb8e0 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms-avx-256.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms-avx-256.s @@ -97,18 +97,25 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 2.00 - - - - - - vblendps $2, %ymm1, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . vaddps %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [0,1] DeeE---R . vxorps %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,2] .D=eeE-R . vblendps $2, %ymm1, %ymm2, %ymm3 +# CHECK-NEXT: [0,2] .DPeeE-R . vblendps $2, %ymm1, %ymm2, %ymm3 # CHECK-NEXT: [1,0] .DeeeeeER . vaddps %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [1,1] . DeeE--R . vxorps %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [1,2] . D==eeER . vblendps $2, %ymm1, %ymm2, %ymm3 +# CHECK-NEXT: [1,2] . DPPeeER . vblendps $2, %ymm1, %ymm2, %ymm3 # CHECK-NEXT: [2,0] . DeeeeeER vaddps %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [2,1] . D=eeE--R vxorps %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [2,2] . D==eeER vblendps $2, %ymm1, %ymm2, %ymm3 +# CHECK-NEXT: [2,2] . DPPeeER vblendps $2, %ymm1, %ymm2, %ymm3 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -183,18 +190,25 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 2.00 - - - - - - vblendpd $2, %ymm1, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER . vaddpd %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [0,1] DeeE---R . vxorpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,2] .D=eeE-R . vblendpd $2, %ymm1, %ymm2, %ymm3 +# CHECK-NEXT: [0,2] .DPeeE-R . vblendpd $2, %ymm1, %ymm2, %ymm3 # CHECK-NEXT: [1,0] .DeeeeeER . vaddpd %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [1,1] . DeeE--R . vxorpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [1,2] . D==eeER . vblendpd $2, %ymm1, %ymm2, %ymm3 +# CHECK-NEXT: [1,2] . DPPeeER . vblendpd $2, %ymm1, %ymm2, %ymm3 # CHECK-NEXT: [2,0] . DeeeeeER vaddpd %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [2,1] . D=eeE--R vxorpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [2,2] . D==eeER vblendpd $2, %ymm1, %ymm2, %ymm3 +# CHECK-NEXT: [2,2] . DPPeeER vblendpd $2, %ymm1, %ymm2, %ymm3 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -267,7 +281,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - - - - vandnps %ymm2, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . vaddps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] DeeE---R . vandnps %ymm2, %ymm2, %ymm3 @@ -346,7 +367,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - - - - vandnps %ymm2, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeeER . vaddps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] DeeE---R . vandnps %ymm2, %ymm2, %ymm3 @@ -425,15 +453,22 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - - - - - 2.00 - - - - - 1.00 - - - - - - - - vaddps %ymm1, %ymm1, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeER . . . . . vperm2f128 $136, %ymm0, %ymm0, %ymm1 -# CHECK-NEXT: [0,1] . D==eeeeeER . . . . vaddps %ymm1, %ymm1, %ymm0 -# CHECK-NEXT: [1,0] . D======eeeeER . . . vperm2f128 $136, %ymm0, %ymm0, %ymm1 -# CHECK-NEXT: [1,1] . D========eeeeeER . . vaddps %ymm1, %ymm1, %ymm0 -# CHECK-NEXT: [2,0] . .D============eeeeER. . vperm2f128 $136, %ymm0, %ymm0, %ymm1 -# CHECK-NEXT: [2,1] . . D==============eeeeeER vaddps %ymm1, %ymm1, %ymm0 +# CHECK-NEXT: [0,1] . DPPeeeeeER . . . . vaddps %ymm1, %ymm1, %ymm0 +# CHECK-NEXT: [1,0] . DPPPPPPeeeeER . . . vperm2f128 $136, %ymm0, %ymm0, %ymm1 +# CHECK-NEXT: [1,1] . DPPPPPPPPeeeeeER . . vaddps %ymm1, %ymm1, %ymm0 +# CHECK-NEXT: [2,0] . .DPPPPPPPPPPPPeeeeER. . vperm2f128 $136, %ymm0, %ymm0, %ymm1 +# CHECK-NEXT: [2,1] . . DPPPPPPPPPPPPPPeeeeeER vaddps %ymm1, %ymm1, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms.s index 54c1055a60d2f..ec6ed178ad64a 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/zero-idioms.s @@ -297,7 +297,14 @@ vpxor %xmm3, %xmm3, %xmm5 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpxor %xmm3, %xmm3, %xmm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345 # CHECK: [0,0] DR . . . . . subl %eax, %eax diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Broadwell/zero-idioms.s index b93b501d09baa..0688430e24548 100644 --- a/llvm/test/tools/llvm-mca/X86/Broadwell/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Broadwell/zero-idioms.s @@ -287,7 +287,14 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: - - - - - - - - - - vpxor %ymm3, %ymm3, %ymm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DR . . . . . subl %eax, %eax @@ -295,8 +302,8 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,2] DR . . . . . xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . . xorq %rax, %rax # CHECK-NEXT: [0,4] .DeER. . . . . pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] .D=eER . . . . pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D==eER . . . . pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] .DPeER . . . . pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPPeER . . . . pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D----R . . . . pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] . D---R . . . . pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] . D---R . . . . pcmpgtq %xmm2, %xmm2 @@ -311,8 +318,8 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,18] . D-R . . . . vpcmpgtw %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,19] . DeER . . . . psubb %mm2, %mm2 # CHECK-NEXT: [0,20] . DeER . . . . psubd %mm2, %mm2 -# CHECK-NEXT: [0,21] . D=eER. . . . psubq %mm2, %mm2 -# CHECK-NEXT: [0,22] . D==eER . . . psubw %mm2, %mm2 +# CHECK-NEXT: [0,21] . DPeER. . . . psubq %mm2, %mm2 +# CHECK-NEXT: [0,22] . DPPeER . . . psubw %mm2, %mm2 # CHECK-NEXT: [0,23] . D----R . . . psubb %xmm2, %xmm2 # CHECK-NEXT: [0,24] . .D---R . . . psubd %xmm2, %xmm2 # CHECK-NEXT: [0,25] . .D---R . . . psubq %xmm2, %xmm2 @@ -336,18 +343,18 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,43] . . DeER . . . andnps %xmm0, %xmm0 # CHECK-NEXT: [0,44] . . .DeER. . . andnpd %xmm1, %xmm1 # CHECK-NEXT: [0,45] . . .D=eER . . vandnps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,46] . . .D==eER . . vandnpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,47] . . .D===eER . . vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,48] . . . D===eER . . vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,46] . . .DP=eER . . vandnpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,47] . . .DPP=eER . . vandnps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,48] . . . DPP=eER . . vandnpd %ymm1, %ymm1, %ymm1 # CHECK-NEXT: [0,49] . . . DeE---R . . pandn %mm2, %mm2 -# CHECK-NEXT: [0,50] . . . D===eER . . pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,50] . . . DPPPeER . . pandn %xmm2, %xmm2 # CHECK-NEXT: [0,51] . . . DeE---R . . vpandn %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,52] . . . DeE--R . . vpandn %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,53] . . . D===eER. . vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,54] . . . D====eER . vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,55] . . . D=eE---R . vpandn %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,56] . . . D====eER. vandnps %ymm2, %ymm2, %ymm5 -# CHECK-NEXT: [0,57] . . . D=====eER vandnpd %ymm1, %ymm1, %ymm5 +# CHECK-NEXT: [0,53] . . . DPPPeER. . vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,54] . . . DPPP=eER . vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,55] . . . DPeE---R . vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,56] . . . DPP==eER. vandnps %ymm2, %ymm2, %ymm5 +# CHECK-NEXT: [0,57] . . . DPP===eER vandnpd %ymm1, %ymm1, %ymm5 # CHECK-NEXT: [0,58] . . . DeE-----R vpandn %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,59] . . . D-------R xorps %xmm0, %xmm0 # CHECK-NEXT: [0,60] . . . D------R xorpd %xmm1, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/adc-sequence-readadvance.s b/llvm/test/tools/llvm-mca/X86/BtVer2/adc-sequence-readadvance.s index 4d563adf0cbf6..5dea053f08de0 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/adc-sequence-readadvance.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/adc-sequence-readadvance.s @@ -49,12 +49,19 @@ adc 4(%rsp), %eax # CHECK-NEXT: 1.00 1.00 - - - - - 1.00 - - - - - - adcl 4(%rsp), %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . adcl 4(%rsp), %eax -# CHECK-NEXT: [1,0] D=eeeeER . adcl 4(%rsp), %eax -# CHECK-NEXT: [2,0] .D=eeeeER. adcl 4(%rsp), %eax -# CHECK-NEXT: [3,0] .D==eeeeER adcl 4(%rsp), %eax +# CHECK-NEXT: [1,0] DPeeeeER . adcl 4(%rsp), %eax +# CHECK-NEXT: [2,0] .DPeeeeER. adcl 4(%rsp), %eax +# CHECK-NEXT: [3,0] .DPPeeeeER adcl 4(%rsp), %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/add-sequence.s b/llvm/test/tools/llvm-mca/X86/BtVer2/add-sequence.s index 80f42c9e8f6bf..722b386fa40de 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/add-sequence.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/add-sequence.s @@ -55,7 +55,14 @@ add %eax, %edx # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - addl %eax, %edx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeER . . . . addl %eax, %ecx @@ -63,31 +70,31 @@ add %eax, %edx # CHECK-NEXT: [0,2] .DeER. . . . addl %eax, %edx # CHECK-NEXT: [1,0] .DeER. . . . addl %eax, %ecx # CHECK-NEXT: [1,1] . DeER . . . addl %esi, %eax -# CHECK-NEXT: [1,2] . D=eER . . . addl %eax, %edx +# CHECK-NEXT: [1,2] . DPeER . . . addl %eax, %edx # CHECK-NEXT: [2,0] . DeER . . . addl %eax, %ecx # CHECK-NEXT: [2,1] . D=eER . . . addl %esi, %eax -# CHECK-NEXT: [2,2] . D=eER . . . addl %eax, %edx -# CHECK-NEXT: [3,0] . D=eER . . . addl %eax, %ecx +# CHECK-NEXT: [2,2] . DPeER . . . addl %eax, %edx +# CHECK-NEXT: [3,0] . DPeER . . . addl %eax, %ecx # CHECK-NEXT: [3,1] . D=eER. . . addl %esi, %eax -# CHECK-NEXT: [3,2] . D==eER . . addl %eax, %edx -# CHECK-NEXT: [4,0] . .D=eER . . addl %eax, %ecx -# CHECK-NEXT: [4,1] . .D==eER . . addl %esi, %eax -# CHECK-NEXT: [4,2] . . D==eER . . addl %eax, %edx -# CHECK-NEXT: [5,0] . . D===eER . . addl %eax, %ecx -# CHECK-NEXT: [5,1] . . D=eE-R . . addl %esi, %eax -# CHECK-NEXT: [5,2] . . D==eE-R. . addl %eax, %edx -# CHECK-NEXT: [6,0] . . D==eER. . addl %eax, %ecx -# CHECK-NEXT: [6,1] . . D==eE-R . addl %esi, %eax -# CHECK-NEXT: [6,2] . . D==eER . addl %eax, %edx -# CHECK-NEXT: [7,0] . . D===eER . addl %eax, %ecx -# CHECK-NEXT: [7,1] . . .D=eE-R . addl %esi, %eax -# CHECK-NEXT: [7,2] . . .D==eE-R . addl %eax, %edx -# CHECK-NEXT: [8,0] . . . D==eER . addl %eax, %ecx -# CHECK-NEXT: [8,1] . . . D==eE-R . addl %esi, %eax -# CHECK-NEXT: [8,2] . . . D==eER . addl %eax, %edx -# CHECK-NEXT: [9,0] . . . D===eER. addl %eax, %ecx -# CHECK-NEXT: [9,1] . . . D=eE-R. addl %esi, %eax -# CHECK-NEXT: [9,2] . . . D==eE-R addl %eax, %edx +# CHECK-NEXT: [3,2] . DPPeER . . addl %eax, %edx +# CHECK-NEXT: [4,0] . .DPeER . . addl %eax, %ecx +# CHECK-NEXT: [4,1] . .DP=eER . . addl %esi, %eax +# CHECK-NEXT: [4,2] . . DPPeER . . addl %eax, %edx +# CHECK-NEXT: [5,0] . . DPP=eER . . addl %eax, %ecx +# CHECK-NEXT: [5,1] . . DPeE-R . . addl %esi, %eax +# CHECK-NEXT: [5,2] . . DPPeE-R. . addl %eax, %edx +# CHECK-NEXT: [6,0] . . DPPeER. . addl %eax, %ecx +# CHECK-NEXT: [6,1] . . DP=eE-R . addl %esi, %eax +# CHECK-NEXT: [6,2] . . DPPeER . addl %eax, %edx +# CHECK-NEXT: [7,0] . . DPP=eER . addl %eax, %ecx +# CHECK-NEXT: [7,1] . . .DPeE-R . addl %esi, %eax +# CHECK-NEXT: [7,2] . . .DPPeE-R . addl %eax, %edx +# CHECK-NEXT: [8,0] . . . DPPeER . addl %eax, %ecx +# CHECK-NEXT: [8,1] . . . DP=eE-R . addl %esi, %eax +# CHECK-NEXT: [8,2] . . . DPPeER . addl %eax, %edx +# CHECK-NEXT: [9,0] . . . DPP=eER. addl %eax, %ecx +# CHECK-NEXT: [9,1] . . . DPeE-R. addl %esi, %eax +# CHECK-NEXT: [9,2] . . . DPPeE-R addl %eax, %edx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-1.s index 30b05eb290efd..1ed635eaf6f9e 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-1.s @@ -81,12 +81,19 @@ add %edx, %eax # CHECK-NEXT: 1.00 - - - - - - - - - - - - - addl %edx, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. addl %eax, %ebx -# CHECK-NEXT: [0,1] D=eER.. addl %ebx, %ecx -# CHECK-NEXT: [0,2] .D=eER. addl %ecx, %edx -# CHECK-NEXT: [0,3] .D==eER addl %edx, %eax +# CHECK-NEXT: [0,1] DPeER.. addl %ebx, %ecx +# CHECK-NEXT: [0,2] .DPeER. addl %ecx, %edx +# CHECK-NEXT: [0,3] .DPPeER addl %edx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-2.s index 4ff19360c921b..b0f0d560e6280 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-2.s @@ -71,7 +71,14 @@ vhaddps %xmm0, %xmm0, %xmm1 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vhaddps %xmm0, %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeeeeER vhaddps %xmm0, %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-3.s index 1f13a1f5e8752..d421da4785cd9 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-3.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/bottleneck-hints-3.s @@ -97,17 +97,24 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, 48(%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmovaps (%rsi), %xmm0 -# CHECK-NEXT: [0,1] D=====eER . . . .. vmovaps %xmm0, (%rdi) -# CHECK-NEXT: [0,2] .D=====eeeeeER . . .. vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: [0,3] .D==========eER. . .. vmovaps %xmm0, 16(%rdi) -# CHECK-NEXT: [0,4] . D==========eeeeeER. .. vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: [0,5] . D===============eER .. vmovaps %xmm0, 32(%rdi) -# CHECK-NEXT: [0,6] . D===============eeeeeER. vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: [0,7] . D====================eER vmovaps %xmm0, 48(%rdi) +# CHECK-NEXT: [0,1] DPPPPPeER . . . .. vmovaps %xmm0, (%rdi) +# CHECK-NEXT: [0,2] .DPPPPPeeeeeER . . .. vmovaps 16(%rsi), %xmm0 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPeER. . .. vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: [0,4] . DPPPPPPPPPPeeeeeER. .. vmovaps 32(%rsi), %xmm0 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeER .. vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPeeeeeER. vmovaps 48(%rsi), %xmm0 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPeER vmovaps %xmm0, 48(%rdi) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-1.s index 0bd5f451e2e34..98541878ba422 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-1.s @@ -38,17 +38,24 @@ bsf %rax, %rcx # CHECK-NEXT: 7 4 4.00 bsfq %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . . imulq $5, %rcx, %rax # CHECK-NEXT: [0,1] DeE-----R . . lzcntl %ecx, %eax # CHECK-NEXT: [0,2] .DeE-----R. . andq %rcx, %rax # CHECK-NEXT: [0,3] . DeeeeE-R. . bsfq %rax, %rcx -# CHECK-NEXT: [1,0] . D=eeeeeeER. imulq $5, %rcx, %rax +# CHECK-NEXT: [1,0] . DPeeeeeeER. imulq $5, %rcx, %rax # CHECK-NEXT: [1,1] . .D=eE----R. lzcntl %ecx, %eax -# CHECK-NEXT: [1,2] . .D==eE----R andq %rcx, %rax -# CHECK-NEXT: [1,3] . . D==eeeeER bsfq %rax, %rcx +# CHECK-NEXT: [1,2] . .DPPeE----R andq %rcx, %rax +# CHECK-NEXT: [1,3] . . DPPeeeeER bsfq %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-2.s index 134e83f73fb12..b51fa24dfa5b2 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/clear-super-register-2.s @@ -70,13 +70,20 @@ vandps %xmm4, %xmm1, %xmm0 # CHECK-NEXT: 1 1 0.50 vandps %xmm4, %xmm1, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER . . . . . . . . vdivps %ymm0, %ymm1, %ymm3 # CHECK-NEXT: [0,1] .DeeeE----------------------------------R . . . . . . . . vaddps %xmm0, %xmm1, %xmm3 -# CHECK-NEXT: [0,2] . D==eeeE--------------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,3] . D===eeeE------------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,2] . DPPeeeE--------------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,3] . DP==eeeE------------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,4] . D====eeeE-----------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,5] . D=====eeeE---------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,6] . .D======eeeE--------------------------R . . . . . . . . vaddps %ymm3, %ymm1, %ymm4 @@ -90,11 +97,11 @@ vandps %xmm4, %xmm1, %xmm0 # CHECK-NEXT: [0,14] . . . D==============eeeE--------------R . . . . . . . vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,15] . . . D===============eeeE------------R . . . . . . . vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: [0,16] . . . .D================eeeE-----------R . . . . . . . vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [0,17] . . . . D==================eE----------R . . . . . . . vandps %xmm4, %xmm1, %xmm0 -# CHECK-NEXT: [1,0] . . . . D====================eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER. vdivps %ymm0, %ymm1, %ymm3 -# CHECK-NEXT: [1,1] . . . . D=================eeeE-------------------------------------R. vaddps %xmm0, %xmm1, %xmm3 -# CHECK-NEXT: [1,2] . . . . D===================eeeE-----------------------------------R vaddps %ymm3, %ymm1, %ymm4 -# CHECK-NEXT: [1,3] . . . . .D====================eeeE---------------------------------R vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [0,17] . . . . DPPPPPPPPPPPPPPPPPPeE----------R . . . . . . . vandps %xmm4, %xmm1, %xmm0 +# CHECK-NEXT: [1,0] . . . . DPPPPPPPPPPPPPPPPPP==eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER. vdivps %ymm0, %ymm1, %ymm3 +# CHECK-NEXT: [1,1] . . . . DPPPPPPPPPPPPPPPPPeeeE-------------------------------------R. vaddps %xmm0, %xmm1, %xmm3 +# CHECK-NEXT: [1,2] . . . . DPPPPPPPPPPPPPPPPPPPeeeE-----------------------------------R vaddps %ymm3, %ymm1, %ymm4 +# CHECK-NEXT: [1,3] . . . . .DPPPPPPPPPPPPPPPPPP==eeeE---------------------------------R vaddps %ymm3, %ymm1, %ymm4 # CHECK-NEXT: Truncated display due to cycle limit # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/cmpxchg-read-advance.s b/llvm/test/tools/llvm-mca/X86/BtVer2/cmpxchg-read-advance.s index c0b9c7ed37d95..34dde56218195 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/cmpxchg-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/cmpxchg-read-advance.s @@ -95,11 +95,18 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 3.00 - - - - - - 1.00 - 1.00 - - - - cmpxchgq %rcx, (%rdx) # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. imulq %rax, %rax -# CHECK-NEXT: [0,1] .D==eeeeeeeeeeeER cmpxchgq %rcx, (%rdx) +# CHECK-NEXT: [0,1] .DPPeeeeeeeeeeeER cmpxchgq %rcx, (%rdx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -162,11 +169,18 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 3.00 - - - - - - 1.00 - 1.00 - - - - cmpxchgq %rcx, (%rdx) # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . .. imulq %rcx, %rcx -# CHECK-NEXT: [0,1] .D==eeeeeeeeeeeER cmpxchgq %rcx, (%rdx) +# CHECK-NEXT: [0,1] .DPPeeeeeeeeeeeER cmpxchgq %rcx, (%rdx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -229,11 +243,18 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 3.00 - - - - - - 17.00 - 17.00 - - - - lock cmpxchgq %rcx, (%rdx) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeeeER . . . . imulq %rax, %rax -# CHECK-NEXT: [0,1] .D==eeeeeeeeeeeeeeeeeER lock cmpxchgq %rcx, (%rdx) +# CHECK-NEXT: [0,1] .DPPeeeeeeeeeeeeeeeeeER lock cmpxchgq %rcx, (%rdx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -296,11 +317,18 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 3.00 - - - - - - 17.00 - 17.00 - - - - lock cmpxchgq %rcx, (%rdx) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeeeeER . . . . imulq %rcx, %rcx -# CHECK-NEXT: [0,1] .D==eeeeeeeeeeeeeeeeeER lock cmpxchgq %rcx, (%rdx) +# CHECK-NEXT: [0,1] .DPPeeeeeeeeeeeeeeeeeER lock cmpxchgq %rcx, (%rdx) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -365,7 +393,14 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 3.00 - - - - - - 1.00 - 1.00 - - - - cmpxchg8b (%rsp) # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . imull %eax, %eax @@ -436,7 +471,14 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 6.00 - - - - - - 1.00 - 1.00 - - - - cmpxchg16b (%rsp) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012345 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . imull %eax, %eax @@ -507,7 +549,14 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 3.00 - - - - - - 19.00 - 19.00 - - - - lock cmpxchg8b (%rsp) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012 # CHECK: [0,0] DeeeER . . . . imull %ebx, %ebx @@ -578,7 +627,14 @@ lock cmpxchg16b (%rsp) # CHECK-NEXT: 6.00 - - - - - - 38.00 - 38.00 - - - - lock cmpxchg16b (%rsp) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01 # CHECK: [0,0] DeeeER . . . . . . .. imull %ebx, %ebx diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s index 25762ec14ad3b..5649af53d2016 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-cmp.s @@ -57,14 +57,21 @@ cmovae %ebx, %eax # CHECK-NEXT: 1.00 - - - - - - - - - - - - - cmovael %ebx, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. cmpl %eax, %eax -# CHECK-NEXT: [0,1] D=eER.. cmovael %ebx, %eax +# CHECK-NEXT: [0,1] DPeER.. cmovael %ebx, %eax # CHECK-NEXT: [1,0] .DeER.. cmpl %eax, %eax -# CHECK-NEXT: [1,1] .D=eER. cmovael %ebx, %eax +# CHECK-NEXT: [1,1] .DPeER. cmovael %ebx, %eax # CHECK-NEXT: [2,0] . DeER. cmpl %eax, %eax -# CHECK-NEXT: [2,1] . D=eER cmovael %ebx, %eax +# CHECK-NEXT: [2,1] . DPeER cmovael %ebx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s index 4f7187fa1e14b..d21237a4842a0 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpeq.s @@ -64,7 +64,14 @@ vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpcmpeqq %xmm3, %xmm3, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . vpcmpeqb %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [0,1] DeER . . vpcmpeqw %xmm1, %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpgt.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpgt.s index 014062abed383..535629a70b065 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpgt.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-pcmpgt.s @@ -65,7 +65,14 @@ vpcmpgtq %xmm3, %xmm3, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - vpcmpgtq %xmm3, %xmm3, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DR .. vpcmpgtb %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [0,1] DR .. vpcmpgtw %xmm1, %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-1.s index 6466998763c25..471aafeb42f7d 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-1.s @@ -58,14 +58,21 @@ sbb %eax, %eax # CHECK-NEXT: 2.00 - - - - - - - - - - - - - sbbl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . sbbl %edx, %edx -# CHECK-NEXT: [0,1] D=eER. . sbbl %eax, %eax -# CHECK-NEXT: [1,0] .D=eER . sbbl %edx, %edx -# CHECK-NEXT: [1,1] .D==eER . sbbl %eax, %eax -# CHECK-NEXT: [2,0] . D==eER. sbbl %edx, %edx -# CHECK-NEXT: [2,1] . D===eER sbbl %eax, %eax +# CHECK-NEXT: [0,1] DPeER. . sbbl %eax, %eax +# CHECK-NEXT: [1,0] .DPeER . sbbl %edx, %edx +# CHECK-NEXT: [1,1] .DPPeER . sbbl %eax, %eax +# CHECK-NEXT: [2,0] . DPPeER. sbbl %edx, %edx +# CHECK-NEXT: [2,1] . DPPPeER sbbl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s index 69179506e4741..e0b194d75b116 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dependency-breaking-sbb-2.s @@ -61,18 +61,25 @@ sbb %eax, %eax # CHECK-NEXT: 2.00 - - - - - - - - - - - - - sbbl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER .. imull %edx, %eax # CHECK-NEXT: [0,1] DeE--R .. addl %edx, %edx # CHECK-NEXT: [0,2] .DeE--R .. sbbl %eax, %eax -# CHECK-NEXT: [1,0] .D==eeeER .. imull %edx, %eax +# CHECK-NEXT: [1,0] .DP=eeeER .. imull %edx, %eax # CHECK-NEXT: [1,1] . DeE---R .. addl %edx, %edx -# CHECK-NEXT: [1,2] . D=eE---R.. sbbl %eax, %eax -# CHECK-NEXT: [2,0] . D==eeeER. imull %edx, %eax +# CHECK-NEXT: [1,2] . DPeE---R.. sbbl %eax, %eax +# CHECK-NEXT: [2,0] . DP=eeeER. imull %edx, %eax # CHECK-NEXT: [2,1] . D=eE---R. addl %edx, %edx -# CHECK-NEXT: [2,2] . D=eE---R sbbl %eax, %eax +# CHECK-NEXT: [2,2] . DPeE---R sbbl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dependent-pmuld-paddd.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dependent-pmuld-paddd.s index 2804ef6977091..d4409d5b6a4f5 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dependent-pmuld-paddd.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dependent-pmuld-paddd.s @@ -55,39 +55,46 @@ vpaddd %xmm0, %xmm0, %xmm3 # CHECK-NEXT: - - - - - - 1.00 - - - - 1.00 - - vpaddd %xmm0, %xmm0, %xmm3 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeER. . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [0,1] D==eER . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [0,2] .D==eER . . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [1,0] .D==eeER . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [1,1] . D===eER . . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [1,2] . D====eER. . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [2,0] . D===eeER . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [2,1] . D=====eER . . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [2,2] . D=====eER . . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [3,0] . D=====eeER . . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [3,1] . D======eER. . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [3,2] . D=======eER . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [4,0] . .D======eeER . . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [4,1] . .D========eER . . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [4,2] . . D========eER . . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [5,0] . . D========eeER. . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [5,1] . . D=========eER . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [5,2] . . D==========eER . . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [6,0] . . D=========eeER . . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [6,1] . . D===========eER . . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [6,2] . . D===========eER. . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [7,0] . . D===========eeER . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [7,1] . . .D============eER . . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [7,2] . . .D=============eER . . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [8,0] . . . D============eeER . . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [8,1] . . . D==============eER. . vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [8,2] . . . D==============eER . vpaddd %xmm0, %xmm0, %xmm3 -# CHECK-NEXT: [9,0] . . . D==============eeER . vpmuldq %xmm0, %xmm0, %xmm1 -# CHECK-NEXT: [9,1] . . . D===============eER. vpaddd %xmm1, %xmm1, %xmm0 -# CHECK-NEXT: [9,2] . . . D================eER vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [0,1] DPPeER . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [0,2] .DPPeER . . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [1,0] .DPPeeER . . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [1,1] . DPPPeER . . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [1,2] . DPPPPeER. . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [2,0] . DPPPeeER . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [2,1] . DPPPPPeER . . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [2,2] . DPPPPPeER . . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [3,0] . DPPPPPeeER . . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [3,1] . DPPPPPPeER. . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [3,2] . DPPPPPPPeER . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [4,0] . .DPPPPPPeeER . . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [4,1] . .DPPPPPPPPeER . . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [4,2] . . DPPPPPPPPeER . . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [5,0] . . DPPPPPPPPeeER. . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [5,1] . . DPPPPPPPPPeER . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [5,2] . . DPPPPPPPPPPeER . . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [6,0] . . DPPPPPPPPPeeER . . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [6,1] . . DPPPPPPPPPPPeER . . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [6,2] . . DPPPPPPPPPPPeER. . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [7,0] . . DPPPPPPPPPPPeeER . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [7,1] . . .DPPPPPPPPPPPPeER . . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [7,2] . . .DPPPPPPPPPPPPPeER . . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [8,0] . . . DPPPPPPPPPPPPeeER . . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [8,1] . . . DPPPPPPPPPPPPPPeER. . vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [8,2] . . . DPPPPPPPPPPPPPPeER . vpaddd %xmm0, %xmm0, %xmm3 +# CHECK-NEXT: [9,0] . . . DPPPPPPPPPPPPPPeeER . vpmuldq %xmm0, %xmm0, %xmm1 +# CHECK-NEXT: [9,1] . . . DPPPPPPPPPPPPPPPeER. vpaddd %xmm1, %xmm1, %xmm0 +# CHECK-NEXT: [9,2] . . . DPPPPPPPPPPPPPPPPeER vpaddd %xmm0, %xmm0, %xmm3 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s b/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s index fdfbf311b1a22..7def6f2879309 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/dot-product.s @@ -55,18 +55,25 @@ vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vhaddps %xmm3, %xmm3, %xmm4 # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: [0,1] D==eeeeER . . vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [0,2] .D=====eeeeER . vhaddps %xmm3, %xmm3, %xmm4 +# CHECK-NEXT: [0,1] DPPeeeeER . . vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: [0,2] .DPPPPPeeeeER . vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: [1,0] .DeeE-------R . vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: [1,1] . D=eeeeE----R . vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [1,2] . D=====eeeeER . vhaddps %xmm3, %xmm3, %xmm4 +# CHECK-NEXT: [1,1] . DPeeeeE----R . vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: [1,2] . DPPPPPeeeeER . vhaddps %xmm3, %xmm3, %xmm4 # CHECK-NEXT: [2,0] . DeeE-------R. vmulps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: [2,1] . D==eeeeE---R. vhaddps %xmm2, %xmm2, %xmm3 -# CHECK-NEXT: [2,2] . D=====eeeeER vhaddps %xmm3, %xmm3, %xmm4 +# CHECK-NEXT: [2,1] . DPPeeeeE---R. vhaddps %xmm2, %xmm2, %xmm3 +# CHECK-NEXT: [2,2] . DPPPPPeeeeER vhaddps %xmm3, %xmm3, %xmm4 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-1.s index ebf2739665620..48af2a8141602 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/hadd-read-after-ld-1.s @@ -27,7 +27,14 @@ vhaddps (%rdi), %xmm1, %xmm2 # CHECK-NEXT: 1 9 1.00 * vhaddps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . .. vshufps $0, %xmm0, %xmm1, %xmm1 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 7b9a1e601b704..21e8f68b3f9b7 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 @@ -27,7 +27,14 @@ vhaddps (%rdi), %ymm1, %ymm2 # CHECK-NEXT: 2 9 2.00 * vhaddps (%rdi), %ymm1, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . vshufps $0, %xmm0, %xmm1, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/BtVer2/independent-load-stores.s index bd202b604458f..faeaf158ef656 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/independent-load-stores.s @@ -85,34 +85,40 @@ # ALL-NEXT: 1.00 - - - - - - 1.00 - 1.00 - - - - addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 01234567 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 01234567 # NOALIAS-NEXT: Index 0123456789 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 +# YESALIAS: 0123456789 0123456789 0123456789 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 012 # NOALIAS: [0,0] DeeeeeeER . . . addq $44, 64(%r14) # NOALIAS-NEXT: [0,1] D=eeeeeeER. . . addq $44, 128(%r14) # NOALIAS-NEXT: [0,2] .D=eeeeeeER . . addq $44, 192(%r14) -# NOALIAS-NEXT: [0,3] .D==eeeeeeER . . addq $44, 256(%r14) -# NOALIAS-NEXT: [0,4] . D==eeeeeeER . . addq $44, 320(%r14) -# NOALIAS-NEXT: [0,5] . D===eeeeeeER . . addq $44, 384(%r14) -# NOALIAS-NEXT: [0,6] . D===eeeeeeER. . addq $44, 448(%r14) -# NOALIAS-NEXT: [0,7] . D====eeeeeeER . addq $44, 512(%r14) -# NOALIAS-NEXT: [0,8] . D====eeeeeeER. addq $44, 576(%r14) -# NOALIAS-NEXT: [0,9] . D=====eeeeeeER addq $44, 640(%r14) +# NOALIAS-NEXT: [0,3] .DP=eeeeeeER . . addq $44, 256(%r14) +# NOALIAS-NEXT: [0,4] . DP=eeeeeeER . . addq $44, 320(%r14) +# NOALIAS-NEXT: [0,5] . DPP=eeeeeeER . . addq $44, 384(%r14) +# NOALIAS-NEXT: [0,6] . DPP=eeeeeeER. . addq $44, 448(%r14) +# NOALIAS-NEXT: [0,7] . DPPP=eeeeeeER . addq $44, 512(%r14) +# NOALIAS-NEXT: [0,8] . DPPP=eeeeeeER. addq $44, 576(%r14) +# NOALIAS-NEXT: [0,9] . DPPPP=eeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeER . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] D======eeeeeeER. . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] .D===========eeeeeeER . . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] .D=================eeeeeeER . . . . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D======================eeeeeeER . . . . . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D============================eeeeeeER . . . . . . addq $44, 384(%r14) -# YESALIAS-NEXT: [0,6] . D=================================eeeeeeER. . . . . addq $44, 448(%r14) -# YESALIAS-NEXT: [0,7] . D=======================================eeeeeeER . . . addq $44, 512(%r14) -# YESALIAS-NEXT: [0,8] . D============================================eeeeeeER . . addq $44, 576(%r14) -# YESALIAS-NEXT: [0,9] . D==================================================eeeeeeER addq $44, 640(%r14) +# YESALIAS-NEXT: [0,1] DPPPPPPeeeeeeER. . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] .DPPPPPPPPPPPeeeeeeER . . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPeeeeeeER . . . . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . . . . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . . . . . addq $44, 384(%r14) +# YESALIAS-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER. . . . . addq $44, 448(%r14) +# YESALIAS-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . . addq $44, 512(%r14) +# YESALIAS-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . addq $44, 576(%r14) +# YESALIAS-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER addq $44, 640(%r14) # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-3.s index 432b262c12198..9f9907544d10d 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-3.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-3.s @@ -57,18 +57,25 @@ vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . . addl %eax, %eax -# CHECK-NEXT: [0,1] .D======eER . . vpinsrb $0, %eax, %xmm0, %xmm0 -# CHECK-NEXT: [0,2] . D======eER . . vpinsrb $1, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] .DPPPPPPeER . . vpinsrb $0, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [0,2] . DPPPPPPeER . . vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK-NEXT: [1,0] . DeE-----R . . addl %eax, %eax -# CHECK-NEXT: [1,1] . D======eER . . vpinsrb $0, %eax, %xmm0, %xmm0 -# CHECK-NEXT: [1,2] . D======eER. . vpinsrb $1, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] . DPPPPPPeER . . vpinsrb $0, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [1,2] . DPPPPPPeER. . vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK-NEXT: [2,0] . .DeE-----R. . addl %eax, %eax -# CHECK-NEXT: [2,1] . . D======eER. vpinsrb $0, %eax, %xmm0, %xmm0 -# CHECK-NEXT: [2,2] . . D======eER vpinsrb $1, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [2,1] . . DPPPPPPeER. vpinsrb $0, %eax, %xmm0, %xmm0 +# CHECK-NEXT: [2,2] . . DPPPPPPeER vpinsrb $1, %eax, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s b/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s index e6294d6536d19..926452128f2bd 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/load-store-alias.s @@ -70,17 +70,24 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, 48(%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmovaps (%rsi), %xmm0 -# CHECK-NEXT: [0,1] D=====eER . . . .. vmovaps %xmm0, (%rdi) -# CHECK-NEXT: [0,2] .D=====eeeeeER . . .. vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: [0,3] .D==========eER. . .. vmovaps %xmm0, 16(%rdi) -# CHECK-NEXT: [0,4] . D==========eeeeeER. .. vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: [0,5] . D===============eER .. vmovaps %xmm0, 32(%rdi) -# CHECK-NEXT: [0,6] . D===============eeeeeER. vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: [0,7] . D====================eER vmovaps %xmm0, 48(%rdi) +# CHECK-NEXT: [0,1] DPPPPPeER . . . .. vmovaps %xmm0, (%rdi) +# CHECK-NEXT: [0,2] .DPPPPPeeeeeER . . .. vmovaps 16(%rsi), %xmm0 +# CHECK-NEXT: [0,3] .DPPPPPPPPPPeER. . .. vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: [0,4] . DPPPPPPPPPPeeeeeER. .. vmovaps 32(%rsi), %xmm0 +# CHECK-NEXT: [0,5] . DPPPPPPPPPPPPPPPeER .. vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: [0,6] . DPPPPPPPPPPPPPPPeeeeeER. vmovaps 48(%rsi), %xmm0 +# CHECK-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPeER vmovaps %xmm0, 48(%rdi) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s b/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s index 4162d85166f19..d470bbbec423e 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/memcpy-like-test.s @@ -70,17 +70,24 @@ vmovaps %xmm0, 48(%rdi) # CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, 48(%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeER .. vmovaps (%rsi), %xmm0 -# CHECK-NEXT: [0,1] D=====eER .. vmovaps %xmm0, (%rdi) +# CHECK-NEXT: [0,1] DPPPPPeER .. vmovaps %xmm0, (%rdi) # CHECK-NEXT: [0,2] .DeeeeeER .. vmovaps 16(%rsi), %xmm0 -# CHECK-NEXT: [0,3] .D=====eER.. vmovaps %xmm0, 16(%rdi) +# CHECK-NEXT: [0,3] .DPPPPPeER.. vmovaps %xmm0, 16(%rdi) # CHECK-NEXT: [0,4] . DeeeeeER.. vmovaps 32(%rsi), %xmm0 -# CHECK-NEXT: [0,5] . D=====eER. vmovaps %xmm0, 32(%rdi) +# CHECK-NEXT: [0,5] . DPPPPPeER. vmovaps %xmm0, 32(%rdi) # CHECK-NEXT: [0,6] . DeeeeeER. vmovaps 48(%rsi), %xmm0 -# CHECK-NEXT: [0,7] . D=====eER vmovaps %xmm0, 48(%rdi) +# CHECK-NEXT: [0,7] . DPPPPPeER vmovaps %xmm0, 48(%rdi) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/negative-read-advance.s b/llvm/test/tools/llvm-mca/X86/BtVer2/negative-read-advance.s index de409e1c28d04..e2397db1937ff 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/negative-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/negative-read-advance.s @@ -64,15 +64,22 @@ vpinsrd $3, %ebx, %xmm8, %xmm10 # CHECK-NEXT: - - - - - - 1.00 - - - - - 1.00 - vpinsrd $3, %ebx, %xmm8, %xmm10 # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . addl %ebx, %ebx -# CHECK-NEXT: [0,1] .D======eER . vpinsrd $1, %ebx, %xmm0, %xmm1 -# CHECK-NEXT: [0,2] . D=====eER . vpinsrd $1, %ebx, %xmm2, %xmm3 -# CHECK-NEXT: [0,3] . D=====eER. vpinsrd $2, %ebx, %xmm4, %xmm5 -# CHECK-NEXT: [0,4] . D====eER. vpinsrd $2, %ebx, %xmm6, %xmm7 -# CHECK-NEXT: [0,5] . D====eER vpinsrd $3, %ebx, %xmm8, %xmm10 +# CHECK-NEXT: [0,1] .DPPPPPPeER . vpinsrd $1, %ebx, %xmm0, %xmm1 +# CHECK-NEXT: [0,2] . DPPPPPeER . vpinsrd $1, %ebx, %xmm2, %xmm3 +# CHECK-NEXT: [0,3] . DPPPP=eER. vpinsrd $2, %ebx, %xmm4, %xmm5 +# CHECK-NEXT: [0,4] . DPPP=eER. vpinsrd $2, %ebx, %xmm6, %xmm7 +# CHECK-NEXT: [0,5] . DPP==eER vpinsrd $3, %ebx, %xmm8, %xmm10 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/one-idioms.s b/llvm/test/tools/llvm-mca/X86/BtVer2/one-idioms.s index 3377e92253b16..d3a6a693cf353 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/one-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/one-idioms.s @@ -115,7 +115,14 @@ vpcmpeqw %xmm3, %xmm3, %xmm5 # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpcmpeqw %xmm3, %xmm3, %xmm5 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . pcmpeqb %mm2, %mm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-2.s index 722e37a70831c..7a18b9336f21b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-2.s @@ -29,12 +29,19 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.50 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeER . imulq %rax, %rbx -# CHECK-NEXT: [0,1] D======eER. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] .D======eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [0,2] .DPPPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-3.s index 9e824acab7142..40104ea06c611 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-3.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-3.s @@ -60,18 +60,25 @@ xor %bx, %dx # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - xorw %bx, %dx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . .. addw %cx, %dx -# CHECK-NEXT: [0,1] D=eER. .. movw %ax, %dx -# CHECK-NEXT: [0,2] .D=eER .. xorw %bx, %dx -# CHECK-NEXT: [1,0] .D==eER .. addw %cx, %dx -# CHECK-NEXT: [1,1] . D==eER .. movw %ax, %dx -# CHECK-NEXT: [1,2] . D===eER .. xorw %bx, %dx -# CHECK-NEXT: [2,0] . D===eER.. addw %cx, %dx -# CHECK-NEXT: [2,1] . D====eER. movw %ax, %dx -# CHECK-NEXT: [2,2] . D====eER xorw %bx, %dx +# CHECK-NEXT: [0,1] DPeER. .. movw %ax, %dx +# CHECK-NEXT: [0,2] .DPeER .. xorw %bx, %dx +# CHECK-NEXT: [1,0] .DPPeER .. addw %cx, %dx +# CHECK-NEXT: [1,1] . DPPeER .. movw %ax, %dx +# CHECK-NEXT: [1,2] . DPPPeER .. xorw %bx, %dx +# CHECK-NEXT: [2,0] . DPPPeER.. addw %cx, %dx +# CHECK-NEXT: [2,1] . DPPPPeER. movw %ax, %dx +# CHECK-NEXT: [2,2] . DPPPPeER xorw %bx, %dx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-4.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-4.s index bdd6d341166fd..d087a181996fc 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-4.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-4.s @@ -60,18 +60,25 @@ add %cx, %bx # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - addw %cx, %bx # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . . imulw %ax, %bx -# CHECK-NEXT: [0,1] D===eER . . . lzcntw %ax, %bx -# CHECK-NEXT: [0,2] .D===eER . . . addw %cx, %bx -# CHECK-NEXT: [1,0] .D====eeeER . . imulw %ax, %bx -# CHECK-NEXT: [1,1] . D======eER . . lzcntw %ax, %bx -# CHECK-NEXT: [1,2] . D=======eER . . addw %cx, %bx -# CHECK-NEXT: [2,0] . D=======eeeER . imulw %ax, %bx -# CHECK-NEXT: [2,1] . D==========eER. lzcntw %ax, %bx -# CHECK-NEXT: [2,2] . D==========eER addw %cx, %bx +# CHECK-NEXT: [0,1] DPPPeER . . . lzcntw %ax, %bx +# CHECK-NEXT: [0,2] .DPPPeER . . . addw %cx, %bx +# CHECK-NEXT: [1,0] .DPPPPeeeER . . imulw %ax, %bx +# CHECK-NEXT: [1,1] . DPPPPPPeER . . lzcntw %ax, %bx +# CHECK-NEXT: [1,2] . DPPPPPPPeER . . addw %cx, %bx +# CHECK-NEXT: [2,0] . DPPPPPPPeeeER . imulw %ax, %bx +# CHECK-NEXT: [2,1] . DPPPPPPPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPeER addw %cx, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-5.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-5.s index 2d1397c101ff8..f5081b628e4f9 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-5.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-5.s @@ -51,11 +51,18 @@ lzcnt %ax, %bx ## partial register stall. # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - lzcntw %ax, %bx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345 # CHECK: [0,0] DeER . lzcntw %ax, %bx -# CHECK-NEXT: [1,0] D=eER. lzcntw %ax, %bx -# CHECK-NEXT: [2,0] .D=eER lzcntw %ax, %bx +# CHECK-NEXT: [1,0] DPeER. lzcntw %ax, %bx +# CHECK-NEXT: [2,0] .DPeER lzcntw %ax, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-6.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-6.s index 7ca046be68e38..2ade10cc3d28d 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-6.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-6.s @@ -61,18 +61,25 @@ lzcnt 2(%rsp), %cx # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - lzcntw 2(%rsp), %cx # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . . imull %edx, %ecx # CHECK-NEXT: [0,1] DeeeeER . . . lzcntw (%rsp), %cx # CHECK-NEXT: [0,2] .DeeeeER . . . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [1,0] .D====eeeER . . imull %edx, %ecx -# CHECK-NEXT: [1,1] . D===eeeeER . . lzcntw (%rsp), %cx -# CHECK-NEXT: [1,2] . D====eeeeER . . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [2,0] . D=======eeeER . imull %edx, %ecx -# CHECK-NEXT: [2,1] . D=======eeeeER. lzcntw (%rsp), %cx -# CHECK-NEXT: [2,2] . D=======eeeeER lzcntw 2(%rsp), %cx +# CHECK-NEXT: [1,0] .DPPPPeeeER . . imull %edx, %ecx +# CHECK-NEXT: [1,1] . DPPPeeeeER . . lzcntw (%rsp), %cx +# CHECK-NEXT: [1,2] . DPPPPeeeeER . . lzcntw 2(%rsp), %cx +# CHECK-NEXT: [2,0] . DPPPPPPPeeeER . imull %edx, %ecx +# CHECK-NEXT: [2,1] . DPPPPPPPeeeeER. lzcntw (%rsp), %cx +# CHECK-NEXT: [2,2] . DPPPPPPPeeeeER lzcntw 2(%rsp), %cx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-7.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-7.s index 0cd064bcb872e..1bba294c7638f 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-7.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update-7.s @@ -61,34 +61,41 @@ cmpl $1025, %eax # CHECK-NEXT: 1.00 - - - - - - - - - - - - - cmpl $1025, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 012345678 # CHECK: [0,0] DeER . . . . . . sete %r9b # CHECK-NEXT: [0,1] DeER . . . . . . movzbl %al, %eax # CHECK-NEXT: [0,2] .DeER. . . . . . shll $2, %eax -# CHECK-NEXT: [0,3] .D=eeeER . . . . . imull %ecx, %eax -# CHECK-NEXT: [0,4] . D===eER . . . . . cmpl $1025, %eax -# CHECK-NEXT: [1,0] . D====eER. . . . . sete %r9b -# CHECK-NEXT: [1,1] . D==eE-R. . . . . movzbl %al, %eax -# CHECK-NEXT: [1,2] . D===eE-R . . . . shll $2, %eax -# CHECK-NEXT: [1,3] . D===eeeER . . . . imull %ecx, %eax -# CHECK-NEXT: [1,4] . D======eER . . . . cmpl $1025, %eax -# CHECK-NEXT: [2,0] . D======eER. . . . sete %r9b -# CHECK-NEXT: [2,1] . D=====eE-R. . . . movzbl %al, %eax -# CHECK-NEXT: [2,2] . .D=====eE-R . . . shll $2, %eax -# CHECK-NEXT: [2,3] . .D======eeeER . . . imull %ecx, %eax -# CHECK-NEXT: [2,4] . . D========eER . . . cmpl $1025, %eax -# CHECK-NEXT: [3,0] . . D=========eER. . . sete %r9b -# CHECK-NEXT: [3,1] . . D=======eE-R. . . movzbl %al, %eax -# CHECK-NEXT: [3,2] . . D========eE-R . . shll $2, %eax -# CHECK-NEXT: [3,3] . . D========eeeER . . imull %ecx, %eax -# CHECK-NEXT: [3,4] . . D===========eER . . cmpl $1025, %eax -# CHECK-NEXT: [4,0] . . D===========eER. . sete %r9b -# CHECK-NEXT: [4,1] . . D==========eE-R. . movzbl %al, %eax -# CHECK-NEXT: [4,2] . . .D==========eE-R . shll $2, %eax -# CHECK-NEXT: [4,3] . . .D===========eeeER. imull %ecx, %eax -# CHECK-NEXT: [4,4] . . . D=============eER cmpl $1025, %eax +# CHECK-NEXT: [0,3] .DPeeeER . . . . . imull %ecx, %eax +# CHECK-NEXT: [0,4] . DPPPeER . . . . . cmpl $1025, %eax +# CHECK-NEXT: [1,0] . DPPPPeER. . . . . sete %r9b +# CHECK-NEXT: [1,1] . DPPeE-R. . . . . movzbl %al, %eax +# CHECK-NEXT: [1,2] . DPPPeE-R . . . . shll $2, %eax +# CHECK-NEXT: [1,3] . DPPPeeeER . . . . imull %ecx, %eax +# CHECK-NEXT: [1,4] . DPPPPPPeER . . . . cmpl $1025, %eax +# CHECK-NEXT: [2,0] . DPPPPPPeER. . . . sete %r9b +# CHECK-NEXT: [2,1] . DPPPPPeE-R. . . . movzbl %al, %eax +# CHECK-NEXT: [2,2] . .DPPPPPeE-R . . . shll $2, %eax +# CHECK-NEXT: [2,3] . .DPPPPPPeeeER . . . imull %ecx, %eax +# CHECK-NEXT: [2,4] . . DPPPPPPPPeER . . . cmpl $1025, %eax +# CHECK-NEXT: [3,0] . . DPPPPPPPPPeER. . . sete %r9b +# CHECK-NEXT: [3,1] . . DPPPPPPPeE-R. . . movzbl %al, %eax +# CHECK-NEXT: [3,2] . . DPPPPPPPPeE-R . . shll $2, %eax +# CHECK-NEXT: [3,3] . . DPPPPPPPPeeeER . . imull %ecx, %eax +# CHECK-NEXT: [3,4] . . DPPPPPPPPPPPeER . . cmpl $1025, %eax +# CHECK-NEXT: [4,0] . . DPPPPPPPPPPPeER. . sete %r9b +# CHECK-NEXT: [4,1] . . DPPPPPPPPPPeE-R. . movzbl %al, %eax +# CHECK-NEXT: [4,2] . . .DPPPPPPPPPPeE-R . shll $2, %eax +# CHECK-NEXT: [4,3] . . .DPPPPPPPPPPPeeeER. imull %ecx, %eax +# CHECK-NEXT: [4,4] . . . DPPPPPPPPPPPPPeER cmpl $1025, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update.s b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update.s index c44ca83efb7fe..5d4a7b439aa13 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/partial-reg-update.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.50 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulw %ax, %cx -# CHECK-NEXT: [0,1] D===eER. addb %al, %cl -# CHECK-NEXT: [0,2] .D===eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeER. addb %al, %cl +# CHECK-NEXT: [0,2] .DPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/pipes-fpu.s b/llvm/test/tools/llvm-mca/X86/BtVer2/pipes-fpu.s index 55755d74f51e5..6f05ea785660d 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/pipes-fpu.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/pipes-fpu.s @@ -77,7 +77,14 @@ vsqrtps %ymm0, %ymm2 # CHECK-NEXT: - - - - 42.00 - 2.00 - - - - - - - vsqrtps %ymm0, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeER . . . . . . . . . . . . . vpmulld %xmm0, %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/pr37790.s b/llvm/test/tools/llvm-mca/X86/BtVer2/pr37790.s index d91de1a399035..fd1cb447adf92 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/pr37790.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/pr37790.s @@ -27,7 +27,14 @@ stmxcsr (%rsp) # CHECK-NEXT: 1 1 1.00 * U stmxcsr (%rsp) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER. int3 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/rank.s b/llvm/test/tools/llvm-mca/X86/BtVer2/rank.s index 9962ca41021d8..ae81e7b13548b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/rank.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/rank.s @@ -70,7 +70,14 @@ add %ebx, %eax # CHECK-NEXT: 1.00 - - - - - - - - - - - - - addl %ebx, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234567 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . . addl %eax, %ecx @@ -80,23 +87,23 @@ add %ebx, %eax # CHECK-NEXT: [0,4] . DeER . . . addl %ebx, %eax # CHECK-NEXT: [0,5] . DeER . . . addl %edx, %esi # CHECK-NEXT: [0,6] . DeER . . . addl %ebx, %eax -# CHECK-NEXT: [0,7] . D=eER . . . addl %ebx, %eax -# CHECK-NEXT: [1,0] . D=eER . . . addl %eax, %ecx -# CHECK-NEXT: [1,1] . D=eER . . . addl %eax, %edx +# CHECK-NEXT: [0,7] . DPeER . . . addl %ebx, %eax +# CHECK-NEXT: [1,0] . DPeER . . . addl %eax, %ecx +# CHECK-NEXT: [1,1] . DPeER . . . addl %eax, %edx # CHECK-NEXT: [1,2] . D=eER. . . addl %eax, %ebx -# CHECK-NEXT: [1,3] . D=eER. . . addl %edx, %esi -# CHECK-NEXT: [1,4] . .D=eER . . addl %ebx, %eax -# CHECK-NEXT: [1,5] . .D=eER . . addl %edx, %esi -# CHECK-NEXT: [1,6] . . D=eER . . addl %ebx, %eax -# CHECK-NEXT: [1,7] . . D==eER . . addl %ebx, %eax -# CHECK-NEXT: [2,0] . . D==eER . . addl %eax, %ecx -# CHECK-NEXT: [2,1] . . D==eER . . addl %eax, %edx -# CHECK-NEXT: [2,2] . . D==eER. . addl %eax, %ebx -# CHECK-NEXT: [2,3] . . D==eER. . addl %edx, %esi -# CHECK-NEXT: [2,4] . . D==eER . addl %ebx, %eax -# CHECK-NEXT: [2,5] . . D==eER . addl %edx, %esi -# CHECK-NEXT: [2,6] . . .D==eER. addl %ebx, %eax -# CHECK-NEXT: [2,7] . . .D===eER addl %ebx, %eax +# CHECK-NEXT: [1,3] . DPeER. . . addl %edx, %esi +# CHECK-NEXT: [1,4] . .DPeER . . addl %ebx, %eax +# CHECK-NEXT: [1,5] . .DPeER . . addl %edx, %esi +# CHECK-NEXT: [1,6] . . DPeER . . addl %ebx, %eax +# CHECK-NEXT: [1,7] . . DPPeER . . addl %ebx, %eax +# CHECK-NEXT: [2,0] . . DPPeER . . addl %eax, %ecx +# CHECK-NEXT: [2,1] . . DPPeER . . addl %eax, %edx +# CHECK-NEXT: [2,2] . . DP=eER. . addl %eax, %ebx +# CHECK-NEXT: [2,3] . . DPPeER. . addl %edx, %esi +# CHECK-NEXT: [2,4] . . DPPeER . addl %ebx, %eax +# CHECK-NEXT: [2,5] . . DPPeER . addl %edx, %esi +# CHECK-NEXT: [2,6] . . .DPPeER. addl %ebx, %eax +# CHECK-NEXT: [2,7] . . .DPPPeER addl %ebx, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s index f61bce125f588..efa3765df8aaf 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-1.s @@ -31,7 +31,14 @@ vmulps (%rdi), %xmm1, %xmm2 # CHECK-NEXT: 1 7 1.00 * vmulps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . vaddps %xmm0, %xmm0, %xmm1 # CHECK-NEXT: [0,1] DeeeeeeeER vmulps (%rdi), %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-2.s index 8b922644b7326..19fbf7f08b59b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-2.s @@ -30,7 +30,14 @@ # CHECK-NEXT: 2 6 2.00 * imull (%rdi) # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . imull %esi diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s index 6a4bad2aa7f47..92839af97dbc2 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/read-advance-3.s @@ -29,7 +29,14 @@ # CHECK-NEXT: 1 1 0.50 addq %rdx, %r8 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DeER .. addq %rdi, %rsi # CHECK-NEXT: [0,1] DeeeeER addq (%rsp), %rsi diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-1.s index 4788f8c46aa78..17c583708071f 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-1.s @@ -76,7 +76,14 @@ vaddps %xmm1, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vaddps %xmm1, %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DR . . vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DR . . vmovaps %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-2.s index 2182118a712ac..c2aa53b3352d2 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-2.s @@ -92,7 +92,14 @@ movdqu %xmm5, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - movdqu %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . . pxor %mm0, %mm0 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-3.s index 0d2f2160d3ecc..249d562dd6a19 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-3.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-3.s @@ -85,7 +85,14 @@ vmovdqu %xmm5, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - vmovdqu %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . .. vxorps %xmm0, %xmm0, %xmm0 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-4.s b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-4.s index d21b9815129da..ac6ee13ff462a 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-4.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-4.s @@ -79,7 +79,14 @@ mov %edx, %eax # CHECK-NEXT: - - - - - - - - - - - - - - movl %edx, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DR . . xorl %eax, %eax # CHECK-NEXT: [0,1] DR . . movl %eax, %ebx diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-5.s b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-5.s index f121087250cc8..97a774b1b043c 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-5.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-5.s @@ -79,7 +79,14 @@ mov %rdx, %rax # CHECK-NEXT: - - - - - - - - - - - - - - movq %rdx, %rax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DR . . xorq %rax, %rax # CHECK-NEXT: [0,1] DR . . movq %rax, %rbx diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-6.s b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-6.s index 0b6c023187090..33d80e1479a54 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-6.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/reg-move-elimination-6.s @@ -82,26 +82,33 @@ mov %esi, %ecx # CHECK-NEXT: - - - - - - - - - - - - - - movl %esi, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . . xorq %rsi, %rsi # CHECK-NEXT: [0,1] DeER . . . addq %rcx, %rcx # CHECK-NEXT: [0,2] .DeER. . . addq %rcx, %rcx -# CHECK-NEXT: [0,3] .D=eER . . addq %rcx, %rcx -# CHECK-NEXT: [0,4] . D=eER . . addq %rcx, %rcx +# CHECK-NEXT: [0,3] .DPeER . . addq %rcx, %rcx +# CHECK-NEXT: [0,4] . DPeER . . addq %rcx, %rcx # CHECK-NEXT: [0,5] . D---R . . movl %esi, %ecx # CHECK-NEXT: [1,0] . D---R . . xorq %rsi, %rsi # CHECK-NEXT: [1,1] . DeE-R . . addq %rcx, %rcx # CHECK-NEXT: [1,2] . DeE-R . . addq %rcx, %rcx -# CHECK-NEXT: [1,3] . D=eER . . addq %rcx, %rcx -# CHECK-NEXT: [1,4] . D=eER. . addq %rcx, %rcx +# CHECK-NEXT: [1,3] . DPeER . . addq %rcx, %rcx +# CHECK-NEXT: [1,4] . DPeER. . addq %rcx, %rcx # CHECK-NEXT: [1,5] . D---R. . movl %esi, %ecx # CHECK-NEXT: [2,0] . .D---R . xorq %rsi, %rsi # CHECK-NEXT: [2,1] . .DeE-R . addq %rcx, %rcx # CHECK-NEXT: [2,2] . . DeE-R. addq %rcx, %rcx -# CHECK-NEXT: [2,3] . . D=eER. addq %rcx, %rcx -# CHECK-NEXT: [2,4] . . D=eER addq %rcx, %rcx +# CHECK-NEXT: [2,3] . . DPeER. addq %rcx, %rcx +# CHECK-NEXT: [2,4] . . DPeER addq %rcx, %rcx # CHECK-NEXT: [2,5] . . D---R movl %esi, %ecx # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-1.s index 2eb6dee5e99d7..b33e41224d79f 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-1.s @@ -68,19 +68,26 @@ vmulps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmulps %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DeeeER . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D===eeER . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,0] .D====eeeER . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] .D=======eeER . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,0] . D========eeeER . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,1] . D===========eeER . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,0] . D============eeeER . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,1] . D===============eeER . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,0] . D================eeeER . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,1] . D===================eeER vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPPPeeER . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,0] .DPPPPeeeER . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] .DPPPPPPPeeER . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,0] . DPPPPPPPPeeeER . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPeeER . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPeeeER . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPPPeeER . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPeeeER . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPeeER vmulps %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-2.s index 66541f9e7fad2..854241f1c583e 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-2.s @@ -69,19 +69,26 @@ vmulps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vmulps %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DeeeER . . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D===eeER . . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,0] .D====eeeER . . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] .D=======eeER . . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,0] . D========eeeER . . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [2,1] . D========eeER . . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,0] . . D========eeeER . . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [3,1] . . D========eeER . . vmulps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,0] . . . D========eeeER . vaddps %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [4,1] . . . D========eeER vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPPPeeER . . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,0] .DPPPPeeeER . . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] .DPPPPPPPeeER . . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,0] . DPPPPPPPPeeeER . . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [2,1] . DPPPPPPPPeeER . . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,0] . . DPPPPPPPPeeeER . . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [3,1] . . DPPPPPPPPeeER . . vmulps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,0] . . . DPPPPPPPPeeeER . vaddps %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [4,1] . . . DPPPPPPPPeeER vmulps %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-3.s b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-3.s index 94a40ca24eb5c..8b524b8067938 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-3.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-3.s @@ -77,7 +77,14 @@ idiv %eax # CHECK-NEXT: - 1.00 25.00 - - - - - - - - - - - idivl %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 01234 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeER . . . . . . idivl %eax diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-4.s b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-4.s index 9e95042dcb5d9..36f251d667831 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-4.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-4.s @@ -53,12 +53,19 @@ idiv %eax # CHECK-NEXT: Max number of mappings used: 63 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeER . . . . . . . . . . . idivl %eax -# CHECK-NEXT: [1,0] .D========================eeeeeeeeeeeeeeeeeeeeeeeeeER . . . . . . idivl %eax -# CHECK-NEXT: [2,0] . D================================================eeeeeeeeeeeeeeeeeeeeeeeeeER idivl %eax +# CHECK-NEXT: [1,0] .DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeeeeER . . . . . . idivl %eax +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeeeeER idivl %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-5.s b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-5.s index a372b5713eb52..7f1b7528410c9 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-5.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/register-files-5.s @@ -74,7 +74,14 @@ # CHECK-NEXT: Max number of mappings used: 0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER . . . . . . vdivps %ymm0, %ymm0, %ymm1 @@ -93,22 +100,22 @@ # CHECK-NEXT: [0,13] . . . D==============eeeE--------------R . . . . . vaddps %ymm0, %ymm0, %ymm14 # CHECK-NEXT: [0,14] . . . D===============eeeE-------------R . . . . . vaddps %ymm0, %ymm0, %ymm15 # CHECK-NEXT: [0,15] . . . D======eeeE---------------------R . . . . . vaddps %ymm2, %ymm0, %ymm0 -# CHECK-NEXT: [0,16] . . . .D===============eeeE------------R . . . . . vaddps %ymm2, %ymm0, %ymm3 -# CHECK-NEXT: [0,17] . . . . D================eeeE----------R . . . . . vaddps %ymm2, %ymm0, %ymm4 -# CHECK-NEXT: [0,18] . . . . D=================eeeE---------R. . . . . vaddps %ymm2, %ymm0, %ymm5 -# CHECK-NEXT: [0,19] . . . . D==================eeeE-------R. . . . . vaddps %ymm2, %ymm0, %ymm6 -# CHECK-NEXT: [0,20] . . . . D===================eeeE------R . . . . vaddps %ymm2, %ymm0, %ymm7 -# CHECK-NEXT: [0,21] . . . . .D====================eeeE----R . . . . vaddps %ymm2, %ymm0, %ymm8 -# CHECK-NEXT: [0,22] . . . . . D=====================eeeE---R . . . . vaddps %ymm2, %ymm0, %ymm9 -# CHECK-NEXT: [0,23] . . . . . D======================eeeE-R . . . . vaddps %ymm2, %ymm0, %ymm10 +# CHECK-NEXT: [0,16] . . . .DPPPPPPPP=======eeeE------------R . . . . . vaddps %ymm2, %ymm0, %ymm3 +# CHECK-NEXT: [0,17] . . . . DPPPPPPP=========eeeE----------R . . . . . vaddps %ymm2, %ymm0, %ymm4 +# CHECK-NEXT: [0,18] . . . . DPPPPPP===========eeeE---------R. . . . . vaddps %ymm2, %ymm0, %ymm5 +# CHECK-NEXT: [0,19] . . . . DPPPPP=============eeeE-------R. . . . . vaddps %ymm2, %ymm0, %ymm6 +# CHECK-NEXT: [0,20] . . . . DPPPP===============eeeE------R . . . . vaddps %ymm2, %ymm0, %ymm7 +# CHECK-NEXT: [0,21] . . . . .DPPP=================eeeE----R . . . . vaddps %ymm2, %ymm0, %ymm8 +# CHECK-NEXT: [0,22] . . . . . DPP===================eeeE---R . . . . vaddps %ymm2, %ymm0, %ymm9 +# CHECK-NEXT: [0,23] . . . . . DP=====================eeeE-R . . . . vaddps %ymm2, %ymm0, %ymm10 # CHECK-NEXT: [0,24] . . . . . D=======================eeeER . . . . vaddps %ymm2, %ymm0, %ymm11 # CHECK-NEXT: [0,25] . . . . . D========================eeeER. . . . vaddps %ymm2, %ymm0, %ymm12 # CHECK-NEXT: [0,26] . . . . . .D=========================eeeER . . . vaddps %ymm2, %ymm0, %ymm13 # CHECK-NEXT: [0,27] . . . . . . D==========================eeeER . . . vaddps %ymm2, %ymm0, %ymm14 # CHECK-NEXT: [0,28] . . . . . . D===========================eeeER . . vaddps %ymm2, %ymm0, %ymm15 -# CHECK-NEXT: [0,29] . . . . . . D============================eeeER . . vaddps %ymm3, %ymm0, %ymm2 -# CHECK-NEXT: [0,30] . . . . . . D=============================eeeER. . vaddps %ymm3, %ymm0, %ymm4 -# CHECK-NEXT: [0,31] . . . . . . .D==============================eeeER . vaddps %ymm3, %ymm0, %ymm5 +# CHECK-NEXT: [0,29] . . . . . . DPPPPP=======================eeeER . . vaddps %ymm3, %ymm0, %ymm2 +# CHECK-NEXT: [0,30] . . . . . . DPPPP=========================eeeER. . vaddps %ymm3, %ymm0, %ymm4 +# CHECK-NEXT: [0,31] . . . . . . .DPPP===========================eeeER . vaddps %ymm3, %ymm0, %ymm5 # CHECK-NEXT: [0,32] . . . . . . . . D=======================eeeER vaddps %ymm3, %ymm0, %ymm6 # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-adc-sequence-readadvance.s b/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-adc-sequence-readadvance.s index ef25a48f4a724..4f6202382e1a3 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-adc-sequence-readadvance.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-adc-sequence-readadvance.s @@ -52,7 +52,14 @@ adc %eax, 4(%rsp) # CHECK-NEXT: 2.00 - - - - - - 1.00 - 1.00 - - - - adcl %eax, 4(%rsp) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . addl %eax, %eax # CHECK-NEXT: [0,1] DeeeeeeER adcl %eax, 4(%rsp) diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-add-sequence-readadvance.s b/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-add-sequence-readadvance.s index a8da4515b315e..44cccab97984b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-add-sequence-readadvance.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/rmw-add-sequence-readadvance.s @@ -52,7 +52,14 @@ add %eax, 4(%rsp) # CHECK-NEXT: 1.00 - - - - - - 1.00 - 1.00 - - - - addl %eax, 4(%rsp) # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . addl %eax, %eax # CHECK-NEXT: [0,1] DeeeeeeER addl %eax, 4(%rsp) diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s b/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s index b1768957c58f4..843c3048a6050 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s @@ -66,26 +66,33 @@ retq # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - retq # CHECK: Timeline view: -# CHECK-NEXT: 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345678 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . . stmxcsr -4(%rsp) # CHECK-NEXT: [0,1] DeER . . . . movl $-24577, %eax # CHECK-NEXT: [0,2] .DeeeeER . . . andl -4(%rsp), %eax -# CHECK-NEXT: [0,3] .D====eER . . . movl %eax, -8(%rsp) -# CHECK-NEXT: [0,4] . D===eeeER . . ldmxcsr -8(%rsp) +# CHECK-NEXT: [0,3] .DPPPPeER . . . movl %eax, -8(%rsp) +# CHECK-NEXT: [0,4] . DPPPeeeER . . ldmxcsr -8(%rsp) # CHECK-NEXT: [0,5] . DeeeeE--R . . retq -# CHECK-NEXT: [1,0] . D=====eER . . stmxcsr -4(%rsp) +# CHECK-NEXT: [1,0] . DPPPPPeER . . stmxcsr -4(%rsp) # CHECK-NEXT: [1,1] . DeE-----R . . movl $-24577, %eax # CHECK-NEXT: [1,2] . DeeeeE--R . . andl -4(%rsp), %eax -# CHECK-NEXT: [1,3] . D=====eER . . movl %eax, -8(%rsp) -# CHECK-NEXT: [1,4] . D====eeeER. . ldmxcsr -8(%rsp) +# CHECK-NEXT: [1,3] . DPPPP=eER . . movl %eax, -8(%rsp) +# CHECK-NEXT: [1,4] . DPPPPeeeER. . ldmxcsr -8(%rsp) # CHECK-NEXT: [1,5] . D=eeeeE--R. . retq -# CHECK-NEXT: [2,0] . .D======eER . stmxcsr -4(%rsp) +# CHECK-NEXT: [2,0] . .DPPPPPPeER . stmxcsr -4(%rsp) # CHECK-NEXT: [2,1] . .DeE------R . movl $-24577, %eax # CHECK-NEXT: [2,2] . . DeeeeE---R . andl -4(%rsp), %eax -# CHECK-NEXT: [2,3] . . D======eER . movl %eax, -8(%rsp) -# CHECK-NEXT: [2,4] . . D=====eeeER ldmxcsr -8(%rsp) +# CHECK-NEXT: [2,3] . . DPPPPP=eER . movl %eax, -8(%rsp) +# CHECK-NEXT: [2,4] . . DPPPPPeeeER ldmxcsr -8(%rsp) # CHECK-NEXT: [2,5] . . DeeeeE----R retq # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/unsupported-instruction.s b/llvm/test/tools/llvm-mca/X86/BtVer2/unsupported-instruction.s index 7d3aee5e3bf96..70b82e2bf3207 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/unsupported-instruction.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/unsupported-instruction.s @@ -1,3 +1,4 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -skip-unsupported-instructions=any -timeline %s 2>&1 | FileCheck --check-prefix=CHECK-SKIP %s # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -skip-unsupported-instructions=lack-sched -timeline %s 2>&1 | FileCheck --check-prefix=CHECK-SKIP %s # RUN: not llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -skip-unsupported-instructions=parse-failure -timeline %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s @@ -6,7 +7,6 @@ # Test checks that unsupported instructions exit with an error, unless -skip-unsupported-instructions=lack-sched is passed, in which case the remaining instructions should be analysed. # Additionally check that -skip-unsupported-instructions=parse-failure continues to raise the lack of scheduling information. -# CHECK-SKIP: warning: found an unsupported instruction in the input assembly sequence, skipping with -skip-unsupported-instructions, note accuracy will be impacted: # CHECK-ERROR: error: found an unsupported instruction in the input assembly sequence, use -skip-unsupported-instructions=lack-sched to ignore these on the input. bzhi %eax, %ebx, %ecx @@ -14,45 +14,80 @@ bzhi %eax, %ebx, %ecx # Supported instruction that may be analysed. add %eax, %eax -# CHECK-SKIP: Iterations: 100 -# CHECK-SKIP: Instructions: 100 -# CHECK-SKIP: Total Cycles: 103 -# CHECK-SKIP: Total uOps: 100 - -# CHECK-SKIP: Dispatch Width: 2 -# CHECK-SKIP: uOps Per Cycle: 0.97 -# CHECK-SKIP: IPC: 0.97 -# CHECK-SKIP: Block RThroughput: 0.5 - -# CHECK-SKIP: Instruction Info: -# CHECK-SKIP: [1]: #uOps -# CHECK-SKIP: [2]: Latency -# CHECK-SKIP: [3]: RThroughput -# CHECK-SKIP: [4]: MayLoad -# CHECK-SKIP: [5]: MayStore -# CHECK-SKIP: [6]: HasSideEffects (U) - -# CHECK-SKIP: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-SKIP: 1 1 0.50 addl %eax, %eax - -# CHECK-SKIP: Timeline view: - -# CHECK-SKIP: [0,0] DeER . . . addl %eax, %eax -# CHECK-SKIP: [1,0] D=eER. . . addl %eax, %eax -# CHECK-SKIP: [2,0] .D=eER . . addl %eax, %eax -# CHECK-SKIP: [3,0] .D==eER . . addl %eax, %eax -# CHECK-SKIP: [4,0] . D==eER . . addl %eax, %eax -# CHECK-SKIP: [5,0] . D===eER . . addl %eax, %eax -# CHECK-SKIP: [6,0] . D===eER. . addl %eax, %eax -# CHECK-SKIP: [7,0] . D====eER . addl %eax, %eax -# CHECK-SKIP: [8,0] . D====eER. addl %eax, %eax -# CHECK-SKIP: [9,0] . D=====eER addl %eax, %eax - -# CHECK-SKIP: Average Wait times (based on the timeline view): -# CHECK-SKIP: [0]: Executions -# CHECK-SKIP: [1]: Average time spent waiting in a scheduler's queue -# CHECK-SKIP: [2]: Average time spent waiting in a scheduler's queue while ready -# CHECK-SKIP: [3]: Average time elapsed from WB until retire stage - -# CHECK-SKIP: [0] [1] [2] [3] -# CHECK-SKIP: 0. 10 3.5 0.1 0.0 addl %eax, %eax +# CHECK-SKIP: warning: found an unsupported instruction in the input assembly sequence, skipping with -skip-unsupported-instructions, note accuracy will be impacted: +# CHECK-SKIP-NEXT: note: instruction: bzhil %eax, %ebx, %ecx +# CHECK-SKIP-NEXT: Iterations: 100 +# CHECK-SKIP-NEXT: Instructions: 100 +# CHECK-SKIP-NEXT: Total Cycles: 103 +# CHECK-SKIP-NEXT: Total uOps: 100 + +# CHECK-SKIP: Dispatch Width: 2 +# CHECK-SKIP-NEXT: uOps Per Cycle: 0.97 +# CHECK-SKIP-NEXT: IPC: 0.97 +# CHECK-SKIP-NEXT: Block RThroughput: 0.5 + +# CHECK-SKIP: Instruction Info: +# CHECK-SKIP-NEXT: [1]: #uOps +# CHECK-SKIP-NEXT: [2]: Latency +# CHECK-SKIP-NEXT: [3]: RThroughput +# CHECK-SKIP-NEXT: [4]: MayLoad +# CHECK-SKIP-NEXT: [5]: MayStore +# CHECK-SKIP-NEXT: [6]: HasSideEffects (U) + +# CHECK-SKIP: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-SKIP-NEXT: 1 1 0.50 addl %eax, %eax + +# CHECK-SKIP: Resources: +# CHECK-SKIP-NEXT: [0] - JALU0 +# CHECK-SKIP-NEXT: [1] - JALU1 +# CHECK-SKIP-NEXT: [2] - JDiv +# CHECK-SKIP-NEXT: [3] - JFPA +# CHECK-SKIP-NEXT: [4] - JFPM +# CHECK-SKIP-NEXT: [5] - JFPU0 +# CHECK-SKIP-NEXT: [6] - JFPU1 +# CHECK-SKIP-NEXT: [7] - JLAGU +# CHECK-SKIP-NEXT: [8] - JMul +# CHECK-SKIP-NEXT: [9] - JSAGU +# CHECK-SKIP-NEXT: [10] - JSTC +# CHECK-SKIP-NEXT: [11] - JVALU0 +# CHECK-SKIP-NEXT: [12] - JVALU1 +# CHECK-SKIP-NEXT: [13] - JVIMUL + +# CHECK-SKIP: Resource pressure per iteration: +# CHECK-SKIP-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] +# CHECK-SKIP-NEXT: 0.50 0.50 - - - - - - - - - - - - + +# CHECK-SKIP: Resource pressure by instruction: +# CHECK-SKIP-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: +# CHECK-SKIP-NEXT: 0.50 0.50 - - - - - - - - - - - - addl %eax, %eax + +# CHECK-SKIP: Timeline view: +# CHECK-SKIP-NEXT: D: Instruction dispatched +# CHECK-SKIP-NEXT: e: Instruction executing +# CHECK-SKIP-NEXT: E: Instruction executed (write-back stage) +# CHECK-SKIP-NEXT: P: Instruction waiting for data dependency +# CHECK-SKIP-NEXT: =: Instruction waiting for available HW resource +# CHECK-SKIP-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK-SKIP: 012 +# CHECK-SKIP-NEXT: Index 0123456789 + +# CHECK-SKIP: [0,0] DeER . . . addl %eax, %eax +# CHECK-SKIP-NEXT: [1,0] DPeER. . . addl %eax, %eax +# CHECK-SKIP-NEXT: [2,0] .DPeER . . addl %eax, %eax +# CHECK-SKIP-NEXT: [3,0] .DPPeER . . addl %eax, %eax +# CHECK-SKIP-NEXT: [4,0] . DPPeER . . addl %eax, %eax +# CHECK-SKIP-NEXT: [5,0] . DPPPeER . . addl %eax, %eax +# CHECK-SKIP-NEXT: [6,0] . DPPPeER. . addl %eax, %eax +# CHECK-SKIP-NEXT: [7,0] . DPPPPeER . addl %eax, %eax +# CHECK-SKIP-NEXT: [8,0] . DPPPPeER. addl %eax, %eax +# CHECK-SKIP-NEXT: [9,0] . DPPPPPeER addl %eax, %eax + +# CHECK-SKIP: Average Wait times (based on the timeline view): +# CHECK-SKIP-NEXT: [0]: Executions +# CHECK-SKIP-NEXT: [1]: Average time spent waiting in a scheduler's queue +# CHECK-SKIP-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# CHECK-SKIP-NEXT: [3]: Average time elapsed from WB until retire stage + +# CHECK-SKIP: [0] [1] [2] [3] +# CHECK-SKIP-NEXT: 0. 10 3.5 0.1 0.0 addl %eax, %eax diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/vbroadcast-operand-latency.s b/llvm/test/tools/llvm-mca/X86/BtVer2/vbroadcast-operand-latency.s index f0a40ce9af011..1c810d512e0eb 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/vbroadcast-operand-latency.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/vbroadcast-operand-latency.s @@ -52,15 +52,22 @@ vbroadcastss (%rax), %ymm0 # CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastss (%rax), %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. . . leaq 8(%rsp,%rdi,2), %rax -# CHECK-NEXT: [0,1] .D=eeeeeeER . vbroadcastss (%rax), %ymm0 +# CHECK-NEXT: [0,1] .DPeeeeeeER . vbroadcastss (%rax), %ymm0 # CHECK-NEXT: [1,0] . DeeE----R . leaq 8(%rsp,%rdi,2), %rax -# CHECK-NEXT: [1,1] . D=eeeeeeER . vbroadcastss (%rax), %ymm0 +# CHECK-NEXT: [1,1] . DPeeeeeeER . vbroadcastss (%rax), %ymm0 # CHECK-NEXT: [2,0] . DeeE----R . leaq 8(%rsp,%rdi,2), %rax -# CHECK-NEXT: [2,1] . D=eeeeeeER vbroadcastss (%rax), %ymm0 +# CHECK-NEXT: [2,1] . DPeeeeeeER vbroadcastss (%rax), %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions 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 1c5c8cf2eb79e..13dee920479d5 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 @@ -27,7 +27,14 @@ vandps (%rdi), %xmm1, %xmm2 # CHECK-NEXT: 1 6 1.00 * vandps (%rdi), %xmm1, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# 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 7e76fcc1df8c7..84453a877b707 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 @@ -27,7 +27,14 @@ vandps (%rdi), %ymm1, %ymm2 # CHECK-NEXT: 2 6 2.00 * vandps (%rdi), %ymm1, %ymm2 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . vaddps %ymm0, %ymm0, %ymm1 # CHECK-NEXT: [0,1] .DeeeeeeER vandps (%rdi), %ymm1, %ymm2 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/xadd.s b/llvm/test/tools/llvm-mca/X86/BtVer2/xadd.s index 691f530be7b07..20f7aaf10a72b 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/xadd.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/xadd.s @@ -73,19 +73,26 @@ imul %ecx, %ecx # CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123 # CHECK: [0,0] DeeeeeeeeeeeER . . . xaddl %ecx, (%rsp) -# CHECK-NEXT: [0,1] . D=eE-------R . . . addl %ecx, %ecx -# CHECK-NEXT: [0,2] . D==eE-------R. . . addl %ecx, %ecx -# CHECK-NEXT: [0,3] . D==eeeE----R. . . imull %ecx, %ecx -# CHECK-NEXT: [0,4] . D=====eeeE--R . . imull %ecx, %ecx -# CHECK-NEXT: [1,0] . D====eeeeeeeeeeeER . xaddl %ecx, (%rsp) -# CHECK-NEXT: [1,1] . .D=====eE-------R . addl %ecx, %ecx -# CHECK-NEXT: [1,2] . .D======eE-------R. addl %ecx, %ecx -# CHECK-NEXT: [1,3] . . D======eeeE----R. imull %ecx, %ecx -# CHECK-NEXT: [1,4] . . D=========eeeE--R imull %ecx, %ecx +# CHECK-NEXT: [0,1] . DPeE-------R . . . addl %ecx, %ecx +# CHECK-NEXT: [0,2] . DPPeE-------R. . . addl %ecx, %ecx +# CHECK-NEXT: [0,3] . DPPeeeE----R. . . imull %ecx, %ecx +# CHECK-NEXT: [0,4] . DPPPPPeeeE--R . . imull %ecx, %ecx +# CHECK-NEXT: [1,0] . DPPPPeeeeeeeeeeeER . xaddl %ecx, (%rsp) +# CHECK-NEXT: [1,1] . .DPPPPPeE-------R . addl %ecx, %ecx +# CHECK-NEXT: [1,2] . .DPPPPPPeE-------R. addl %ecx, %ecx +# CHECK-NEXT: [1,3] . . DPPPPPPeeeE----R. imull %ecx, %ecx +# CHECK-NEXT: [1,4] . . DPPPPPPPPPeeeE--R imull %ecx, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -157,19 +164,26 @@ imul %ecx, %ecx # CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeeeeeeeeER . . . . . lock xaddl %ecx, (%rsp) -# CHECK-NEXT: [0,1] . D=========eE----R . . . . . addl %ecx, %ecx -# CHECK-NEXT: [0,2] . D==========eE----R. . . . . addl %ecx, %ecx -# CHECK-NEXT: [0,3] . D==========eeeE-R. . . . . imull %ecx, %ecx -# CHECK-NEXT: [0,4] . D=============eeeER . . . . imull %ecx, %ecx -# CHECK-NEXT: [1,0] . D============eeeeeeeeeeeeeeeeER. . lock xaddl %ecx, (%rsp) -# CHECK-NEXT: [1,1] . .D=====================eE----R. . addl %ecx, %ecx -# CHECK-NEXT: [1,2] . .D======================eE----R . addl %ecx, %ecx -# CHECK-NEXT: [1,3] . . D======================eeeE-R . imull %ecx, %ecx -# CHECK-NEXT: [1,4] . . D=========================eeeER imull %ecx, %ecx +# CHECK-NEXT: [0,1] . DPPPPPPPPPeE----R . . . . . addl %ecx, %ecx +# CHECK-NEXT: [0,2] . DPPPPPPPPPPeE----R. . . . . addl %ecx, %ecx +# CHECK-NEXT: [0,3] . DPPPPPPPPPPeeeE-R. . . . . imull %ecx, %ecx +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPeeeER . . . . imull %ecx, %ecx +# CHECK-NEXT: [1,0] . DPPPPPPPPPPPPeeeeeeeeeeeeeeeeER. . lock xaddl %ecx, (%rsp) +# CHECK-NEXT: [1,1] . .DPPPPPPPPPPPPPPPPPPPPPeE----R. . addl %ecx, %ecx +# CHECK-NEXT: [1,2] . .DPPPPPPPPPPPPPPPPPPPPPPeE----R . addl %ecx, %ecx +# CHECK-NEXT: [1,3] . . DPPPPPPPPPPPPPPPPPPPPPPeeeE-R . imull %ecx, %ecx +# CHECK-NEXT: [1,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeeeER imull %ecx, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/xchg.s b/llvm/test/tools/llvm-mca/X86/BtVer2/xchg.s index 2620fa871be53..d5b6e1a2735e7 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/xchg.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/xchg.s @@ -61,19 +61,26 @@ imul %ecx, %ecx # CHECK-NEXT: - 1.00 - - - - - - 1.00 - - - - - imull %ecx, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeeeeeeeeeeeeeeER . . . . . xchgl %ecx, (%rsp) -# CHECK-NEXT: [0,1] .D==========eE----R . . . . . addl %ecx, %ecx -# CHECK-NEXT: [0,2] . D==========eE----R. . . . . addl %ecx, %ecx -# CHECK-NEXT: [0,3] . D===========eeeE-R. . . . . imull %ecx, %ecx -# CHECK-NEXT: [0,4] . D=============eeeER . . . . imull %ecx, %ecx -# CHECK-NEXT: [1,0] . D============eeeeeeeeeeeeeeeeER. . xchgl %ecx, (%rsp) -# CHECK-NEXT: [1,1] . D======================eE----R. . addl %ecx, %ecx -# CHECK-NEXT: [1,2] . .D======================eE----R . addl %ecx, %ecx -# CHECK-NEXT: [1,3] . .D=======================eeeE-R . imull %ecx, %ecx -# CHECK-NEXT: [1,4] . . D=========================eeeER imull %ecx, %ecx +# CHECK-NEXT: [0,1] .DPPPPPPPPPPeE----R . . . . . addl %ecx, %ecx +# CHECK-NEXT: [0,2] . DPPPPPPPPPPeE----R. . . . . addl %ecx, %ecx +# CHECK-NEXT: [0,3] . DPPPPPPPPPPPeeeE-R. . . . . imull %ecx, %ecx +# CHECK-NEXT: [0,4] . DPPPPPPPPPPPPPeeeER . . . . imull %ecx, %ecx +# CHECK-NEXT: [1,0] . DPPPPPPPPPPPPeeeeeeeeeeeeeeeeER. . xchgl %ecx, (%rsp) +# CHECK-NEXT: [1,1] . DPPPPPPPPPPPPPPPPPPPPPPeE----R. . addl %ecx, %ecx +# CHECK-NEXT: [1,2] . .DPPPPPPPPPPPPPPPPPPPPPPeE----R . addl %ecx, %ecx +# CHECK-NEXT: [1,3] . .DPPPPPPPPPPPPPPPPPPPPPPPeeeE-R . imull %ecx, %ecx +# CHECK-NEXT: [1,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPPeeeER imull %ecx, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms-avx-256.s b/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms-avx-256.s index b5a8bb0521b37..8429493e60f9e 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms-avx-256.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms-avx-256.s @@ -88,7 +88,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vblendps $2, %ymm1, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . vaddps %ymm0, %ymm0, %ymm1 @@ -165,7 +172,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vblendpd $2, %ymm1, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . . vaddpd %ymm0, %ymm0, %ymm1 @@ -240,7 +254,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnps %ymm2, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . vaddps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] .DeE-R . vandnps %ymm2, %ymm2, %ymm3 @@ -310,7 +331,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnps %ymm2, %ymm2, %ymm3 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeER . vaddps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] .DeE-R . vandnps %ymm2, %ymm2, %ymm3 @@ -380,7 +408,14 @@ vaddps %ymm1, %ymm1, %ymm0 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vaddps %ymm1, %ymm1, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . vperm2f128 $136, %ymm0, %ymm0, %ymm1 diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s index eb41f7acc9589..550b6a4c8619a 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/zero-idioms.s @@ -288,7 +288,14 @@ vpxor %xmm3, %xmm3, %xmm5 # CHECK-NEXT: - - - - - - - - - - - - - - vpxor %xmm3, %xmm3, %xmm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DR . . . . . . .. subl %eax, %eax diff --git a/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-1.s b/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-1.s index 9930d08cf2e1f..bee8d8b99e2e1 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-1.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-1.s @@ -58,21 +58,28 @@ # CHECK-NEXT: - - - 1.00 - - - - vaddps %xmm4, %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmulps %zmm0, %zmm1, %zmm2 # CHECK-NEXT: [0,1] DeeeE--R . . . .. vaddps %xmm1, %xmm1, %xmm2 -# CHECK-NEXT: [0,2] D===eeeeeER . . .. vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [0,3] D========eeeER . . .. vaddps %xmm4, %xmm5, %xmm6 -# CHECK-NEXT: [0,4] .D==========eeeeeER . .. vmulps %xmm6, %xmm3, %xmm4 -# CHECK-NEXT: [0,5] .D===============eeeER .. vaddps %xmm4, %xmm5, %xmm0 -# CHECK-NEXT: [1,0] .D==================eeeeeER vmulps %zmm0, %zmm1, %zmm2 +# CHECK-NEXT: [0,2] DPPPeeeeeER . . .. vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . .. vaddps %xmm4, %xmm5, %xmm6 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPeeeeeER . .. vmulps %xmm6, %xmm3, %xmm4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPeeeER .. vaddps %xmm4, %xmm5, %xmm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPPPPPPPPPPPeeeeeER vmulps %zmm0, %zmm1, %zmm2 # CHECK-NEXT: [1,1] .DeeeE--------------------R vaddps %xmm1, %xmm1, %xmm2 -# CHECK-NEXT: [1,2] . D==eeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [1,3] . D=======eeeE------------R vaddps %xmm4, %xmm5, %xmm6 -# CHECK-NEXT: [1,4] . D==========eeeeeE-------R vmulps %xmm6, %xmm3, %xmm4 -# CHECK-NEXT: [1,5] . D===============eeeE----R vaddps %xmm4, %xmm5, %xmm0 +# CHECK-NEXT: [1,2] . DPPeeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [1,3] . DPPPPPPPeeeE------------R vaddps %xmm4, %xmm5, %xmm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPeeeeeE-------R vmulps %xmm6, %xmm3, %xmm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPPPeeeE----R vaddps %xmm4, %xmm5, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-2.s b/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-2.s index de72dafda2fde..ab50d99b2b033 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-2.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-2.s @@ -58,21 +58,28 @@ # CHECK-NEXT: - - - 1.00 - - - - vaddps %xmm4, %xmm5, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmulps %zmm0, %zmm1, %zmm2 # CHECK-NEXT: [0,1] DeeeE--R . . . .. vaddps %ymm1, %ymm1, %ymm2 -# CHECK-NEXT: [0,2] D===eeeeeER . . .. vmulps %zmm2, %zmm3, %zmm4 -# CHECK-NEXT: [0,3] D========eeeER . . .. vaddps %xmm4, %xmm5, %xmm6 -# CHECK-NEXT: [0,4] .D==========eeeeeER . .. vmulps %xmm6, %xmm3, %xmm4 -# CHECK-NEXT: [0,5] .D===============eeeER .. vaddps %xmm4, %xmm5, %xmm0 -# CHECK-NEXT: [1,0] .D==================eeeeeER vmulps %zmm0, %zmm1, %zmm2 +# CHECK-NEXT: [0,2] DPPPeeeeeER . . .. vmulps %zmm2, %zmm3, %zmm4 +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . .. vaddps %xmm4, %xmm5, %xmm6 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPeeeeeER . .. vmulps %xmm6, %xmm3, %xmm4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPeeeER .. vaddps %xmm4, %xmm5, %xmm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPPPPPPPPPPPeeeeeER vmulps %zmm0, %zmm1, %zmm2 # CHECK-NEXT: [1,1] .DeeeE--------------------R vaddps %ymm1, %ymm1, %ymm2 -# CHECK-NEXT: [1,2] . D==eeeeeE---------------R vmulps %zmm2, %zmm3, %zmm4 -# CHECK-NEXT: [1,3] . D=======eeeE------------R vaddps %xmm4, %xmm5, %xmm6 -# CHECK-NEXT: [1,4] . D==========eeeeeE-------R vmulps %xmm6, %xmm3, %xmm4 -# CHECK-NEXT: [1,5] . D===============eeeE----R vaddps %xmm4, %xmm5, %xmm0 +# CHECK-NEXT: [1,2] . DPPeeeeeE---------------R vmulps %zmm2, %zmm3, %zmm4 +# CHECK-NEXT: [1,3] . DPPPPPPPeeeE------------R vaddps %xmm4, %xmm5, %xmm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPeeeeeE-------R vmulps %xmm6, %xmm3, %xmm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPPPeeeE----R vaddps %xmm4, %xmm5, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-3.s b/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-3.s index 5495b97b3367f..70ebb1546e77e 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-3.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/avx512-super-registers-3.s @@ -58,21 +58,28 @@ # CHECK-NEXT: - - - 1.00 - - - - vaddps %xmm4, %xmm20, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmulps %zmm0, %zmm1, %zmm2 # CHECK-NEXT: [0,1] DeeeE--R . . . .. vaddps %xmm16, %xmm17, %xmm2 -# CHECK-NEXT: [0,2] D===eeeeeER . . .. vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [0,3] D========eeeER . . .. vaddps %xmm4, %xmm18, %xmm6 -# CHECK-NEXT: [0,4] .D==========eeeeeER . .. vmulps %xmm6, %xmm19, %xmm4 -# CHECK-NEXT: [0,5] .D===============eeeER .. vaddps %xmm4, %xmm20, %xmm0 -# CHECK-NEXT: [1,0] .D==================eeeeeER vmulps %zmm0, %zmm1, %zmm2 +# CHECK-NEXT: [0,2] DPPPeeeeeER . . .. vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . .. vaddps %xmm4, %xmm18, %xmm6 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPeeeeeER . .. vmulps %xmm6, %xmm19, %xmm4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPeeeER .. vaddps %xmm4, %xmm20, %xmm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPPPPPPPPPPPeeeeeER vmulps %zmm0, %zmm1, %zmm2 # CHECK-NEXT: [1,1] .DeeeE--------------------R vaddps %xmm16, %xmm17, %xmm2 -# CHECK-NEXT: [1,2] . D==eeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [1,3] . D=======eeeE------------R vaddps %xmm4, %xmm18, %xmm6 -# CHECK-NEXT: [1,4] . D==========eeeeeE-------R vmulps %xmm6, %xmm19, %xmm4 -# CHECK-NEXT: [1,5] . D===============eeeE----R vaddps %xmm4, %xmm20, %xmm0 +# CHECK-NEXT: [1,2] . DPPeeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [1,3] . DPPPPPPPeeeE------------R vaddps %xmm4, %xmm18, %xmm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPeeeeeE-------R vmulps %xmm6, %xmm19, %xmm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPPPeeeE----R vaddps %xmm4, %xmm20, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-1.s b/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-1.s index 2a9ef74569f2b..668f9475a7491 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-1.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-1.s @@ -58,21 +58,28 @@ # CHECK-NEXT: - - - 1.00 - - - - vaddps %ymm4, %ymm5, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeeeER . . . .. vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] DeeeE--R . . . .. vfrczpd %xmm1, %xmm2 -# CHECK-NEXT: [0,2] D===eeeeeER . . .. vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [0,3] D========eeeER . . .. vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [0,4] .D==========eeeeeER . .. vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [0,5] .D===============eeeER .. vaddps %ymm4, %ymm5, %ymm0 -# CHECK-NEXT: [1,0] .D==================eeeeeER vmulps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: [0,2] DPPPeeeeeER . . .. vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [0,3] DPPPPPPPPeeeER . . .. vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [0,4] .DPPPPPPPPPPeeeeeER . .. vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPPPeeeER .. vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPPPPPPPPPPPeeeeeER vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [1,1] .DeeeE--------------------R vfrczpd %xmm1, %xmm2 -# CHECK-NEXT: [1,2] . D==eeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [1,3] . D=======eeeE------------R vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [1,4] . D==========eeeeeE-------R vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [1,5] . D===============eeeE----R vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,2] . DPPeeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [1,3] . DPPPPPPPeeeE------------R vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPeeeeeE-------R vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPPPeeeE----R vaddps %ymm4, %ymm5, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s b/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s index 915499f418488..10bbd2d48be1c 100644 --- a/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s @@ -58,21 +58,28 @@ # CHECK-NEXT: - - - 1.00 - - - - vaddps %ymm4, %ymm5, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DeeeeeER . . . . vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [0,1] DeE----R . . . . vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2 -# CHECK-NEXT: [0,2] D=eeeeeER . . . . vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [0,3] D======eeeER . . . vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [0,4] .D========eeeeeER . . vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [0,5] .D=============eeeER. . vaddps %ymm4, %ymm5, %ymm0 -# CHECK-NEXT: [1,0] .D================eeeeeER vmulps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: [0,2] DPeeeeeER . . . . vmulps %ymm2, %ymm3, %ymm4 +# CHECK-NEXT: [0,3] DPPPPPPeeeER . . . vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [0,4] .DPPPPPPPPeeeeeER . . vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [0,5] .DPPPPPPPPPPPPPeeeER. . vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,0] .DPPPPPPPPPPPPPPPPeeeeeER vmulps %ymm0, %ymm1, %ymm2 # CHECK-NEXT: [1,1] .DeE--------------------R vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2 # CHECK-NEXT: [1,2] . DeeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4 -# CHECK-NEXT: [1,3] . D=====eeeE------------R vaddps %ymm4, %ymm5, %ymm6 -# CHECK-NEXT: [1,4] . D========eeeeeE-------R vmulps %ymm6, %ymm3, %ymm4 -# CHECK-NEXT: [1,5] . D=============eeeE----R vaddps %ymm4, %ymm5, %ymm0 +# CHECK-NEXT: [1,3] . DPPPPPeeeE------------R vaddps %ymm4, %ymm5, %ymm6 +# CHECK-NEXT: [1,4] . DPPPPPPPPeeeeeE-------R vmulps %ymm6, %ymm3, %ymm4 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPPPeeeE----R vaddps %ymm4, %ymm5, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/adcx-adox-read-advance.s b/llvm/test/tools/llvm-mca/X86/Haswell/adcx-adox-read-advance.s index d418b6176c993..afdd511acb0f8 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/adcx-adox-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/adcx-adox-read-advance.s @@ -55,11 +55,18 @@ adox (%rdi), %rcx # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - adcxq (%rdi), %rcx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER.. adcxq (%rdi), %rcx -# CHECK-NEXT: [1,0] .D=eeeeeeeER adcxq (%rdi), %rcx +# CHECK-NEXT: [1,0] .DPeeeeeeeER adcxq (%rdi), %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -114,11 +121,18 @@ adox (%rdi), %rcx # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - 0.50 0.50 - adoxq (%rdi), %rcx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER.. adoxq (%rdi), %rcx -# CHECK-NEXT: [1,0] .D=eeeeeeeER adoxq (%rdi), %rcx +# CHECK-NEXT: [1,0] .DPeeeeeeeER adoxq (%rdi), %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/cmpxchg16b.s b/llvm/test/tools/llvm-mca/X86/Haswell/cmpxchg16b.s index 7bd095670d671..f06181afca52e 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/cmpxchg16b.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/cmpxchg16b.s @@ -60,12 +60,19 @@ cmpxchg16b (%rsi) # CHECK-NEXT: - - 2.00 6.00 0.66 0.67 1.00 4.00 4.00 0.67 cmpxchg16b (%rsi) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 012345678 # CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeER. . . . . . . . . . cmpxchg16b (%rsi) -# CHECK-NEXT: [1,0] . D=================eeeeeeeeeeeeeeeeeeeeeeER . . . . . cmpxchg16b (%rsi) -# CHECK-NEXT: [2,0] . . D==================================eeeeeeeeeeeeeeeeeeeeeeER cmpxchg16b (%rsi) +# CHECK-NEXT: [1,0] . DPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeER . . . . . cmpxchg16b (%rsi) +# CHECK-NEXT: [2,0] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeER cmpxchg16b (%rsi) # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/Haswell/independent-load-stores.s index a5ad56b6a7496..979c04c7ad72b 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/independent-load-stores.s @@ -81,11 +81,17 @@ # ALL-NEXT: - - 0.50 - 0.66 0.67 1.00 0.50 - 0.67 addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 012345678 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 012345678 # NOALIAS-NEXT: Index 0123456789 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 012 +# YESALIAS: 0123456789 0123456789 0123456789 012 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # NOALIAS: [0,0] DeeeeeeeER. . . addq $44, 64(%r14) @@ -100,15 +106,15 @@ # NOALIAS-NEXT: [0,9] . . DeeeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeeER. . . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] .D======eeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] . D============eeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] . D==================eeeeeeeER . . . . . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D========================eeeeeeeER . . . . . . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D==============================eeeeeeeER. . . . . . . addq $44, 384(%r14) -# YESALIAS-NEXT: [0,6] . .D====================================eeeeeeeER . . . . . addq $44, 448(%r14) -# YESALIAS-NEXT: [0,7] . . D==========================================eeeeeeeER . . . . addq $44, 512(%r14) -# YESALIAS-NEXT: [0,8] . . D================================================eeeeeeeER . . addq $44, 576(%r14) -# YESALIAS-NEXT: [0,9] . . D======================================================eeeeeeeER addq $44, 640(%r14) +# YESALIAS-NEXT: [0,1] .DPPPPPPeeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] . DPPPPPPPPPPPPeeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER. . . . . . . addq $44, 384(%r14) +# YESALIAS-NEXT: [0,6] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . addq $44, 448(%r14) +# YESALIAS-NEXT: [0,7] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . addq $44, 512(%r14) +# YESALIAS-NEXT: [0,8] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . addq $44, 576(%r14) +# YESALIAS-NEXT: [0,9] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER addq $44, 640(%r14) # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-hi-read-advance.s b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-hi-read-advance.s index 424e67a0d7f47..6d6975c19c0a6 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-hi-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-hi-read-advance.s @@ -59,11 +59,18 @@ add %rax, %rax # CHECK-NEXT: - - 1.00 - - - - - - - addl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER mulxl (%rdi), %eax, %ecx -# CHECK-NEXT: [0,1] .D=======eER addl %eax, %eax +# CHECK-NEXT: [0,1] .DPPPPPPPeER addl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -122,11 +129,18 @@ add %rax, %rax # CHECK-NEXT: - - - - - - - 1.00 - - addq %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER mulxq (%rdi), %rax, %rcx -# CHECK-NEXT: [0,1] .D=======eER addq %rax, %rax +# CHECK-NEXT: [0,1] .DPPPPPPPeER addq %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-lo-reg-use.s b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-lo-reg-use.s index 180b97d688db4..da9e8903456c5 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-lo-reg-use.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-lo-reg-use.s @@ -53,10 +53,17 @@ mulxq %rax, %rax, %rcx # CHECK-NEXT: - - 0.50 1.00 - - - 0.50 1.00 - mulxl %eax, %eax, %ecx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %ecx -# CHECK-NEXT: [1,0] .D==eeeeER mulxl %eax, %eax, %ecx +# CHECK-NEXT: [1,0] .DPPeeeeER mulxl %eax, %eax, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -111,10 +118,17 @@ mulxq %rax, %rax, %rcx # CHECK-NEXT: - - - 1.00 - - - - 1.00 - mulxq %rax, %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rcx -# CHECK-NEXT: [1,0] .D==eeeeER mulxq %rax, %rax, %rcx +# CHECK-NEXT: [1,0] .DPPeeeeER mulxq %rax, %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-read-advance.s b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-read-advance.s index 8203ce27c44aa..57981091ae158 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-read-advance.s @@ -55,11 +55,18 @@ mulxq (%rdi), %rax, %rdx # CHECK-NEXT: - - 0.50 1.00 0.50 0.50 - 0.50 1.00 - mulxl (%rdi), %eax, %edx # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER . mulxl (%rdi), %eax, %edx -# CHECK-NEXT: [1,0] . D==eeeeeeeeeER mulxl (%rdi), %eax, %edx +# CHECK-NEXT: [1,0] . DPPeeeeeeeeeER mulxl (%rdi), %eax, %edx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -114,11 +121,18 @@ mulxq (%rdi), %rax, %rdx # CHECK-NEXT: - - - 1.00 0.50 0.50 - - 1.00 - mulxq (%rdi), %rax, %rdx # CHECK: Timeline view: -# CHECK-NEXT: 012345 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012345 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER . mulxq (%rdi), %rax, %rdx -# CHECK-NEXT: [1,0] .D===eeeeeeeeeER mulxq (%rdi), %rax, %rdx +# CHECK-NEXT: [1,0] .DPPPeeeeeeeeeER mulxq (%rdi), %rax, %rdx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-same-regs.s b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-same-regs.s index 4cd496144c4b7..276c377ffa31d 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/mulx-same-regs.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/mulx-same-regs.s @@ -56,11 +56,18 @@ mulxq %rax, %rax, %rax # CHECK-NEXT: - - 0.50 1.00 - - - 0.50 1.00 - mulxl %eax, %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %eax -# CHECK-NEXT: [1,0] .D===eeeeER mulxl %eax, %eax, %eax +# CHECK-NEXT: [1,0] .DPPPeeeeER mulxl %eax, %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -115,11 +122,18 @@ mulxq %rax, %rax, %rax # CHECK-NEXT: - - - 1.00 - - - - 1.00 - mulxq %rax, %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rax -# CHECK-NEXT: [1,0] .D===eeeeER mulxq %rax, %rax, %rax +# CHECK-NEXT: [1,0] .DPPPeeeeER mulxq %rax, %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s b/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s index 011dfe61017ea..4d58181a9d798 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s @@ -62,26 +62,33 @@ retq # CHECK-NEXT: - - 0.23 0.30 0.50 0.50 - 0.47 1.00 - retq # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 012 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeER. . . . . . . stmxcsr -4(%rsp) # CHECK-NEXT: [0,1] DeE-R. . . . . . . movl $-24577, %eax # CHECK-NEXT: [0,2] .DeeeeeeER. . . . . . andl -4(%rsp), %eax -# CHECK-NEXT: [0,3] .D======eER . . . . . movl %eax, -8(%rsp) -# CHECK-NEXT: [0,4] . D=====eeeeeeeER . . . . ldmxcsr -8(%rsp) +# CHECK-NEXT: [0,3] .DPPPPPPeER . . . . . movl %eax, -8(%rsp) +# CHECK-NEXT: [0,4] . DPPPPPeeeeeeeER . . . . ldmxcsr -8(%rsp) # CHECK-NEXT: [0,5] . DeeeeeeeE----R . . . . retq -# CHECK-NEXT: [1,0] . D==========eeER . . . . stmxcsr -4(%rsp) +# CHECK-NEXT: [1,0] . DPPPPPPPPPPeeER . . . . stmxcsr -4(%rsp) # CHECK-NEXT: [1,1] . DeE-----------R . . . . movl $-24577, %eax # CHECK-NEXT: [1,2] . DeeeeeeE-----R . . . . andl -4(%rsp), %eax -# CHECK-NEXT: [1,3] . D==========eER . . . . movl %eax, -8(%rsp) -# CHECK-NEXT: [1,4] . .D=========eeeeeeeER. . . ldmxcsr -8(%rsp) +# CHECK-NEXT: [1,3] . DPPPPPPPPP=eER . . . . movl %eax, -8(%rsp) +# CHECK-NEXT: [1,4] . .DPPPPPPPPPeeeeeeeER. . . ldmxcsr -8(%rsp) # CHECK-NEXT: [1,5] . . D=eeeeeeeE-------R. . . retq -# CHECK-NEXT: [2,0] . . D==============eeER . . stmxcsr -4(%rsp) +# CHECK-NEXT: [2,0] . . DPPPPPPPPPPPPPPeeER . . stmxcsr -4(%rsp) # CHECK-NEXT: [2,1] . . DeE---------------R . . movl $-24577, %eax # CHECK-NEXT: [2,2] . . DeeeeeeE---------R . . andl -4(%rsp), %eax -# CHECK-NEXT: [2,3] . . D==============eER . . movl %eax, -8(%rsp) -# CHECK-NEXT: [2,4] . . D=============eeeeeeeER ldmxcsr -8(%rsp) +# CHECK-NEXT: [2,3] . . DPPPPPPPPPPPPP=eER . . movl %eax, -8(%rsp) +# CHECK-NEXT: [2,4] . . DPPPPPPPPPPPPPeeeeeeeER ldmxcsr -8(%rsp) # CHECK-NEXT: [2,5] . . .DeeeeeeeE------------R retq # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Haswell/zero-idioms.s index fb9b90c450364..7e687d593ad5e 100644 --- a/llvm/test/tools/llvm-mca/X86/Haswell/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Haswell/zero-idioms.s @@ -313,7 +313,14 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: - - - - - - - - - - vpxor %ymm3, %ymm3, %ymm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DR . . . . . subl %eax, %eax @@ -321,8 +328,8 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,2] DR . . . . . xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . . xorq %rax, %rax # CHECK-NEXT: [0,4] .DeER. . . . . pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] .D=eER . . . . pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D==eER . . . . pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] .DPeER . . . . pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPPeER . . . . pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D----R . . . . pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] . D---R . . . . pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] . D---R . . . . pcmpgtq %xmm2, %xmm2 @@ -345,8 +352,8 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,26] . .DR . . . . vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . .DeER. . . . psubb %mm2, %mm2 # CHECK-NEXT: [0,28] . . DeER . . . psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . . D=eER . . . psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . . D==eER . . . psubw %mm2, %mm2 +# CHECK-NEXT: [0,29] . . DPeER . . . psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . . DPPeER . . . psubw %mm2, %mm2 # CHECK-NEXT: [0,31] . . D----R . . . psubb %xmm2, %xmm2 # CHECK-NEXT: [0,32] . . D---R . . . psubd %xmm2, %xmm2 # CHECK-NEXT: [0,33] . . D---R . . . psubq %xmm2, %xmm2 @@ -370,18 +377,18 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,51] . . . DeER . . andnps %xmm0, %xmm0 # CHECK-NEXT: [0,52] . . . DeER . . andnpd %xmm1, %xmm1 # CHECK-NEXT: [0,53] . . . D=eER . . vandnps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,54] . . . D==eER . . vandnpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,55] . . . D===eER. . vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,56] . . . D===eER . vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,54] . . . DP=eER . . vandnpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,55] . . . DPP=eER. . vandnps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,56] . . . DPP=eER . vandnpd %ymm1, %ymm1, %ymm1 # CHECK-NEXT: [0,57] . . . DeE---R . pandn %mm2, %mm2 -# CHECK-NEXT: [0,58] . . . D===eER . pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,58] . . . DPPPeER . pandn %xmm2, %xmm2 # CHECK-NEXT: [0,59] . . . DeE---R . vpandn %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,60] . . . DeE--R . vpandn %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,61] . . . D===eER . vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,62] . . . D====eER . vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,63] . . . D=eE---R . vpandn %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,64] . . . .D====eER. vandnps %ymm2, %ymm2, %ymm5 -# CHECK-NEXT: [0,65] . . . .D=====eER vandnpd %ymm1, %ymm1, %ymm5 +# CHECK-NEXT: [0,61] . . . DPPPeER . vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,62] . . . DPPP=eER . vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,63] . . . DPeE---R . vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,64] . . . .DPP==eER. vandnps %ymm2, %ymm2, %ymm5 +# CHECK-NEXT: [0,65] . . . .DPP===eER vandnpd %ymm1, %ymm1, %ymm5 # CHECK-NEXT: [0,66] . . . .DeE-----R vpandn %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,67] . . . .D-------R xorps %xmm0, %xmm0 # CHECK-NEXT: [0,68] . . . . D------R xorpd %xmm1, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/independent-load-stores.s index 70df4681804dd..f2cf301c00582 100644 --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/independent-load-stores.s @@ -83,11 +83,17 @@ # ALL-NEXT: - - 0.50 - 1.00 - 1.00 0.50 - 1.00 - - addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 0123 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 0123 # NOALIAS-NEXT: Index 0123456789 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 012 +# YESALIAS: 0123456789 0123456789 0123456789 012 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # NOALIAS: [0,0] DeeeeeeeER. . addq $44, 64(%r14) @@ -102,15 +108,15 @@ # NOALIAS-NEXT: [0,9] . DeeeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeeER. . . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] D=======eeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] .D=============eeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] .D====================eeeeeeeER . . . . . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D==========================eeeeeeeER . . . . . . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D=================================eeeeeeeER. . . . . . . addq $44, 384(%r14) -# YESALIAS-NEXT: [0,6] . D=======================================eeeeeeeER . . . . . addq $44, 448(%r14) -# YESALIAS-NEXT: [0,7] . D==============================================eeeeeeeER . . . . addq $44, 512(%r14) -# YESALIAS-NEXT: [0,8] . D====================================================eeeeeeeER . . addq $44, 576(%r14) -# YESALIAS-NEXT: [0,9] . D===========================================================eeeeeeeER addq $44, 640(%r14) +# YESALIAS-NEXT: [0,1] DPPPPPPPeeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] .DPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER. . . . . . . addq $44, 384(%r14) +# YESALIAS-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . addq $44, 448(%r14) +# YESALIAS-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . addq $44, 512(%r14) +# YESALIAS-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . addq $44, 576(%r14) +# YESALIAS-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER addq $44, 640(%r14) # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/IceLakeServer/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/IceLakeServer/zero-idioms.s index 353448606af59..aa70a01e8ae5e 100644 --- a/llvm/test/tools/llvm-mca/X86/IceLakeServer/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/IceLakeServer/zero-idioms.s @@ -489,7 +489,14 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: - - - - - - - - - - - - vpxorq %zmm19, %zmm19, %zmm21 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DR . . . . .. subl %eax, %eax @@ -497,8 +504,8 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,2] DR . . . . .. xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . .. xorq %rax, %rax # CHECK-NEXT: [0,4] DeER . . . . .. pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] D=eER. . . . .. pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D=eER . . . .. pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] DPeER. . . . .. pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPeER . . . .. pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D---R . . . .. pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] .D---R . . . .. pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] .D---R . . . .. pcmpgtq %xmm2, %xmm2 @@ -520,9 +527,9 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,25] . DR . . . .. vpcmpgtq %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,26] . DR . . . .. vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . DeER . . . .. psubb %mm2, %mm2 -# CHECK-NEXT: [0,28] . D=eER . . . .. psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . D==eER. . . .. psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . D==eER . . .. psubw %mm2, %mm2 +# CHECK-NEXT: [0,28] . DPeER . . . .. psubd %mm2, %mm2 +# CHECK-NEXT: [0,29] . DPPeER. . . .. psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . DPPeER . . .. psubw %mm2, %mm2 # CHECK-NEXT: [0,31] . D----R . . .. psubb %xmm2, %xmm2 # CHECK-NEXT: [0,32] . D----R . . .. psubd %xmm2, %xmm2 # CHECK-NEXT: [0,33] . D----R . . .. psubq %xmm2, %xmm2 @@ -572,33 +579,33 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,77] . . . DeER . .. vandnps %xmm2, %xmm2, %xmm2 # CHECK-NEXT: [0,78] . . . DeER . .. vandnpd %xmm1, %xmm1, %xmm1 # CHECK-NEXT: [0,79] . . . DeER . .. vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,80] . . . D=eER . .. vandnpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,81] . . . D=eER . .. vandnps %zmm2, %zmm2, %zmm2 -# CHECK-NEXT: [0,82] . . . D==eER . .. vandnpd %zmm1, %zmm1, %zmm1 +# CHECK-NEXT: [0,80] . . . DPeER . .. vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,81] . . . DPeER . .. vandnps %zmm2, %zmm2, %zmm2 +# CHECK-NEXT: [0,82] . . . DPPeER . .. vandnpd %zmm1, %zmm1, %zmm1 # CHECK-NEXT: [0,83] . . . DeE--R . .. pandn %mm2, %mm2 -# CHECK-NEXT: [0,84] . . . D=eER . .. pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,84] . . . DPeER . .. pandn %xmm2, %xmm2 # CHECK-NEXT: [0,85] . . . DeE-R . .. vpandn %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,86] . . . D=eER . .. vpandn %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,86] . . . DPeER . .. vpandn %ymm3, %ymm3, %ymm3 # CHECK-NEXT: [0,87] . . . D==eER. .. vpandnd %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,88] . . . D===eER .. vpandnq %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,89] . . . D====eER .. vpandnd %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,90] . . . D====eER .. vpandnq %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,91] . . . D=====eER .. vpandnd %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,92] . . . D======eER.. vpandnq %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,93] . . . D=eE-----R.. vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,94] . . . D=eE-----R.. vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,95] . . . D==eE----R.. vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,88] . . . DPPPeER .. vpandnq %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,89] . . . DPPPPeER .. vpandnd %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,90] . . . DPPPPeER .. vpandnq %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,91] . . . DPPPPPeER .. vpandnd %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,92] . . . DPPPPPPeER.. vpandnq %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,93] . . . DPeE-----R.. vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,94] . . . DPeE-----R.. vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,95] . . . DP=eE----R.. vpandn %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,96] . . . .D=eE----R.. vandnps %ymm2, %ymm2, %ymm5 # CHECK-NEXT: [0,97] . . . .D==eE---R.. vandnpd %ymm1, %ymm1, %ymm5 # CHECK-NEXT: [0,98] . . . .D==eE---R.. vpandn %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,99] . . . .D===eE--R.. vandnps %zmm2, %zmm2, %zmm5 # CHECK-NEXT: [0,100] . . . .D===eE--R.. vandnpd %zmm1, %zmm1, %zmm5 -# CHECK-NEXT: [0,101] . . . .D======eER. vpandnd %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,102] . . . . D=====eER. vpandnq %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,103] . . . . D=====eER. vpandnd %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,104] . . . . D======eER vpandnq %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,105] . . . . D======eER vpandnd %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,106] . . . . D======eER vpandnq %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,101] . . . .DPPPPPPeER. vpandnd %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,102] . . . . DPPPPPeER. vpandnq %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,103] . . . . DPPPPPeER. vpandnd %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,104] . . . . DPPPPP=eER vpandnq %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,105] . . . . DPPPPP=eER vpandnd %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,106] . . . . DPPPPP=eER vpandnq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,107] . . . . D--------R xorps %xmm0, %xmm0 # CHECK-NEXT: [0,108] . . . . D-------R xorpd %xmm1, %xmm1 # CHECK-NEXT: [0,109] . . . . D-------R vxorps %xmm2, %xmm2, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s index df0a26341b3b6..b7db667073353 100644 --- a/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s @@ -160,44 +160,51 @@ pxor %xmm2, %xmm2 # CHECK-NEXT: - - - - 1.00 - - - pxor %xmm2, %xmm2 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . subl %eax, %eax -# CHECK-NEXT: [0,1] D=eER. . . . . . subq %rax, %rax +# CHECK-NEXT: [0,1] DPeER. . . . . . subq %rax, %rax # CHECK-NEXT: [0,2] .DeER. . . . . . xorl %eax, %eax -# CHECK-NEXT: [0,3] .D=eER . . . . . xorq %rax, %rax +# CHECK-NEXT: [0,3] .DPeER . . . . . xorq %rax, %rax # CHECK-NEXT: [0,4] . DeER . . . . . pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] . D=eER . . . . . pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] . D=eER . . . . . pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] . DPeER . . . . . pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] . DPeER . . . . . pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] . DeE-R . . . . . pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] . DeER . . . . . pcmpgtd %xmm2, %xmm2 -# CHECK-NEXT: [0,9] . D=eeeeeER . . . . pcmpgtq %xmm2, %xmm2 -# CHECK-NEXT: [0,10] . D=====eER . . . . pcmpgtw %xmm2, %xmm2 +# CHECK-NEXT: [0,9] . DPeeeeeER . . . . pcmpgtq %xmm2, %xmm2 +# CHECK-NEXT: [0,10] . DPPPPPeER . . . . pcmpgtw %xmm2, %xmm2 # CHECK-NEXT: [0,11] . DeE-----R . . . . psubb %mm2, %mm2 # CHECK-NEXT: [0,12] . .DeE----R . . . . psubd %mm2, %mm2 # CHECK-NEXT: [0,13] . . DeeeeER . . . . psubq %mm2, %mm2 -# CHECK-NEXT: [0,14] . . D===eER. . . . psubw %mm2, %mm2 -# CHECK-NEXT: [0,15] . . D====eER . . . psubb %xmm2, %xmm2 -# CHECK-NEXT: [0,16] . . D====eER . . . psubd %xmm2, %xmm2 -# CHECK-NEXT: [0,17] . . D====eeeeER . . psubq %xmm2, %xmm2 -# CHECK-NEXT: [0,18] . . .D=======eER . . psubw %xmm2, %xmm2 -# CHECK-NEXT: [0,19] . . .D====eE---R . . psubsb %mm2, %mm2 -# CHECK-NEXT: [0,20] . . . D====eE--R . . psubsw %mm2, %mm2 -# CHECK-NEXT: [0,21] . . . D=======eER . . psubsb %xmm2, %xmm2 -# CHECK-NEXT: [0,22] . . . D=======eER . . psubsw %xmm2, %xmm2 -# CHECK-NEXT: [0,23] . . . D====eE---R . . psubusb %mm2, %mm2 -# CHECK-NEXT: [0,24] . . . D=======eER. . psubusw %mm2, %mm2 -# CHECK-NEXT: [0,25] . . . D========eER . psubusb %xmm2, %xmm2 -# CHECK-NEXT: [0,26] . . . D========eER . psubusw %xmm2, %xmm2 +# CHECK-NEXT: [0,14] . . DPPPeER. . . . psubw %mm2, %mm2 +# CHECK-NEXT: [0,15] . . DPPP=eER . . . psubb %xmm2, %xmm2 +# CHECK-NEXT: [0,16] . . DPPPPeER . . . psubd %xmm2, %xmm2 +# CHECK-NEXT: [0,17] . . DPPPPeeeeER . . psubq %xmm2, %xmm2 +# CHECK-NEXT: [0,18] . . .DPPPPPPPeER . . psubw %xmm2, %xmm2 +# CHECK-NEXT: [0,19] . . .DP===eE---R . . psubsb %mm2, %mm2 +# CHECK-NEXT: [0,20] . . . DPPPPeE--R . . psubsw %mm2, %mm2 +# CHECK-NEXT: [0,21] . . . DPPPPPPPeER . . psubsb %xmm2, %xmm2 +# CHECK-NEXT: [0,22] . . . DPPPPPPPeER . . psubsw %xmm2, %xmm2 +# CHECK-NEXT: [0,23] . . . DPPPPeE---R . . psubusb %mm2, %mm2 +# CHECK-NEXT: [0,24] . . . DPPPP===eER. . psubusw %mm2, %mm2 +# CHECK-NEXT: [0,25] . . . DPPPPPPP=eER . psubusb %xmm2, %xmm2 +# CHECK-NEXT: [0,26] . . . DPPPPPPPPeER . psubusw %xmm2, %xmm2 # CHECK-NEXT: [0,27] . . . D=======eE-R . andnps %xmm0, %xmm0 # CHECK-NEXT: [0,28] . . . .D========eER . andnpd %xmm1, %xmm1 -# CHECK-NEXT: [0,29] . . . .D=======eE-R . pandn %mm2, %mm2 -# CHECK-NEXT: [0,30] . . . . D=======eER . pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,29] . . . .DPPPPPP=eE-R . pandn %mm2, %mm2 +# CHECK-NEXT: [0,30] . . . . DPPPPPPPeER . pandn %xmm2, %xmm2 # CHECK-NEXT: [0,31] . . . . D========eER . vpandn %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,32] . . . . D=======eER . xorps %xmm0, %xmm0 # CHECK-NEXT: [0,33] . . . . D========eER. xorpd %xmm1, %xmm1 -# CHECK-NEXT: [0,34] . . . . D=======eER. pxor %mm2, %mm2 +# CHECK-NEXT: [0,34] . . . . DPPPPP==eER. pxor %mm2, %mm2 # CHECK-NEXT: [0,35] . . . . D========eER pxor %xmm2, %xmm2 # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/zero-idioms.s index bdca772b4956c..ade9a7db22eb5 100644 --- a/llvm/test/tools/llvm-mca/X86/SandyBridge/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/zero-idioms.s @@ -249,7 +249,14 @@ vpxor %xmm3, %xmm3, %xmm5 # CHECK-NEXT: - - - - - - - - vpxor %xmm3, %xmm3, %xmm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DR . . . . . subl %eax, %eax @@ -257,8 +264,8 @@ vpxor %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,2] DR . . . . . xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . . xorq %rax, %rax # CHECK-NEXT: [0,4] .DeeeER . . . . pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] .D===eeeER. . . . pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D======eeeER . . . pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] .DPPPeeeER. . . . pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPPPPPPeeeER . . . pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D----------R . . . pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] . D---------R . . . pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] . D---------R . . . pcmpgtq %xmm2, %xmm2 @@ -271,10 +278,10 @@ vpxor %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,16] . D-------R . . . vpcmpgtd %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,17] . D-------R . . . vpcmpgtq %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,18] . D-------R . . . vpcmpgtw %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,19] . D======eeeER . . psubb %mm2, %mm2 -# CHECK-NEXT: [0,20] . D========eeeER . . psubd %mm2, %mm2 -# CHECK-NEXT: [0,21] . D===========eER. . psubq %mm2, %mm2 -# CHECK-NEXT: [0,22] . D============eeeER . psubw %mm2, %mm2 +# CHECK-NEXT: [0,19] . DPPPPPPeeeER . . psubb %mm2, %mm2 +# CHECK-NEXT: [0,20] . DPPPPPPPPeeeER . . psubd %mm2, %mm2 +# CHECK-NEXT: [0,21] . DPPPPPPPPPPPeER. . psubq %mm2, %mm2 +# CHECK-NEXT: [0,22] . DPPPPPPPPPPPPeeeER . psubw %mm2, %mm2 # CHECK-NEXT: [0,23] . D----------------R . psubb %xmm2, %xmm2 # CHECK-NEXT: [0,24] . .D---------------R . psubd %xmm2, %xmm2 # CHECK-NEXT: [0,25] . .D---------------R . psubq %xmm2, %xmm2 @@ -290,24 +297,24 @@ vpxor %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,35] . . DeE-----------R . andnps %xmm0, %xmm0 # CHECK-NEXT: [0,36] . . DeE----------R . andnpd %xmm1, %xmm1 # CHECK-NEXT: [0,37] . . D=eE---------R . vandnps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,38] . . D===eE-------R . vandnpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,39] . . D==eE--------R . vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,40] . . D===eE------R . vandnpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,41] . . D==========eER. pandn %mm2, %mm2 -# CHECK-NEXT: [0,42] . . D==eE--------R. pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,38] . . DP==eE-------R . vandnpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,39] . . DPPeE--------R . vandnps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,40] . . DPPPeE------R . vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,41] . . DPPPPPPPPPPeER. pandn %mm2, %mm2 +# CHECK-NEXT: [0,42] . . DPPeE--------R. pandn %xmm2, %xmm2 # CHECK-NEXT: [0,43] . . DeE----------R. vpandn %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,44] . . .D===eE------R. vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,45] . . .D====eE-----R. vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,44] . . .DPP=eE------R. vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,45] . . .DPPP=eE-----R. vandnpd %xmm1, %xmm1, %xmm5 # CHECK-NEXT: [0,46] . . .DeE---------R. vpandn %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,47] . . .D=====eE----R. vandnps %ymm2, %ymm2, %ymm5 -# CHECK-NEXT: [0,48] . . . D=====eE---R. vandnpd %ymm1, %ymm1, %ymm5 +# CHECK-NEXT: [0,47] . . .DPP===eE----R. vandnps %ymm2, %ymm2, %ymm5 +# CHECK-NEXT: [0,48] . . . DPP===eE---R. vandnpd %ymm1, %ymm1, %ymm5 # CHECK-NEXT: [0,49] . . . D----------R. xorps %xmm0, %xmm0 # CHECK-NEXT: [0,50] . . . D----------R. xorpd %xmm1, %xmm1 # CHECK-NEXT: [0,51] . . . D----------R. vxorps %xmm2, %xmm2, %xmm2 # CHECK-NEXT: [0,52] . . . D---------R. vxorpd %xmm1, %xmm1, %xmm1 # CHECK-NEXT: [0,53] . . . D---------R. vxorps %ymm2, %ymm2, %ymm2 # CHECK-NEXT: [0,54] . . . D---------R. vxorpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,55] . . . D========eER pxor %mm2, %mm2 +# CHECK-NEXT: [0,55] . . . DPPPPPPPPeER pxor %mm2, %mm2 # CHECK-NEXT: [0,56] . . . D---------R pxor %xmm2, %xmm2 # CHECK-NEXT: [0,57] . . . D---------R vpxor %xmm3, %xmm3, %xmm3 # CHECK-NEXT: [0,58] . . . D---------R vxorps %xmm4, %xmm4, %xmm5 diff --git a/llvm/test/tools/llvm-mca/X86/SapphireRapids/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/SapphireRapids/independent-load-stores.s index 08a706d4ab97a..d290dc368b7aa 100644 --- a/llvm/test/tools/llvm-mca/X86/SapphireRapids/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/SapphireRapids/independent-load-stores.s @@ -84,11 +84,17 @@ # ALL-NEXT: 1.00 - 0.33 0.33 1.00 - - 1.00 - - 0.34 - - addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 0123456789 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 0123456789 # NOALIAS-NEXT: Index 0123456789 0123 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 01234 +# YESALIAS: 0123456789 0123456789 0123456789 01234 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # NOALIAS: [0,0] DeeeeeeeeeeeeER. . . addq $44, 64(%r14) @@ -103,11 +109,11 @@ # NOALIAS-NEXT: [0,9] . . DeeeeeeeeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeeeeeeeER. . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] .D===========eeeeeeeeeeeeER . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] . D======================eeeeeeeeeeeeER . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] . D=================================eeeeeeeeeeeeER . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D============================================eeeeeeeeeeeeER . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D=======================================================eeeeeeeeeeeeER addq $44, 384(%r14) +# YESALIAS-NEXT: [0,1] .DPPPPPPPPPPPeeeeeeeeeeeeER . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] . DPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeER addq $44, 384(%r14) # YESALIAS-NEXT: Truncated display due to cycle limit # ALL: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/SapphireRapids/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SapphireRapids/zero-idioms.s index e11c548f5a7b6..89333fc23fd98 100644 --- a/llvm/test/tools/llvm-mca/X86/SapphireRapids/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/SapphireRapids/zero-idioms.s @@ -490,148 +490,155 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: - - - - - 1.00 - - - - - - - vpxorq %zmm19, %zmm19, %zmm21 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 01 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . . . . .. subl %eax, %eax -# CHECK-NEXT: [0,1] D=eER. . . . . . . . . .. subq %rax, %rax -# CHECK-NEXT: [0,2] D==eeER . . . . . . . . .. xorl %eax, %eax -# CHECK-NEXT: [0,3] D====eeER . . . . . . . . .. xorq %rax, %rax +# CHECK-NEXT: [0,1] DPeER. . . . . . . . . .. subq %rax, %rax +# CHECK-NEXT: [0,2] DPPeeER . . . . . . . . .. xorl %eax, %eax +# CHECK-NEXT: [0,3] DPPPPeeER . . . . . . . . .. xorq %rax, %rax # CHECK-NEXT: [0,4] DeE-----R . . . . . . . . .. pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] D=eE----R . . . . . . . . .. pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D=eE---R . . . . . . . . .. pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] DPeE----R . . . . . . . . .. pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPeE---R . . . . . . . . .. pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .DeE----R . . . . . . . . .. pcmpgtb %xmm2, %xmm2 -# CHECK-NEXT: [0,8] .D=eE---R . . . . . . . . .. pcmpgtd %xmm2, %xmm2 -# CHECK-NEXT: [0,9] .D==eeeER . . . . . . . . .. pcmpgtq %xmm2, %xmm2 -# CHECK-NEXT: [0,10] .D=====eER. . . . . . . . .. pcmpgtw %xmm2, %xmm2 +# CHECK-NEXT: [0,8] .DPeE---R . . . . . . . . .. pcmpgtd %xmm2, %xmm2 +# CHECK-NEXT: [0,9] .DPPeeeER . . . . . . . . .. pcmpgtq %xmm2, %xmm2 +# CHECK-NEXT: [0,10] .DPPPPPeER. . . . . . . . .. pcmpgtw %xmm2, %xmm2 # CHECK-NEXT: [0,11] .D==eE---R. . . . . . . . .. vpcmpgtb %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,12] . D==eE--R. . . . . . . . .. vpcmpgtd %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,13] . D===eeeER . . . . . . . .. vpcmpgtq %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,14] . D======eER . . . . . . . .. vpcmpgtw %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,15] . D=======eER . . . . . . . .. vpcmpgtb %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,16] . D=======eER . . . . . . . .. vpcmpgtd %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,17] . D=======eeeER. . . . . . . .. vpcmpgtq %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,18] . D=======eE-R. . . . . . . .. vpcmpgtw %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,19] . D=======eE-R. . . . . . . .. vpcmpgtb %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,20] . D========eER. . . . . . . .. vpcmpgtd %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,21] . D=========eeeER . . . . . . .. vpcmpgtq %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,22] . D============eER . . . . . . .. vpcmpgtw %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,23] . D=============eER. . . . . . .. vpcmpgtb %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,24] . D============eER. . . . . . .. vpcmpgtd %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,25] . D============eeeER . . . . . .. vpcmpgtq %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,26] . D=============eE-R . . . . . .. vpcmpgtw %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,12] . DPPeE--R. . . . . . . . .. vpcmpgtd %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,13] . DPPPeeeER . . . . . . . .. vpcmpgtq %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,14] . DPPPPPPeER . . . . . . . .. vpcmpgtw %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,15] . DPPPPPPPeER . . . . . . . .. vpcmpgtb %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,16] . DPPPPPPPeER . . . . . . . .. vpcmpgtd %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,17] . DPPPPPPPeeeER. . . . . . . .. vpcmpgtq %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,18] . DPPPPPP=eE-R. . . . . . . .. vpcmpgtw %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,19] . DPPPPPP=eE-R. . . . . . . .. vpcmpgtb %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,20] . DPPPPPPPPeER. . . . . . . .. vpcmpgtd %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,21] . DPPPPPPPPPeeeER . . . . . . .. vpcmpgtq %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,22] . DPPPPPPPPPPPPeER . . . . . . .. vpcmpgtw %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,23] . DPPPPPPPPPPPPPeER. . . . . . .. vpcmpgtb %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,24] . DPPPPPPPPPPPPeER. . . . . . .. vpcmpgtd %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,25] . DPPPPPPPPPPPPeeeER . . . . . .. vpcmpgtq %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,26] . DPPPPPPPPPPPP=eE-R . . . . . .. vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . DeE--------------R . . . . . .. psubb %mm2, %mm2 -# CHECK-NEXT: [0,28] . D=eE-------------R . . . . . .. psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . D==eE------------R . . . . . .. psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . D==eE-----------R . . . . . .. psubw %mm2, %mm2 -# CHECK-NEXT: [0,31] . D==eE-----------R . . . . . .. psubb %xmm2, %xmm2 -# CHECK-NEXT: [0,32] . D===eE----------R . . . . . .. psubd %xmm2, %xmm2 -# CHECK-NEXT: [0,33] . D=====eE--------R . . . . . .. psubq %xmm2, %xmm2 -# CHECK-NEXT: [0,34] . D======eE-------R . . . . . .. psubw %xmm2, %xmm2 -# CHECK-NEXT: [0,35] . D============eE-R . . . . . .. vpsubb %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,36] . .D============eER . . . . . .. vpsubd %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,37] . .D=============eER . . . . . .. vpsubq %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,38] . .D==============eER . . . . . .. vpsubw %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,39] . .D===============eER. . . . . .. vpsubb %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,40] . .D================eER . . . . .. vpsubd %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,41] . .D=================eER . . . . .. vpsubq %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,42] . . D=================eER . . . . .. vpsubw %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,43] . . D==================eER . . . . .. vpsubb %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,44] . . D==================eER . . . . .. vpsubd %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,45] . . D==================eER . . . . .. vpsubq %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,46] . . D===================eER. . . . .. vpsubw %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,47] . . D===================eER. . . . .. vpsubb %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,48] . . D==================eER. . . . .. vpsubd %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,49] . . D===================eER . . . .. vpsubq %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,50] . . D===================eER . . . .. vpsubw %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,28] . DPeE-------------R . . . . . .. psubd %mm2, %mm2 +# CHECK-NEXT: [0,29] . DPPeE------------R . . . . . .. psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . DPPeE-----------R . . . . . .. psubw %mm2, %mm2 +# CHECK-NEXT: [0,31] . DPPeE-----------R . . . . . .. psubb %xmm2, %xmm2 +# CHECK-NEXT: [0,32] . DPPPeE----------R . . . . . .. psubd %xmm2, %xmm2 +# CHECK-NEXT: [0,33] . DPPPP=eE--------R . . . . . .. psubq %xmm2, %xmm2 +# CHECK-NEXT: [0,34] . DPPPPPPeE-------R . . . . . .. psubw %xmm2, %xmm2 +# CHECK-NEXT: [0,35] . DPPPPPPPPPPP=eE-R . . . . . .. vpsubb %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,36] . .DPPPPPPPPPPPPeER . . . . . .. vpsubd %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,37] . .DPPPPPPPPPPPPPeER . . . . . .. vpsubq %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,38] . .DPPPPPPPPPPPPPPeER . . . . . .. vpsubw %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,39] . .DPPPPPPPPPPPPPPPeER. . . . . .. vpsubb %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,40] . .DPPPPPPPPPPPPPPPPeER . . . . .. vpsubd %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,41] . .DPPPPPPPPPPPPPPPPPeER . . . . .. vpsubq %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,42] . . DPPPPPPPPPPPPPPPPPeER . . . . .. vpsubw %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,43] . . DPPPPPPPPPPPPPPPPPPeER . . . . .. vpsubb %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,44] . . DPPPPPPPPPPPPPPPPPPeER . . . . .. vpsubd %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,45] . . DPPPPPPPPPPPPPPPPPPeER . . . . .. vpsubq %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,46] . . DPPPPPPPPPPPPPPPPPP=eER. . . . .. vpsubw %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,47] . . DPPPPPPPPPPPPPPPPPP=eER. . . . .. vpsubb %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,48] . . DPPPPPPPPPPPPPPPPP=eER. . . . .. vpsubd %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,49] . . DPPPPPPPPPPPPPPPPP==eER . . . .. vpsubq %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,50] . . DPPPPPPPPPPPPPPPPP==eER . . . .. vpsubw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,51] . . DeE-------------------R . . . .. vpsubb %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,52] . . D===eE----------------R . . . .. vpsubd %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,53] . . D====eE---------------R . . . .. vpsubq %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,54] . . D====eE--------------R . . . .. vpsubw %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,55] . . D=====eE-------------R . . . .. vpsubb %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,56] . . D======eE------------R . . . .. vpsubd %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,57] . . D========eE----------R . . . .. vpsubq %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,58] . . D=========eE---------R . . . .. vpsubw %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,59] . . D==========eE--------R . . . .. vpsubb %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,60] . . D==========eE-------R . . . .. vpsubd %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,61] . . D===========eE------R . . . .. vpsubq %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,62] . . D============eE-----R . . . .. vpsubw %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,63] . . D=============eE----R . . . .. vpsubb %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,64] . . D=============eE----R . . . .. vpsubd %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,65] . . D==============eE---R . . . .. vpsubq %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,66] . . .D=============eE---R . . . .. vpsubw %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,67] . . .D================eER . . . .. vpsubb %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,68] . . .D=================eER . . . .. vpsubd %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,69] . . .D=================eER . . . .. vpsubq %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,70] . . .D=================eER . . . .. vpsubw %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,71] . . .D==================eER . . . .. vpsubb %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,72] . . . D=================eER . . . .. vpsubd %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,73] . . . D==================eER . . . .. vpsubq %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,74] . . . D==================eER . . . .. vpsubw %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,52] . . DP==eE----------------R . . . .. vpsubd %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,53] . . DPPPPeE---------------R . . . .. vpsubq %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,54] . . DPPPPeE--------------R . . . .. vpsubw %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,55] . . DPPPPPeE-------------R . . . .. vpsubb %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,56] . . DPPPPPPeE------------R . . . .. vpsubd %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,57] . . DPPPPPPP=eE----------R . . . .. vpsubq %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,58] . . DPPPPPPPPPeE---------R . . . .. vpsubw %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,59] . . DPPPPPPPPPPeE--------R . . . .. vpsubb %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,60] . . DPPPPPPPPPPeE-------R . . . .. vpsubd %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,61] . . DPPPPPPPPPPPeE------R . . . .. vpsubq %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,62] . . DPPPPPPPPPPPPeE-----R . . . .. vpsubw %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,63] . . DPPPPPPPPPPPPPeE----R . . . .. vpsubb %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,64] . . DPPPPPPPPPPPPPeE----R . . . .. vpsubd %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,65] . . DPPPPPPPPPPPPP=eE---R . . . .. vpsubq %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,66] . . .DPPPPPPPPPPPP=eE---R . . . .. vpsubw %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,67] . . .DPPPPPPPPPPPP====eER . . . .. vpsubb %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,68] . . .DPPPPPPPPPPPP=====eER . . . .. vpsubd %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,69] . . .DPPPPPPPPPPPP=====eER . . . .. vpsubq %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,70] . . .DPPPPPPPPPPPP=====eER . . . .. vpsubw %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,71] . . .DPPPPPPPPPPPP======eER . . . .. vpsubb %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,72] . . . DPPPPPPPPPPP======eER . . . .. vpsubd %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,73] . . . DPPPPPPPPPPP=======eER . . . .. vpsubq %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,74] . . . DPPPPPPPPPPP=======eER . . . .. vpsubw %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,75] . . . DeE------------------R . . . .. andnps %xmm0, %xmm0 # CHECK-NEXT: [0,76] . . . D=eE-----------------R . . . .. andnpd %xmm1, %xmm1 # CHECK-NEXT: [0,77] . . . D=eE-----------------R . . . .. vandnps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,78] . . . D=eE----------------R . . . .. vandnpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,79] . . . D=eE----------------R . . . .. vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,80] . . . D==eE---------------R . . . .. vandnpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,81] . . . D=========eE--------R . . . .. vandnps %zmm2, %zmm2, %zmm2 -# CHECK-NEXT: [0,82] . . . D=====eE------------R . . . .. vandnpd %zmm1, %zmm1, %zmm1 +# CHECK-NEXT: [0,78] . . . DPeE----------------R . . . .. vandnpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,79] . . . DPeE----------------R . . . .. vandnps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,80] . . . DPPeE---------------R . . . .. vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,81] . . . DPP=======eE--------R . . . .. vandnps %zmm2, %zmm2, %zmm2 +# CHECK-NEXT: [0,82] . . . DPPP==eE------------R . . . .. vandnpd %zmm1, %zmm1, %zmm1 # CHECK-NEXT: [0,83] . . . D==================eER. . . .. pandn %mm2, %mm2 -# CHECK-NEXT: [0,84] . . . D===============eE--R. . . .. pandn %xmm2, %xmm2 -# CHECK-NEXT: [0,85] . . . D================eE-R. . . .. vpandn %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,86] . . . D=================eER. . . .. vpandn %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,87] . . . D=================eER. . . .. vpandnd %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,88] . . . D==================eER . . .. vpandnq %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,89] . . . D===================eER . . .. vpandnd %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,90] . . . D===================eER . . .. vpandnq %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,91] . . . D====================eER . . .. vpandnd %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,92] . . . D=====================eER. . .. vpandnq %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,93] . . . D=================eE----R. . .. vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,94] . . . D====eE-----------------R. . .. vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,95] . . . D=================eE----R. . .. vpandn %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,96] . . . .D=================eE---R. . .. vandnps %ymm2, %ymm2, %ymm5 -# CHECK-NEXT: [0,97] . . . .D====eE----------------R. . .. vandnpd %ymm1, %ymm1, %ymm5 -# CHECK-NEXT: [0,98] . . . .D=================eE---R. . .. vpandn %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,99] . . . .D==================eE--R. . .. vandnps %zmm2, %zmm2, %zmm5 -# CHECK-NEXT: [0,100] . . . .D===================eE-R. . .. vandnpd %zmm1, %zmm1, %zmm5 -# CHECK-NEXT: [0,101] . . . .D=====================eER . .. vpandnd %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,102] . . . . D====================eER . .. vpandnq %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,103] . . . . D====================eER . .. vpandnd %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,104] . . . . D=====================eER . .. vpandnq %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,105] . . . . D=====================eER . .. vpandnd %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,106] . . . . D======================eER . .. vpandnq %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,84] . . . DPPPPPPPPP======eE--R. . . .. pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,85] . . . DPPPPPPPPPPP=====eE-R. . . .. vpandn %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,86] . . . DPPPPPPPPPPPPPPPPPeER. . . .. vpandn %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,87] . . . DPPPPPPPPP========eER. . . .. vpandnd %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,88] . . . DPPPPPPPPPPPPPPPPPPeER . . .. vpandnq %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,89] . . . DPPPPPPPPPPPPPPPPPPPeER . . .. vpandnd %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,90] . . . DPPPPPPPPPPPPPPPPPPPeER . . .. vpandnq %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,91] . . . DPPPPPPPPPPPPPPPPPPPPeER . . .. vpandnd %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,92] . . . DPPPPPPPPPPPPPPPPPPPPPeER. . .. vpandnq %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,93] . . . DPPPPPPPPPPPPPPP==eE----R. . .. vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,94] . . . DPPPPeE-----------------R. . .. vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,95] . . . DPPPPPPPPPPPPPPPPPeE----R. . .. vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,96] . . . .DPPPPPPPPPPPPPP===eE---R. . .. vandnps %ymm2, %ymm2, %ymm5 +# CHECK-NEXT: [0,97] . . . .DPPP=eE----------------R. . .. vandnpd %ymm1, %ymm1, %ymm5 +# CHECK-NEXT: [0,98] . . . .DPPPPPPPPPPPPPPPP=eE---R. . .. vpandn %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,99] . . . .DPPPPPPPPPPPPPP====eE--R. . .. vandnps %zmm2, %zmm2, %zmm5 +# CHECK-NEXT: [0,100] . . . .DPPP================eE-R. . .. vandnpd %zmm1, %zmm1, %zmm5 +# CHECK-NEXT: [0,101] . . . .DPPPPPPPPPPPPPPPPPPPPPeER . .. vpandnd %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,102] . . . . DPPPPPPPPPPPPPPPPPPPPeER . .. vpandnq %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,103] . . . . DPPPPPPPPPPPPPPPPPPPPeER . .. vpandnd %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,104] . . . . DPPPPPPPPPPPPPPPPPPPP=eER . .. vpandnq %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,105] . . . . DPPPPPPPPPPPPPPPPPPPP=eER . .. vpandnd %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,106] . . . . DPPPPPPPPPPPPPPPPPPPP==eER . .. vpandnq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,107] . . . . D=================eE-----R . .. xorps %xmm0, %xmm0 -# CHECK-NEXT: [0,108] . . . . D===eE------------------R . .. xorpd %xmm1, %xmm1 -# CHECK-NEXT: [0,109] . . . . D=================eE----R . .. vxorps %xmm2, %xmm2, %xmm2 -# CHECK-NEXT: [0,110] . . . . D==================eE---R . .. vxorpd %xmm1, %xmm1, %xmm1 -# CHECK-NEXT: [0,111] . . . . D==================eE---R . .. vxorps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,112] . . . . D====================eE-R . .. vxorpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,113] . . . . D======================eER . .. vxorps %zmm2, %zmm2, %zmm2 -# CHECK-NEXT: [0,114] . . . . D====================eE-R . .. vxorpd %zmm1, %zmm1, %zmm1 -# CHECK-NEXT: [0,115] . . . . D=====================eER . .. pxor %mm2, %mm2 -# CHECK-NEXT: [0,116] . . . . D======================eER. .. pxor %xmm2, %xmm2 -# CHECK-NEXT: [0,117] . . . . D====================eE--R. .. vpxor %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,118] . . . . D======================eER. .. vpxor %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,119] . . . . D=====================eE-R. .. vpxord %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,120] . . . . D=====================eER. .. vpxorq %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,121] . . . . D======================eER .. vpxord %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,122] . . . . D=======================eER .. vpxorq %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,123] . . . . D========================eER .. vpxord %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,124] . . . . D=========================eER .. vpxorq %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,108] . . . . DP==eE------------------R . .. xorpd %xmm1, %xmm1 +# CHECK-NEXT: [0,109] . . . . DPPPPPPPPPPPP=====eE----R . .. vxorps %xmm2, %xmm2, %xmm2 +# CHECK-NEXT: [0,110] . . . . DPPPP==============eE---R . .. vxorpd %xmm1, %xmm1, %xmm1 +# CHECK-NEXT: [0,111] . . . . DPPPPPPPPPPPPPPPPPPeE---R . .. vxorps %ymm2, %ymm2, %ymm2 +# CHECK-NEXT: [0,112] . . . . DPPPPPPPPPPPPPPPPPPP=eE-R . .. vxorpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,113] . . . . DPPPPPPPPPPPPPPPPPPP===eER . .. vxorps %zmm2, %zmm2, %zmm2 +# CHECK-NEXT: [0,114] . . . . DPPPPPPPPPPPPPPPPPPPPeE-R . .. vxorpd %zmm1, %zmm1, %zmm1 +# CHECK-NEXT: [0,115] . . . . DPPPPPPPPPPPPP========eER . .. pxor %mm2, %mm2 +# CHECK-NEXT: [0,116] . . . . DPPPPPPPPPPPPPPPPPPPPPPeER. .. pxor %xmm2, %xmm2 +# CHECK-NEXT: [0,117] . . . . DPPPPPPPPPPPPP=======eE--R. .. vpxor %xmm3, %xmm3, %xmm3 +# CHECK-NEXT: [0,118] . . . . DPPPPPPPPPPPPPPPPPPPPP=eER. .. vpxor %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,119] . . . . DPPPPPPPPPPPPPPPPPP===eE-R. .. vpxord %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,120] . . . . DPPPPPPPPPPPPPPPPPPPPPeER. .. vpxorq %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,121] . . . . DPPPPPPPPPPPPPPPPPPPPPPeER .. vpxord %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,122] . . . . DPPPPPPPPPPPPPPPPPPPPPPPeER .. vpxorq %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,123] . . . . DPPPPPPPPPPPPPPPPPPPPPPPPeER .. vpxord %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,124] . . . . DPPPPPPPPPPPPPPPPPPPPPPPPPeER .. vpxorq %zmm19, %zmm19, %zmm19 # CHECK-NEXT: [0,125] . . . . D======================eE---R .. vxorps %xmm4, %xmm4, %xmm5 -# CHECK-NEXT: [0,126] . . . . .D=====================eE---R .. vxorpd %xmm1, %xmm1, %xmm3 +# CHECK-NEXT: [0,126] . . . . .DPPPPPPPPPPPPPPPPPPP==eE---R .. vxorpd %xmm1, %xmm1, %xmm3 # CHECK-NEXT: [0,127] . . . . .D======================eE--R .. vxorps %ymm4, %ymm4, %ymm5 -# CHECK-NEXT: [0,128] . . . . .D=======================eE-R .. vxorpd %ymm1, %ymm1, %ymm3 +# CHECK-NEXT: [0,128] . . . . .DPPPPPPPPPPPPPPPPPPP====eE-R .. vxorpd %ymm1, %ymm1, %ymm3 # CHECK-NEXT: [0,129] . . . . .D=======================eE-R .. vxorps %zmm4, %zmm4, %zmm5 -# CHECK-NEXT: [0,130] . . . . .D======================eE--R .. vxorpd %zmm1, %zmm1, %zmm3 -# CHECK-NEXT: [0,131] . . . . .D========================eER .. vpxor %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,132] . . . . . D=======================eER .. vpxor %ymm3, %ymm3, %ymm5 -# CHECK-NEXT: [0,133] . . . . . D========================eER.. vpxord %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,134] . . . . . D========================eER.. vpxorq %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,135] . . . . . D========================eER.. vpxord %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,136] . . . . . D=========================eER. vpxorq %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,137] . . . . . D=========================eER. vpxord %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,138] . . . . . D=========================eER vpxorq %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,130] . . . . .DPPPPPPPPPPPPPPPPPPP===eE--R .. vxorpd %zmm1, %zmm1, %zmm3 +# CHECK-NEXT: [0,131] . . . . .DPPPPPPPPPPPPPPPPPPPPPPP=eER .. vpxor %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,132] . . . . . DPPPPPPPPPPPPPPPPPPPPPP=eER .. vpxor %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,133] . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPeER.. vpxord %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,134] . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPeER.. vpxorq %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,135] . . . . . DPPPPPPPPPPPPPPPPPPPPPPPPeER.. vpxord %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,136] . . . . . DPPPPPPPPPPPPPPPPPPPPPPPP=eER. vpxorq %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,137] . . . . . DPPPPPPPPPPPPPPPPPPPPPPPP=eER. vpxord %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,138] . . . . . DPPPPPPPPPPPPPPPPPPPPPPP==eER vpxorq %zmm19, %zmm19, %zmm21 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/independent-load-stores.s index 03d7bcd079a33..e526b14f02751 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/independent-load-stores.s @@ -81,34 +81,40 @@ # ALL-NEXT: - - 0.50 - 0.66 0.67 1.00 0.50 - 0.67 addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 012345678 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 012345678 # NOALIAS-NEXT: Index 0123456789 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 012 +# YESALIAS: 0123456789 0123456789 0123456789 012 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # NOALIAS: [0,0] DeeeeeeeER. . . addq $44, 64(%r14) # NOALIAS-NEXT: [0,1] D=eeeeeeeER . . addq $44, 128(%r14) # NOALIAS-NEXT: [0,2] .D=eeeeeeeER . . addq $44, 192(%r14) -# NOALIAS-NEXT: [0,3] .D==eeeeeeeER . . addq $44, 256(%r14) -# NOALIAS-NEXT: [0,4] . D==eeeeeeeER . . addq $44, 320(%r14) -# NOALIAS-NEXT: [0,5] . D===eeeeeeeER. . addq $44, 384(%r14) -# NOALIAS-NEXT: [0,6] . D===eeeeeeeER . addq $44, 448(%r14) -# NOALIAS-NEXT: [0,7] . D====eeeeeeeER . addq $44, 512(%r14) -# NOALIAS-NEXT: [0,8] . D====eeeeeeeER. addq $44, 576(%r14) -# NOALIAS-NEXT: [0,9] . D=====eeeeeeeER addq $44, 640(%r14) +# NOALIAS-NEXT: [0,3] .DP=eeeeeeeER . . addq $44, 256(%r14) +# NOALIAS-NEXT: [0,4] . DP=eeeeeeeER . . addq $44, 320(%r14) +# NOALIAS-NEXT: [0,5] . DPP=eeeeeeeER. . addq $44, 384(%r14) +# NOALIAS-NEXT: [0,6] . DPP=eeeeeeeER . addq $44, 448(%r14) +# NOALIAS-NEXT: [0,7] . DPPP=eeeeeeeER . addq $44, 512(%r14) +# NOALIAS-NEXT: [0,8] . DPPP=eeeeeeeER. addq $44, 576(%r14) +# NOALIAS-NEXT: [0,9] . DPPPP=eeeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeeER. . . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] D=======eeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] .D=============eeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] .D====================eeeeeeeER . . . . . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D==========================eeeeeeeER . . . . . . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D=================================eeeeeeeER. . . . . . . addq $44, 384(%r14) -# YESALIAS-NEXT: [0,6] . D=======================================eeeeeeeER . . . . . addq $44, 448(%r14) -# YESALIAS-NEXT: [0,7] . D==============================================eeeeeeeER . . . . addq $44, 512(%r14) -# YESALIAS-NEXT: [0,8] . D====================================================eeeeeeeER . . addq $44, 576(%r14) -# YESALIAS-NEXT: [0,9] . D===========================================================eeeeeeeER addq $44, 640(%r14) +# YESALIAS-NEXT: [0,1] DPPPPPPPeeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] .DPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER. . . . . . . addq $44, 384(%r14) +# YESALIAS-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . addq $44, 448(%r14) +# YESALIAS-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . addq $44, 512(%r14) +# YESALIAS-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . addq $44, 576(%r14) +# YESALIAS-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER addq $44, 640(%r14) # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-hi-read-advance.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-hi-read-advance.s index b157b50cdb9c6..0ee77f3bb27d0 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-hi-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-hi-read-advance.s @@ -59,11 +59,18 @@ add %rax, %rax # CHECK-NEXT: - - 1.00 - - - - - - - addl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER mulxl (%rdi), %eax, %ecx -# CHECK-NEXT: [0,1] D========eER addl %eax, %eax +# CHECK-NEXT: [0,1] DPPPPPPPPeER addl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -122,11 +129,18 @@ add %rax, %rax # CHECK-NEXT: - - - - - - - - 1.00 - addq %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeeER mulxq (%rdi), %rax, %rcx -# CHECK-NEXT: [0,1] D========eER addq %rax, %rax +# CHECK-NEXT: [0,1] DPPPPPPPPeER addq %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-lo-reg-use.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-lo-reg-use.s index cf200b39eeca7..c8b5728087c4c 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-lo-reg-use.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-lo-reg-use.s @@ -53,10 +53,17 @@ mulxq %rax, %rax, %rcx # CHECK-NEXT: - - 0.50 1.00 - - - 0.50 1.00 - mulxl %eax, %eax, %ecx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %ecx -# CHECK-NEXT: [1,0] .D==eeeeER mulxl %eax, %eax, %ecx +# CHECK-NEXT: [1,0] .DPPeeeeER mulxl %eax, %eax, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -111,10 +118,17 @@ mulxq %rax, %rax, %rcx # CHECK-NEXT: - - - 1.00 - - - 1.00 - - mulxq %rax, %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rcx -# CHECK-NEXT: [1,0] D===eeeeER mulxq %rax, %rax, %rcx +# CHECK-NEXT: [1,0] DPPPeeeeER mulxq %rax, %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-same-regs.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-same-regs.s index 73ca47840c588..b1328679046a1 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-same-regs.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/mulx-same-regs.s @@ -56,11 +56,18 @@ mulxq %rax, %rax, %rax # CHECK-NEXT: - - 0.50 1.00 - - - 0.50 1.00 - mulxl %eax, %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %eax -# CHECK-NEXT: [1,0] .D===eeeeER mulxl %eax, %eax, %eax +# CHECK-NEXT: [1,0] .DPPPeeeeER mulxl %eax, %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -115,11 +122,18 @@ mulxq %rax, %rax, %rax # CHECK-NEXT: - - - 1.00 - - - 1.00 - - mulxq %rax, %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rax -# CHECK-NEXT: [1,0] D====eeeeER mulxq %rax, %rax, %rax +# CHECK-NEXT: [1,0] DPPPPeeeeER mulxq %rax, %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/zero-idioms.s index 0f19ef26806a9..2498927f72283 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/zero-idioms.s @@ -313,7 +313,14 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: - - - - - - - - - - vpxor %ymm3, %ymm3, %ymm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DR . . .. subl %eax, %eax @@ -321,8 +328,8 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,2] DR . . .. xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . .. xorq %rax, %rax # CHECK-NEXT: [0,4] DeER . . .. pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] D=eER. . .. pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D=eER . .. pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] DPeER. . .. pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPeER . .. pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D---R . .. pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] .D---R . .. pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] .D---R . .. pcmpgtq %xmm2, %xmm2 @@ -344,9 +351,9 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,25] . DR . .. vpcmpgtq %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,26] . DR . .. vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . DeER . .. psubb %mm2, %mm2 -# CHECK-NEXT: [0,28] . D=eER . .. psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . D==eER. .. psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . D==eER .. psubw %mm2, %mm2 +# CHECK-NEXT: [0,28] . DPeER . .. psubd %mm2, %mm2 +# CHECK-NEXT: [0,29] . DPPeER. .. psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . DPPeER .. psubw %mm2, %mm2 # CHECK-NEXT: [0,31] . D----R .. psubb %xmm2, %xmm2 # CHECK-NEXT: [0,32] . D----R .. psubd %xmm2, %xmm2 # CHECK-NEXT: [0,33] . D----R .. psubq %xmm2, %xmm2 @@ -372,17 +379,17 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,53] . . DeER .. vandnps %xmm2, %xmm2, %xmm2 # CHECK-NEXT: [0,54] . . DeER .. vandnpd %xmm1, %xmm1, %xmm1 # CHECK-NEXT: [0,55] . . DeER .. vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,56] . . D=eER .. vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,56] . . DPeER .. vandnpd %ymm1, %ymm1, %ymm1 # CHECK-NEXT: [0,57] . . DeE-R .. pandn %mm2, %mm2 -# CHECK-NEXT: [0,58] . . D=eER .. pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,58] . . DPeER .. pandn %xmm2, %xmm2 # CHECK-NEXT: [0,59] . . D=eER .. vpandn %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,60] . . D=eER.. vpandn %ymm3, %ymm3, %ymm3 -# CHECK-NEXT: [0,61] . . D=eER.. vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,62] . . D=eER.. vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,63] . . D==eER. vpandn %xmm3, %xmm3, %xmm5 -# CHECK-NEXT: [0,64] . . D==eER. vandnps %ymm2, %ymm2, %ymm5 -# CHECK-NEXT: [0,65] . . D==eER. vandnpd %ymm1, %ymm1, %ymm5 -# CHECK-NEXT: [0,66] . . .D==eER vpandn %ymm3, %ymm3, %ymm5 +# CHECK-NEXT: [0,60] . . DPeER.. vpandn %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,61] . . DPeER.. vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,62] . . DPeER.. vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,63] . . DPPeER. vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,64] . . DP=eER. vandnps %ymm2, %ymm2, %ymm5 +# CHECK-NEXT: [0,65] . . DP=eER. vandnpd %ymm1, %ymm1, %ymm5 +# CHECK-NEXT: [0,66] . . .DP=eER vpandn %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,67] . . .D----R xorps %xmm0, %xmm0 # CHECK-NEXT: [0,68] . . .D----R xorpd %xmm1, %xmm1 # CHECK-NEXT: [0,69] . . .D----R vxorps %xmm2, %xmm2, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/independent-load-stores.s index 4ebdee99ad6b3..3977d873a424d 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/independent-load-stores.s @@ -81,34 +81,40 @@ # ALL-NEXT: - - 0.50 - 0.66 0.67 1.00 0.50 - 0.67 addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 012345678 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 012345678 # NOALIAS-NEXT: Index 0123456789 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 012 +# YESALIAS: 0123456789 0123456789 0123456789 012 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # NOALIAS: [0,0] DeeeeeeeER. . . addq $44, 64(%r14) # NOALIAS-NEXT: [0,1] D=eeeeeeeER . . addq $44, 128(%r14) # NOALIAS-NEXT: [0,2] .D=eeeeeeeER . . addq $44, 192(%r14) -# NOALIAS-NEXT: [0,3] .D==eeeeeeeER . . addq $44, 256(%r14) -# NOALIAS-NEXT: [0,4] . D==eeeeeeeER . . addq $44, 320(%r14) -# NOALIAS-NEXT: [0,5] . D===eeeeeeeER. . addq $44, 384(%r14) -# NOALIAS-NEXT: [0,6] . D===eeeeeeeER . addq $44, 448(%r14) -# NOALIAS-NEXT: [0,7] . D====eeeeeeeER . addq $44, 512(%r14) -# NOALIAS-NEXT: [0,8] . D====eeeeeeeER. addq $44, 576(%r14) -# NOALIAS-NEXT: [0,9] . D=====eeeeeeeER addq $44, 640(%r14) +# NOALIAS-NEXT: [0,3] .DP=eeeeeeeER . . addq $44, 256(%r14) +# NOALIAS-NEXT: [0,4] . DP=eeeeeeeER . . addq $44, 320(%r14) +# NOALIAS-NEXT: [0,5] . DPP=eeeeeeeER. . addq $44, 384(%r14) +# NOALIAS-NEXT: [0,6] . DPP=eeeeeeeER . addq $44, 448(%r14) +# NOALIAS-NEXT: [0,7] . DPPP=eeeeeeeER . addq $44, 512(%r14) +# NOALIAS-NEXT: [0,8] . DPPP=eeeeeeeER. addq $44, 576(%r14) +# NOALIAS-NEXT: [0,9] . DPPPP=eeeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeeER. . . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] D=======eeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] .D=============eeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] .D====================eeeeeeeER . . . . . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] . D==========================eeeeeeeER . . . . . . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] . D=================================eeeeeeeER. . . . . . . addq $44, 384(%r14) -# YESALIAS-NEXT: [0,6] . D=======================================eeeeeeeER . . . . . addq $44, 448(%r14) -# YESALIAS-NEXT: [0,7] . D==============================================eeeeeeeER . . . . addq $44, 512(%r14) -# YESALIAS-NEXT: [0,8] . D====================================================eeeeeeeER . . addq $44, 576(%r14) -# YESALIAS-NEXT: [0,9] . D===========================================================eeeeeeeER addq $44, 640(%r14) +# YESALIAS-NEXT: [0,1] DPPPPPPPeeeeeeeER . . . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] .DPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] .DPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER. . . . . . . addq $44, 384(%r14) +# YESALIAS-NEXT: [0,6] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . . addq $44, 448(%r14) +# YESALIAS-NEXT: [0,7] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . . . addq $44, 512(%r14) +# YESALIAS-NEXT: [0,8] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER . . addq $44, 576(%r14) +# YESALIAS-NEXT: [0,9] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeER addq $44, 640(%r14) # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/zero-idioms.s index d3f94c27641ed..8a8e6b051a014 100644 --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/zero-idioms.s @@ -487,7 +487,14 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: - - - - - - - - - - vpxorq %zmm19, %zmm19, %zmm21 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DR . . . . .. subl %eax, %eax @@ -495,8 +502,8 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,2] DR . . . . .. xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . .. xorq %rax, %rax # CHECK-NEXT: [0,4] DeER . . . . .. pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] D=eER. . . . .. pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D=eER . . . .. pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] DPeER. . . . .. pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPeER . . . .. pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .D---R . . . .. pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] .D---R . . . .. pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] .D---R . . . .. pcmpgtq %xmm2, %xmm2 @@ -518,9 +525,9 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,25] . DR . . . .. vpcmpgtq %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,26] . DR . . . .. vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . DeER . . . .. psubb %mm2, %mm2 -# CHECK-NEXT: [0,28] . D=eER . . . .. psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . D==eER. . . .. psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . D==eER . . .. psubw %mm2, %mm2 +# CHECK-NEXT: [0,28] . DPeER . . . .. psubd %mm2, %mm2 +# CHECK-NEXT: [0,29] . DPPeER. . . .. psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . DPPeER . . .. psubw %mm2, %mm2 # CHECK-NEXT: [0,31] . D----R . . .. psubb %xmm2, %xmm2 # CHECK-NEXT: [0,32] . D----R . . .. psubd %xmm2, %xmm2 # CHECK-NEXT: [0,33] . D----R . . .. psubq %xmm2, %xmm2 @@ -570,33 +577,33 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,77] . . . DeER . .. vandnps %xmm2, %xmm2, %xmm2 # CHECK-NEXT: [0,78] . . . DeER . .. vandnpd %xmm1, %xmm1, %xmm1 # CHECK-NEXT: [0,79] . . . DeER . .. vandnps %ymm2, %ymm2, %ymm2 -# CHECK-NEXT: [0,80] . . . D=eER . .. vandnpd %ymm1, %ymm1, %ymm1 -# CHECK-NEXT: [0,81] . . . D=eER . .. vandnps %zmm2, %zmm2, %zmm2 -# CHECK-NEXT: [0,82] . . . D==eER . .. vandnpd %zmm1, %zmm1, %zmm1 +# CHECK-NEXT: [0,80] . . . DPeER . .. vandnpd %ymm1, %ymm1, %ymm1 +# CHECK-NEXT: [0,81] . . . DPeER . .. vandnps %zmm2, %zmm2, %zmm2 +# CHECK-NEXT: [0,82] . . . DPPeER . .. vandnpd %zmm1, %zmm1, %zmm1 # CHECK-NEXT: [0,83] . . . DeE--R . .. pandn %mm2, %mm2 -# CHECK-NEXT: [0,84] . . . D=eER . .. pandn %xmm2, %xmm2 +# CHECK-NEXT: [0,84] . . . DPeER . .. pandn %xmm2, %xmm2 # CHECK-NEXT: [0,85] . . . DeE-R . .. vpandn %xmm3, %xmm3, %xmm3 -# CHECK-NEXT: [0,86] . . . D=eER . .. vpandn %ymm3, %ymm3, %ymm3 +# CHECK-NEXT: [0,86] . . . DPeER . .. vpandn %ymm3, %ymm3, %ymm3 # CHECK-NEXT: [0,87] . . . D==eER. .. vpandnd %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,88] . . . D===eER .. vpandnq %xmm19, %xmm19, %xmm19 -# CHECK-NEXT: [0,89] . . . D====eER .. vpandnd %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,90] . . . D====eER .. vpandnq %ymm19, %ymm19, %ymm19 -# CHECK-NEXT: [0,91] . . . D=====eER .. vpandnd %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,92] . . . D======eER.. vpandnq %zmm19, %zmm19, %zmm19 -# CHECK-NEXT: [0,93] . . . D=eE-----R.. vandnps %xmm2, %xmm2, %xmm5 -# CHECK-NEXT: [0,94] . . . D=eE-----R.. vandnpd %xmm1, %xmm1, %xmm5 -# CHECK-NEXT: [0,95] . . . D==eE----R.. vpandn %xmm3, %xmm3, %xmm5 +# CHECK-NEXT: [0,88] . . . DPPPeER .. vpandnq %xmm19, %xmm19, %xmm19 +# CHECK-NEXT: [0,89] . . . DPPPPeER .. vpandnd %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,90] . . . DPPPPeER .. vpandnq %ymm19, %ymm19, %ymm19 +# CHECK-NEXT: [0,91] . . . DPPPPPeER .. vpandnd %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,92] . . . DPPPPPPeER.. vpandnq %zmm19, %zmm19, %zmm19 +# CHECK-NEXT: [0,93] . . . DPeE-----R.. vandnps %xmm2, %xmm2, %xmm5 +# CHECK-NEXT: [0,94] . . . DPeE-----R.. vandnpd %xmm1, %xmm1, %xmm5 +# CHECK-NEXT: [0,95] . . . DP=eE----R.. vpandn %xmm3, %xmm3, %xmm5 # CHECK-NEXT: [0,96] . . . .D=eE----R.. vandnps %ymm2, %ymm2, %ymm5 # CHECK-NEXT: [0,97] . . . .D==eE---R.. vandnpd %ymm1, %ymm1, %ymm5 # CHECK-NEXT: [0,98] . . . .D==eE---R.. vpandn %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,99] . . . .D===eE--R.. vandnps %zmm2, %zmm2, %zmm5 # CHECK-NEXT: [0,100] . . . .D===eE--R.. vandnpd %zmm1, %zmm1, %zmm5 -# CHECK-NEXT: [0,101] . . . .D======eER. vpandnd %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,102] . . . . D=====eER. vpandnq %xmm19, %xmm19, %xmm21 -# CHECK-NEXT: [0,103] . . . . D=====eER. vpandnd %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,104] . . . . D======eER vpandnq %ymm19, %ymm19, %ymm21 -# CHECK-NEXT: [0,105] . . . . D======eER vpandnd %zmm19, %zmm19, %zmm21 -# CHECK-NEXT: [0,106] . . . . D======eER vpandnq %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,101] . . . .DPPPPPPeER. vpandnd %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,102] . . . . DPPPPPeER. vpandnq %xmm19, %xmm19, %xmm21 +# CHECK-NEXT: [0,103] . . . . DPPPPPeER. vpandnd %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,104] . . . . DPPPPP=eER vpandnq %ymm19, %ymm19, %ymm21 +# CHECK-NEXT: [0,105] . . . . DPPPPP=eER vpandnd %zmm19, %zmm19, %zmm21 +# CHECK-NEXT: [0,106] . . . . DPPPPP=eER vpandnq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,107] . . . . D--------R xorps %xmm0, %xmm0 # CHECK-NEXT: [0,108] . . . . D-------R xorpd %xmm1, %xmm1 # CHECK-NEXT: [0,109] . . . . D-------R vxorps %xmm2, %xmm2, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-2.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-2.s index b921b17dea7e4..2b9d8294e9111 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-2.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-2.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.25 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . imulq %rax, %rbx -# CHECK-NEXT: [0,1] D===eeER. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D=====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeeER. lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-3.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-3.s index d8afbacdee79a..7fed8de440e0c 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-3.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-3.s @@ -56,27 +56,34 @@ xor %bx, %dx # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - xorw %bx, %dx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeER . . . . addw %cx, %dx -# CHECK-NEXT: [0,1] D=eER. . . . movw %ax, %dx -# CHECK-NEXT: [0,2] D==eER . . . xorw %bx, %dx -# CHECK-NEXT: [1,0] D===eER . . . addw %cx, %dx -# CHECK-NEXT: [1,1] .D===eER . . . movw %ax, %dx -# CHECK-NEXT: [1,2] .D====eER . . . xorw %bx, %dx -# CHECK-NEXT: [2,0] .D=====eER. . . addw %cx, %dx -# CHECK-NEXT: [2,1] .D======eER . . movw %ax, %dx -# CHECK-NEXT: [2,2] . D======eER . . xorw %bx, %dx -# CHECK-NEXT: [3,0] . D=======eER . . addw %cx, %dx -# CHECK-NEXT: [3,1] . D========eER . . movw %ax, %dx -# CHECK-NEXT: [3,2] . D=========eER. . xorw %bx, %dx -# CHECK-NEXT: [4,0] . D=========eER . addw %cx, %dx -# CHECK-NEXT: [4,1] . D==========eER . movw %ax, %dx -# CHECK-NEXT: [4,2] . D===========eER . xorw %bx, %dx -# CHECK-NEXT: [5,0] . D============eER . addw %cx, %dx -# CHECK-NEXT: [5,1] . D============eER. movw %ax, %dx -# CHECK-NEXT: [5,2] . D=============eER xorw %bx, %dx +# CHECK-NEXT: [0,1] DPeER. . . . movw %ax, %dx +# CHECK-NEXT: [0,2] DPPeER . . . xorw %bx, %dx +# CHECK-NEXT: [1,0] DPPPeER . . . addw %cx, %dx +# CHECK-NEXT: [1,1] .DPPPeER . . . movw %ax, %dx +# CHECK-NEXT: [1,2] .DPPPPeER . . . xorw %bx, %dx +# CHECK-NEXT: [2,0] .DPPPPPeER. . . addw %cx, %dx +# CHECK-NEXT: [2,1] .DPPPPPPeER . . movw %ax, %dx +# CHECK-NEXT: [2,2] . DPPPPPPeER . . xorw %bx, %dx +# CHECK-NEXT: [3,0] . DPPPPPPPeER . . addw %cx, %dx +# CHECK-NEXT: [3,1] . DPPPPPPPPeER . . movw %ax, %dx +# CHECK-NEXT: [3,2] . DPPPPPPPPPeER. . xorw %bx, %dx +# CHECK-NEXT: [4,0] . DPPPPPPPPPeER . addw %cx, %dx +# CHECK-NEXT: [4,1] . DPPPPPPPPPPeER . movw %ax, %dx +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPeER . xorw %bx, %dx +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPeER . addw %cx, %dx +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPeER. movw %ax, %dx +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPeER xorw %bx, %dx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-4.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-4.s index 8eb2f503fdb04..c2ca514b6b660 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-4.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-4.s @@ -56,30 +56,37 @@ add %cx, %bx # CHECK-NEXT: - - 0.33 - 0.33 0.33 - - - - - - addw %cx, %bx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . . imulw %ax, %bx -# CHECK-NEXT: [0,1] D==eeER . . . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D====eER . . . . . . . addw %cx, %bx -# CHECK-NEXT: [1,0] D=====eeeER . . . . . . imulw %ax, %bx -# CHECK-NEXT: [1,1] .D======eeER . . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [1,2] .D========eER . . . . . . addw %cx, %bx -# CHECK-NEXT: [2,0] .D=========eeeER . . . . . imulw %ax, %bx -# CHECK-NEXT: [2,1] .D===========eeER . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [2,2] . D============eER . . . . . addw %cx, %bx -# CHECK-NEXT: [3,0] . D=============eeeER . . . . imulw %ax, %bx -# CHECK-NEXT: [3,1] . D===============eeER . . . . lzcntw %ax, %bx -# CHECK-NEXT: [3,2] . D=================eER . . . . addw %cx, %bx -# CHECK-NEXT: [4,0] . D=================eeeER . . . imulw %ax, %bx -# CHECK-NEXT: [4,1] . D===================eeER . . . lzcntw %ax, %bx -# CHECK-NEXT: [4,2] . D=====================eER . . . addw %cx, %bx -# CHECK-NEXT: [5,0] . D======================eeeER . . imulw %ax, %bx -# CHECK-NEXT: [5,1] . D=======================eeER . . lzcntw %ax, %bx -# CHECK-NEXT: [5,2] . D=========================eER . . addw %cx, %bx -# CHECK-NEXT: [6,0] . D==========================eeeER . imulw %ax, %bx -# CHECK-NEXT: [6,1] . D============================eeER. lzcntw %ax, %bx -# CHECK-NEXT: [6,2] . D=============================eER addw %cx, %bx +# CHECK-NEXT: [0,1] DPPeeER . . . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPeER . . . . . . . addw %cx, %bx +# CHECK-NEXT: [1,0] DPPPPPeeeER . . . . . . imulw %ax, %bx +# CHECK-NEXT: [1,1] .DPPPPPPeeER . . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [1,2] .DPPPPPPPPeER . . . . . . addw %cx, %bx +# CHECK-NEXT: [2,0] .DPPPPPPPPPeeeER . . . . . imulw %ax, %bx +# CHECK-NEXT: [2,1] .DPPPPPPPPPPPeeER . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPeER . . . . . addw %cx, %bx +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPeeeER . . . . imulw %ax, %bx +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPPPeeER . . . . lzcntw %ax, %bx +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPPPPPPeER . . . . addw %cx, %bx +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPPeeeER . . . imulw %ax, %bx +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPeeER . . . lzcntw %ax, %bx +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPPPPPPPPPPeER . . . addw %cx, %bx +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPPPPPPPPPPPeeeER . . imulw %ax, %bx +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPPPPPPPPPPPPeeER . . lzcntw %ax, %bx +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPeER . . addw %cx, %bx +# CHECK-NEXT: [6,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeER . imulw %ax, %bx +# CHECK-NEXT: [6,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeER. lzcntw %ax, %bx +# CHECK-NEXT: [6,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER addw %cx, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-5.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-5.s index cae250315dbc5..9ff0a6dd95ae1 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-5.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-5.s @@ -47,17 +47,24 @@ lzcnt %ax, %bx ## partial register stall. # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - lzcntw %ax, %bx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeER. .. lzcntw %ax, %bx -# CHECK-NEXT: [1,0] D=eeER .. lzcntw %ax, %bx -# CHECK-NEXT: [2,0] D==eeER .. lzcntw %ax, %bx -# CHECK-NEXT: [3,0] D===eeER .. lzcntw %ax, %bx -# CHECK-NEXT: [4,0] .D===eeER .. lzcntw %ax, %bx -# CHECK-NEXT: [5,0] .D====eeER.. lzcntw %ax, %bx -# CHECK-NEXT: [6,0] .D=====eeER. lzcntw %ax, %bx -# CHECK-NEXT: [7,0] .D======eeER lzcntw %ax, %bx +# CHECK-NEXT: [1,0] DPeeER .. lzcntw %ax, %bx +# CHECK-NEXT: [2,0] DPPeeER .. lzcntw %ax, %bx +# CHECK-NEXT: [3,0] DPPPeeER .. lzcntw %ax, %bx +# CHECK-NEXT: [4,0] .DPPPeeER .. lzcntw %ax, %bx +# CHECK-NEXT: [5,0] .DPPPPeeER.. lzcntw %ax, %bx +# CHECK-NEXT: [6,0] .DPPPPPeeER. lzcntw %ax, %bx +# CHECK-NEXT: [7,0] .DPPPPPPeeER lzcntw %ax, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-6.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-6.s index 20fee19b54790..c6184dd7fd054 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-6.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-6.s @@ -58,21 +58,28 @@ lzcnt 2(%rsp), %cx # CHECK-NEXT: 1.00 - 0.33 - 0.33 0.33 - - - - - - lzcntw 2(%rsp), %cx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . imull %edx, %ecx # CHECK-NEXT: [0,1] DeeeeeeER . . . . . lzcntw (%rsp), %cx # CHECK-NEXT: [0,2] .DeeeeeeER. . . . . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [1,0] .D======eeeER . . . . imull %edx, %ecx -# CHECK-NEXT: [1,1] . D=====eeeeeeER . . . lzcntw (%rsp), %cx -# CHECK-NEXT: [1,2] . D======eeeeeeER . . . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [2,0] . D===========eeeER. . . imull %edx, %ecx -# CHECK-NEXT: [2,1] . D===========eeeeeeER . . lzcntw (%rsp), %cx -# CHECK-NEXT: [2,2] . D===========eeeeeeER . . lzcntw 2(%rsp), %cx -# CHECK-NEXT: [3,0] . D=================eeeER . imull %edx, %ecx -# CHECK-NEXT: [3,1] . D================eeeeeeER. lzcntw (%rsp), %cx -# CHECK-NEXT: [3,2] . D=================eeeeeeER lzcntw 2(%rsp), %cx +# CHECK-NEXT: [1,0] .DPPPPPPeeeER . . . . imull %edx, %ecx +# CHECK-NEXT: [1,1] . DPPPPPeeeeeeER . . . lzcntw (%rsp), %cx +# CHECK-NEXT: [1,2] . DPPPPPPeeeeeeER . . . lzcntw 2(%rsp), %cx +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPeeeER. . . imull %edx, %ecx +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPeeeeeeER . . lzcntw (%rsp), %cx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPeeeeeeER . . lzcntw 2(%rsp), %cx +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPPPPPeeeER . imull %edx, %ecx +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPPPPeeeeeeER. lzcntw (%rsp), %cx +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPPPPPPeeeeeeER lzcntw 2(%rsp), %cx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-7.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-7.s index f3d0321b45414..8b71b277637da 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-7.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update-7.s @@ -33,11 +33,18 @@ addq %rcx, %rdx # CHECK-NEXT: 1 1 0.25 addq %rcx, %rdx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . imulq %rax, %rcx -# CHECK-NEXT: [0,1] D====eER. addl %edx, %ecx -# CHECK-NEXT: [0,2] D=====eER addq %rcx, %rdx +# CHECK-NEXT: [0,1] DPPPPeER. addl %edx, %ecx +# CHECK-NEXT: [0,2] DPPPPPeER addq %rcx, %rdx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update.s b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update.s index e2da41b06967c..d8655e938addb 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/partial-reg-update.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.25 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulw %ax, %cx -# CHECK-NEXT: [0,1] D===eER. addb %al, %cl -# CHECK-NEXT: [0,2] D====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeER. addb %al, %cl +# CHECK-NEXT: [0,2] DPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s index c327e4e16665b..4a530189f7235 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/zero-idioms.s @@ -320,7 +320,14 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: - - - - - - - - - - 2.00 - vpxor %ymm3, %ymm3, %ymm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . . subl %eax, %eax diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/adcx-adox-read-advance.s b/llvm/test/tools/llvm-mca/X86/Znver2/adcx-adox-read-advance.s index 3b2360e3237fb..765bd00f15f21 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/adcx-adox-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/adcx-adox-read-advance.s @@ -58,10 +58,17 @@ adox (%rdi), %rcx # CHECK-NEXT: - 0.50 0.50 - - 0.50 0.50 - - - - - - adcxq (%rdi), %rcx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. adcxq (%rdi), %rcx -# CHECK-NEXT: [1,0] D=eeeeeER adcxq (%rdi), %rcx +# CHECK-NEXT: [1,0] DPeeeeeER adcxq (%rdi), %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -119,10 +126,17 @@ adox (%rdi), %rcx # CHECK-NEXT: - 0.50 0.50 - - 0.50 0.50 - - - - - - adoxq (%rdi), %rcx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeER. adoxq (%rdi), %rcx -# CHECK-NEXT: [1,0] D=eeeeeER adoxq (%rdi), %rcx +# CHECK-NEXT: [1,0] DPeeeeeER adoxq (%rdi), %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/mulx-hi-read-advance.s b/llvm/test/tools/llvm-mca/X86/Znver2/mulx-hi-read-advance.s index 87896d9a23d0c..32aea9e927ad5 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/mulx-hi-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/mulx-hi-read-advance.s @@ -62,11 +62,18 @@ add %rax, %rax # CHECK-NEXT: - - - - - - 1.00 - - - - - - addl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. mulxl (%rdi), %eax, %ecx -# CHECK-NEXT: [0,1] D=======eER addl %eax, %eax +# CHECK-NEXT: [0,1] DPPPPPPPeER addl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -128,11 +135,18 @@ add %rax, %rax # CHECK-NEXT: - - - - - - 1.00 - - - - - - addq %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. mulxq (%rdi), %rax, %rcx -# CHECK-NEXT: [0,1] D=======eER addq %rax, %rax +# CHECK-NEXT: [0,1] DPPPPPPPeER addq %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/mulx-read-advance.s b/llvm/test/tools/llvm-mca/X86/Znver2/mulx-read-advance.s index 7dc5a954c8268..86b03dfc8f56c 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/mulx-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/mulx-read-advance.s @@ -58,11 +58,18 @@ mulxq (%rdi), %rax, %rdx # CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - 2.00 mulxl (%rdi), %eax, %edx # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . mulxl (%rdi), %eax, %edx -# CHECK-NEXT: [1,0] D===eeeeeeeER mulxl (%rdi), %eax, %edx +# CHECK-NEXT: [1,0] DPPPeeeeeeeER mulxl (%rdi), %eax, %edx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -120,11 +127,18 @@ mulxq (%rdi), %rax, %rdx # CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - 2.00 mulxq (%rdi), %rax, %rdx # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeER. . mulxq (%rdi), %rax, %rdx -# CHECK-NEXT: [1,0] D===eeeeeeeER mulxq (%rdi), %rax, %rdx +# CHECK-NEXT: [1,0] DPPPeeeeeeeER mulxq (%rdi), %rax, %rdx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-2.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-2.s index 20c13ea59b4d8..236b6fc3cf655 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-2.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-2.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.25 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . imulq %rax, %rbx -# CHECK-NEXT: [0,1] D====eER. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D=====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-3.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-3.s index a491444823a2e..c4a002e4006bf 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-3.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-3.s @@ -57,27 +57,34 @@ xor %bx, %dx # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - xorw %bx, %dx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeER . . . . addw %cx, %dx -# CHECK-NEXT: [0,1] D=eER. . . . movw %ax, %dx -# CHECK-NEXT: [0,2] D==eER . . . xorw %bx, %dx -# CHECK-NEXT: [1,0] D===eER . . . addw %cx, %dx -# CHECK-NEXT: [1,1] .D===eER . . . movw %ax, %dx -# CHECK-NEXT: [1,2] .D====eER . . . xorw %bx, %dx -# CHECK-NEXT: [2,0] .D=====eER. . . addw %cx, %dx -# CHECK-NEXT: [2,1] .D======eER . . movw %ax, %dx -# CHECK-NEXT: [2,2] . D======eER . . xorw %bx, %dx -# CHECK-NEXT: [3,0] . D=======eER . . addw %cx, %dx -# CHECK-NEXT: [3,1] . D========eER . . movw %ax, %dx -# CHECK-NEXT: [3,2] . D=========eER. . xorw %bx, %dx -# CHECK-NEXT: [4,0] . D=========eER . addw %cx, %dx -# CHECK-NEXT: [4,1] . D==========eER . movw %ax, %dx -# CHECK-NEXT: [4,2] . D===========eER . xorw %bx, %dx -# CHECK-NEXT: [5,0] . D============eER . addw %cx, %dx -# CHECK-NEXT: [5,1] . D============eER. movw %ax, %dx -# CHECK-NEXT: [5,2] . D=============eER xorw %bx, %dx +# CHECK-NEXT: [0,1] DPeER. . . . movw %ax, %dx +# CHECK-NEXT: [0,2] DPPeER . . . xorw %bx, %dx +# CHECK-NEXT: [1,0] DPPPeER . . . addw %cx, %dx +# CHECK-NEXT: [1,1] .DPPPeER . . . movw %ax, %dx +# CHECK-NEXT: [1,2] .DPPPPeER . . . xorw %bx, %dx +# CHECK-NEXT: [2,0] .DPPPPPeER. . . addw %cx, %dx +# CHECK-NEXT: [2,1] .DPPPPPPeER . . movw %ax, %dx +# CHECK-NEXT: [2,2] . DPPPPPPeER . . xorw %bx, %dx +# CHECK-NEXT: [3,0] . DPPPPPPPeER . . addw %cx, %dx +# CHECK-NEXT: [3,1] . DPPPPPPPPeER . . movw %ax, %dx +# CHECK-NEXT: [3,2] . DPPPPPPPPPeER. . xorw %bx, %dx +# CHECK-NEXT: [4,0] . DPPPPPPPPPeER . addw %cx, %dx +# CHECK-NEXT: [4,1] . DPPPPPPPPPPeER . movw %ax, %dx +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPeER . xorw %bx, %dx +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPeER . addw %cx, %dx +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPeER. movw %ax, %dx +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPeER xorw %bx, %dx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-4.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-4.s index 371b594681592..dfab9f467c633 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-4.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-4.s @@ -57,30 +57,37 @@ add %cx, %bx # CHECK-NEXT: - - - 0.33 - 0.33 0.33 - - - - - - addw %cx, %bx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . . imulw %ax, %bx -# CHECK-NEXT: [0,1] D===eER . . . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D====eER . . . . . . . addw %cx, %bx -# CHECK-NEXT: [1,0] D=====eeeER . . . . . . imulw %ax, %bx -# CHECK-NEXT: [1,1] .D=======eER . . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [1,2] .D========eER . . . . . . addw %cx, %bx -# CHECK-NEXT: [2,0] .D=========eeeER . . . . . imulw %ax, %bx -# CHECK-NEXT: [2,1] .D============eER . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [2,2] . D============eER . . . . . addw %cx, %bx -# CHECK-NEXT: [3,0] . D=============eeeER . . . . imulw %ax, %bx -# CHECK-NEXT: [3,1] . D================eER . . . . lzcntw %ax, %bx -# CHECK-NEXT: [3,2] . D=================eER . . . . addw %cx, %bx -# CHECK-NEXT: [4,0] . D=================eeeER . . . imulw %ax, %bx -# CHECK-NEXT: [4,1] . D====================eER . . . lzcntw %ax, %bx -# CHECK-NEXT: [4,2] . D=====================eER . . . addw %cx, %bx -# CHECK-NEXT: [5,0] . D======================eeeER . . imulw %ax, %bx -# CHECK-NEXT: [5,1] . D========================eER . . lzcntw %ax, %bx -# CHECK-NEXT: [5,2] . D=========================eER . . addw %cx, %bx -# CHECK-NEXT: [6,0] . D==========================eeeER . imulw %ax, %bx -# CHECK-NEXT: [6,1] . D=============================eER. lzcntw %ax, %bx -# CHECK-NEXT: [6,2] . D=============================eER addw %cx, %bx +# CHECK-NEXT: [0,1] DPPPeER . . . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPeER . . . . . . . addw %cx, %bx +# CHECK-NEXT: [1,0] DPPPPPeeeER . . . . . . imulw %ax, %bx +# CHECK-NEXT: [1,1] .DPPPPPPPeER . . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [1,2] .DPPPPPPPPeER . . . . . . addw %cx, %bx +# CHECK-NEXT: [2,0] .DPPPPPPPPPeeeER . . . . . imulw %ax, %bx +# CHECK-NEXT: [2,1] .DPPPPPPPPPPPPeER . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPeER . . . . . addw %cx, %bx +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPeeeER . . . . imulw %ax, %bx +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPPPPeER . . . . lzcntw %ax, %bx +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPPPPPPeER . . . . addw %cx, %bx +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPPeeeER . . . imulw %ax, %bx +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPPeER . . . lzcntw %ax, %bx +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPPPPPPPPPPeER . . . addw %cx, %bx +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPPPPPPPPPPPeeeER . . imulw %ax, %bx +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPPPPPPPPPPPPPeER . . lzcntw %ax, %bx +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPeER . . addw %cx, %bx +# CHECK-NEXT: [6,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeeeER . imulw %ax, %bx +# CHECK-NEXT: [6,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [6,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER addw %cx, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-5.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-5.s index 4d28d60c586a3..21b1369eae122 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-5.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-5.s @@ -48,17 +48,24 @@ lzcnt %ax, %bx ## partial register stall. # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - lzcntw %ax, %bx # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . lzcntw %ax, %bx -# CHECK-NEXT: [1,0] D=eER. . lzcntw %ax, %bx -# CHECK-NEXT: [2,0] D==eER . lzcntw %ax, %bx -# CHECK-NEXT: [3,0] D===eER . lzcntw %ax, %bx -# CHECK-NEXT: [4,0] .D===eER . lzcntw %ax, %bx -# CHECK-NEXT: [5,0] .D====eER . lzcntw %ax, %bx -# CHECK-NEXT: [6,0] .D=====eER. lzcntw %ax, %bx -# CHECK-NEXT: [7,0] .D======eER lzcntw %ax, %bx +# CHECK-NEXT: [1,0] DPeER. . lzcntw %ax, %bx +# CHECK-NEXT: [2,0] DPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [3,0] DPPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [4,0] .DPPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [5,0] .DPPPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [6,0] .DPPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [7,0] .DPPPPPPeER lzcntw %ax, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-6.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-6.s index c4b46889e632a..dcc2f202e2c7f 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-6.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-6.s @@ -59,21 +59,28 @@ lzcnt 2(%rsp), %cx # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 0.33 0.33 - - - - - - lzcntw 2(%rsp), %cx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeER . . . .. imull %edx, %ecx # CHECK-NEXT: [0,1] DeeeeeER . . . .. lzcntw (%rsp), %cx # CHECK-NEXT: [0,2] .DeeeeeER . . . .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [1,0] .D=====eeeER . . .. imull %edx, %ecx -# CHECK-NEXT: [1,1] . D====eeeeeER . . .. lzcntw (%rsp), %cx -# CHECK-NEXT: [1,2] . D=====eeeeeER. . .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [2,0] . D=========eeeER . .. imull %edx, %ecx -# CHECK-NEXT: [2,1] . D=========eeeeeER. .. lzcntw (%rsp), %cx -# CHECK-NEXT: [2,2] . D=========eeeeeER .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [3,0] . D==============eeeER .. imull %edx, %ecx -# CHECK-NEXT: [3,1] . D=============eeeeeER. lzcntw (%rsp), %cx -# CHECK-NEXT: [3,2] . D==============eeeeeER lzcntw 2(%rsp), %cx +# CHECK-NEXT: [1,0] .DPPPPPeeeER . . .. imull %edx, %ecx +# CHECK-NEXT: [1,1] . DPPPPeeeeeER . . .. lzcntw (%rsp), %cx +# CHECK-NEXT: [1,2] . DPPPPPeeeeeER. . .. lzcntw 2(%rsp), %cx +# CHECK-NEXT: [2,0] . DPPPPPPPPPeeeER . .. imull %edx, %ecx +# CHECK-NEXT: [2,1] . DPPPPPPPPPeeeeeER. .. lzcntw (%rsp), %cx +# CHECK-NEXT: [2,2] . DPPPPPPPPPeeeeeER .. lzcntw 2(%rsp), %cx +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPPeeeER .. imull %edx, %ecx +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPeeeeeER. lzcntw (%rsp), %cx +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPPPeeeeeER lzcntw 2(%rsp), %cx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-7.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-7.s index a8940c3e1e59a..4311093585298 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-7.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update-7.s @@ -33,11 +33,18 @@ addq %rcx, %rdx # CHECK-NEXT: 1 1 0.25 addq %rcx, %rdx # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeER . imulq %rax, %rcx -# CHECK-NEXT: [0,1] D====eER. addl %edx, %ecx -# CHECK-NEXT: [0,2] D=====eER addq %rcx, %rdx +# CHECK-NEXT: [0,1] DPPPPeER. addl %edx, %ecx +# CHECK-NEXT: [0,2] DPPPPPeER addq %rcx, %rdx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update.s b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update.s index 4da239da59e48..75741813a6110 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/partial-reg-update.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.25 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulw %ax, %cx -# CHECK-NEXT: [0,1] D===eER. addb %al, %cl -# CHECK-NEXT: [0,2] D====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeER. addb %al, %cl +# CHECK-NEXT: [0,2] DPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s index 37319e834ea50..ba1b1dd0c0ffd 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Znver2/zero-idioms.s @@ -321,7 +321,14 @@ vpxor %ymm3, %ymm3, %ymm5 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vpxor %ymm3, %ymm3, %ymm5 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeER . . . . .. subl %eax, %eax diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/dependency-breaking-gpr.s b/llvm/test/tools/llvm-mca/X86/Znver3/dependency-breaking-gpr.s index 349abec66457c..b4aa74ebdf390 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/dependency-breaking-gpr.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/dependency-breaking-gpr.s @@ -94,12 +94,19 @@ cmovael %eax, %ecx # CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxl %eax, %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . sbbl %eax, %eax -# CHECK-NEXT: [0,1] D=eeeeER. mulxl %eax, %eax, %eax -# CHECK-NEXT: [1,0] D=eE---R. sbbl %eax, %eax -# CHECK-NEXT: [1,1] D==eeeeER mulxl %eax, %eax, %eax +# CHECK-NEXT: [0,1] DPeeeeER. mulxl %eax, %eax, %eax +# CHECK-NEXT: [1,0] DPeE---R. sbbl %eax, %eax +# CHECK-NEXT: [1,1] DPPeeeeER mulxl %eax, %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -171,12 +178,19 @@ cmovael %eax, %ecx # CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxq %rax, %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeER . . sbbq %rax, %rax -# CHECK-NEXT: [0,1] D=eeeeER. mulxq %rax, %rax, %rax -# CHECK-NEXT: [1,0] D=eE---R. sbbq %rax, %rax -# CHECK-NEXT: [1,1] D==eeeeER mulxq %rax, %rax, %rax +# CHECK-NEXT: [0,1] DPeeeeER. mulxq %rax, %rax, %rax +# CHECK-NEXT: [1,0] DPeE---R. sbbq %rax, %rax +# CHECK-NEXT: [1,1] DPPeeeeER mulxq %rax, %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -250,15 +264,22 @@ cmovael %eax, %ecx # CHECK-NEXT: - - - 0.50 - - 0.50 - - - - - - - - - - - - - - - - cmovael %eax, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. mulxl %eax, %eax, %eax # CHECK-NEXT: [0,1] D-----R .. cmpl %eax, %eax -# CHECK-NEXT: [0,2] D====eER .. cmovael %eax, %ecx -# CHECK-NEXT: [1,0] D====eeeeER. mulxl %eax, %eax, %eax +# CHECK-NEXT: [0,2] DPPPPeER .. cmovael %eax, %ecx +# CHECK-NEXT: [1,0] DPPPPeeeeER. mulxl %eax, %eax, %eax # CHECK-NEXT: [1,1] .D--------R. cmpl %eax, %eax -# CHECK-NEXT: [1,2] .D=======eER cmovael %eax, %ecx +# CHECK-NEXT: [1,2] .DPPPPPPPeER cmovael %eax, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -333,15 +354,22 @@ cmovael %eax, %ecx # CHECK-NEXT: - - - 0.50 - - 0.50 - - - - - - - - - - - - - - - - cmovaeq %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. mulxq %rax, %rax, %rax # CHECK-NEXT: [0,1] D-----R .. cmpq %rax, %rax -# CHECK-NEXT: [0,2] D====eER .. cmovaeq %rax, %rcx -# CHECK-NEXT: [1,0] D====eeeeER. mulxq %rax, %rax, %rax +# CHECK-NEXT: [0,2] DPPPPeER .. cmovaeq %rax, %rcx +# CHECK-NEXT: [1,0] DPPPPeeeeER. mulxq %rax, %rax, %rax # CHECK-NEXT: [1,1] .D--------R. cmpq %rax, %rax -# CHECK-NEXT: [1,2] .D=======eER cmovaeq %rax, %rcx +# CHECK-NEXT: [1,2] .DPPPPPPPeER cmovaeq %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -416,15 +444,22 @@ cmovael %eax, %ecx # CHECK-NEXT: - - - 0.50 - - 0.50 - - - - - - - - - - - - - - - - cmovael %eax, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. mulxl %eax, %eax, %eax # CHECK-NEXT: [0,1] D-----R .. cmpw %ax, %ax -# CHECK-NEXT: [0,2] D====eER .. cmovael %eax, %ecx -# CHECK-NEXT: [1,0] D====eeeeER. mulxl %eax, %eax, %eax +# CHECK-NEXT: [0,2] DPPPPeER .. cmovael %eax, %ecx +# CHECK-NEXT: [1,0] DPPPPeeeeER. mulxl %eax, %eax, %eax # CHECK-NEXT: [1,1] .D--------R. cmpw %ax, %ax -# CHECK-NEXT: [1,2] .D=======eER cmovael %eax, %ecx +# CHECK-NEXT: [1,2] .DPPPPPPPeER cmovael %eax, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -499,15 +534,22 @@ cmovael %eax, %ecx # CHECK-NEXT: - - - 0.50 - - 0.50 - - - - - - - - - - - - - - - - cmovael %eax, %ecx # CHECK: Timeline view: -# CHECK-NEXT: 01 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER .. mulxl %eax, %eax, %eax # CHECK-NEXT: [0,1] D-----R .. cmpb %al, %al -# CHECK-NEXT: [0,2] D====eER .. cmovael %eax, %ecx -# CHECK-NEXT: [1,0] D====eeeeER. mulxl %eax, %eax, %eax +# CHECK-NEXT: [0,2] DPPPPeER .. cmovael %eax, %ecx +# CHECK-NEXT: [1,0] DPPPPeeeeER. mulxl %eax, %eax, %eax # CHECK-NEXT: [1,1] .D--------R. cmpb %al, %al -# CHECK-NEXT: [1,2] .D=======eER cmovael %eax, %ecx +# CHECK-NEXT: [1,2] .DPPPPPPPeER cmovael %eax, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-hi-read-advance.s b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-hi-read-advance.s index 0fcd6f5074326..5f561835a2b7d 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-hi-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-hi-read-advance.s @@ -72,11 +72,18 @@ add %rax, %rax # CHECK-NEXT: - - - - - - 1.00 - - - - - - - - - - - - - - - - addl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER mulxl (%rdi), %eax, %ecx -# CHECK-NEXT: [0,1] D=======eER addl %eax, %eax +# CHECK-NEXT: [0,1] DPPPPPPPeER addl %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -148,11 +155,18 @@ add %rax, %rax # CHECK-NEXT: - - - - - - 1.00 - - - - - - - - - - - - - - - - addq %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER mulxq (%rdi), %rax, %rcx -# CHECK-NEXT: [0,1] D=======eER addq %rax, %rax +# CHECK-NEXT: [0,1] DPPPPPPPeER addq %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-lo-reg-use.s b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-lo-reg-use.s index cd427bb5912e3..7999d5bd0b48c 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-lo-reg-use.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-lo-reg-use.s @@ -66,10 +66,17 @@ mulxq %rax, %rax, %rcx # CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxl %eax, %eax, %ecx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %ecx -# CHECK-NEXT: [1,0] D===eeeeER mulxl %eax, %eax, %ecx +# CHECK-NEXT: [1,0] DPPPeeeeER mulxl %eax, %eax, %ecx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -137,10 +144,17 @@ mulxq %rax, %rax, %rcx # CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxq %rax, %rax, %rcx # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rcx -# CHECK-NEXT: [1,0] D===eeeeER mulxq %rax, %rax, %rcx +# CHECK-NEXT: [1,0] DPPPeeeeER mulxq %rax, %rax, %rcx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-read-advance.s b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-read-advance.s index bf82486cf737f..a3b197b3eb929 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-read-advance.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-read-advance.s @@ -68,11 +68,18 @@ mulxq (%rdi), %rax, %rdx # CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - - - - - 0.50 0.50 - 0.50 0.50 - - mulxl (%rdi), %eax, %edx # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . mulxl (%rdi), %eax, %edx -# CHECK-NEXT: [1,0] D====eeeeeeeeER mulxl (%rdi), %eax, %edx +# CHECK-NEXT: [1,0] DPPPPeeeeeeeeER mulxl (%rdi), %eax, %edx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -140,11 +147,18 @@ mulxq (%rdi), %rax, %rdx # CHECK-NEXT: - 0.50 0.50 - 1.00 - - - - - - - - - - - 0.50 0.50 - 0.50 0.50 - - mulxq (%rdi), %rax, %rdx # CHECK: Timeline view: -# CHECK-NEXT: 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 01234 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeeeeeER . mulxq (%rdi), %rax, %rdx -# CHECK-NEXT: [1,0] D====eeeeeeeeER mulxq (%rdi), %rax, %rdx +# CHECK-NEXT: [1,0] DPPPPeeeeeeeeER mulxq (%rdi), %rax, %rdx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-same-regs.s b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-same-regs.s index 8a5a0148cf589..9c0be3fe7dc18 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/mulx-same-regs.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/mulx-same-regs.s @@ -69,11 +69,18 @@ mulxq %rax, %rax, %rax # CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxl %eax, %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxl %eax, %eax, %eax -# CHECK-NEXT: [1,0] D====eeeeER mulxl %eax, %eax, %eax +# CHECK-NEXT: [1,0] DPPPPeeeeER mulxl %eax, %eax, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -141,11 +148,18 @@ mulxq %rax, %rax, %rax # CHECK-NEXT: - - - - 1.00 - - - - - - - - - - - - - - - - - - mulxq %rax, %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeeER . mulxq %rax, %rax, %rax -# CHECK-NEXT: [1,0] D====eeeeER mulxq %rax, %rax, %rax +# CHECK-NEXT: [1,0] DPPPPeeeeER mulxq %rax, %rax, %rax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-xmm.s b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-xmm.s index f0e16a8d8b99c..af512035db5d2 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-xmm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-xmm.s @@ -94,12 +94,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - vpaddb %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqb %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpaddb %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpaddb %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqb %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpaddb %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpaddb %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -185,12 +192,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - vpaddw %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqw %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpaddw %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpaddw %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqw %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpaddw %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpaddw %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -276,12 +290,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - vpaddd %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqd %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpaddd %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpaddd %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqd %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpaddd %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpaddd %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -367,12 +388,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpaddq %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqq %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpaddq %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqq %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpaddq %xmm0, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpaddq %xmm0, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-ymm.s b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-ymm.s index 97f6a34acac19..8f2fc416a095b 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-ymm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-avx-ymm.s @@ -94,12 +94,19 @@ vpaddq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - vpaddb %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqb %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpaddb %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpaddb %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqb %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpaddb %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpaddb %ymm0, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -185,12 +192,19 @@ vpaddq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - vpaddw %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqw %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpaddw %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpaddw %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqw %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpaddw %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpaddw %ymm0, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -276,12 +290,19 @@ vpaddq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - vpaddd %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqd %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpaddd %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpaddd %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqd %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpaddd %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpaddd %ymm0, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -367,12 +388,19 @@ vpaddq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpaddq %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpcmpeqq %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpaddq %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpaddq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpcmpeqq %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpaddq %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpaddq %ymm0, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-mmx.s b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-mmx.s index c733f639819be..045a5e21df903 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-mmx.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-mmx.s @@ -89,12 +89,19 @@ paddd %mm0, %mm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddb %mm0, %mm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqb %mm0, %mm0 -# CHECK-NEXT: [0,1] D=eER paddb %mm0, %mm0 +# CHECK-NEXT: [0,1] DPeER paddb %mm0, %mm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqb %mm0, %mm0 -# CHECK-NEXT: [1,1] D=eER paddb %mm0, %mm0 +# CHECK-NEXT: [1,1] DPeER paddb %mm0, %mm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -180,12 +187,19 @@ paddd %mm0, %mm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddw %mm0, %mm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqw %mm0, %mm0 -# CHECK-NEXT: [0,1] D=eER paddw %mm0, %mm0 +# CHECK-NEXT: [0,1] DPeER paddw %mm0, %mm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqw %mm0, %mm0 -# CHECK-NEXT: [1,1] D=eER paddw %mm0, %mm0 +# CHECK-NEXT: [1,1] DPeER paddw %mm0, %mm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -271,12 +285,19 @@ paddd %mm0, %mm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddd %mm0, %mm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqd %mm0, %mm0 -# CHECK-NEXT: [0,1] D=eER paddd %mm0, %mm0 +# CHECK-NEXT: [0,1] DPeER paddd %mm0, %mm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqd %mm0, %mm0 -# CHECK-NEXT: [1,1] D=eER paddd %mm0, %mm0 +# CHECK-NEXT: [1,1] DPeER paddd %mm0, %mm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-sse-xmm.s b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-sse-xmm.s index 63df99e56f8cd..ccbaee8f170d0 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-sse-xmm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/one-idioms-sse-xmm.s @@ -94,12 +94,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddb %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqb %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddb %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddb %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqb %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddb %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddb %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -185,12 +192,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddw %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqw %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddw %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddw %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqw %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddw %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddw %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -276,12 +290,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddd %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqd %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddd %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddd %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqd %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddd %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddd %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -367,12 +388,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddq %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpeqq %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddq %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddq %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpeqq %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddq %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddq %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-2.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-2.s index 150fa7cbd875e..40ac15662535b 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-2.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-2.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.25 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulq %rax, %rbx -# CHECK-NEXT: [0,1] D===eER. lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-3.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-3.s index 66c1322fa7902..61cd222757af0 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-3.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-3.s @@ -67,27 +67,34 @@ xor %bx, %dx # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - - - - - - xorw %bx, %dx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0 # CHECK: [0,0] DeER . . . . addw %cx, %dx -# CHECK-NEXT: [0,1] D=eER. . . . movw %ax, %dx -# CHECK-NEXT: [0,2] D==eER . . . xorw %bx, %dx -# CHECK-NEXT: [1,0] D===eER . . . addw %cx, %dx -# CHECK-NEXT: [1,1] D====eER . . . movw %ax, %dx -# CHECK-NEXT: [1,2] D=====eER . . . xorw %bx, %dx -# CHECK-NEXT: [2,0] .D=====eER. . . addw %cx, %dx -# CHECK-NEXT: [2,1] .D======eER . . movw %ax, %dx -# CHECK-NEXT: [2,2] .D=======eER . . xorw %bx, %dx -# CHECK-NEXT: [3,0] .D========eER . . addw %cx, %dx -# CHECK-NEXT: [3,1] .D=========eER . . movw %ax, %dx -# CHECK-NEXT: [3,2] .D==========eER. . xorw %bx, %dx -# CHECK-NEXT: [4,0] . D==========eER . addw %cx, %dx -# CHECK-NEXT: [4,1] . D===========eER . movw %ax, %dx -# CHECK-NEXT: [4,2] . D============eER . xorw %bx, %dx -# CHECK-NEXT: [5,0] . D=============eER . addw %cx, %dx -# CHECK-NEXT: [5,1] . D==============eER. movw %ax, %dx -# CHECK-NEXT: [5,2] . D===============eER xorw %bx, %dx +# CHECK-NEXT: [0,1] DPeER. . . . movw %ax, %dx +# CHECK-NEXT: [0,2] DPPeER . . . xorw %bx, %dx +# CHECK-NEXT: [1,0] DPPPeER . . . addw %cx, %dx +# CHECK-NEXT: [1,1] DPPPPeER . . . movw %ax, %dx +# CHECK-NEXT: [1,2] DPPPPPeER . . . xorw %bx, %dx +# CHECK-NEXT: [2,0] .DPPPPPeER. . . addw %cx, %dx +# CHECK-NEXT: [2,1] .DPPPPPPeER . . movw %ax, %dx +# CHECK-NEXT: [2,2] .DPPPPPPPeER . . xorw %bx, %dx +# CHECK-NEXT: [3,0] .DPPPPPPPPeER . . addw %cx, %dx +# CHECK-NEXT: [3,1] .DPPPPPPPPPeER . . movw %ax, %dx +# CHECK-NEXT: [3,2] .DPPPPPPPPPPeER. . xorw %bx, %dx +# CHECK-NEXT: [4,0] . DPPPPPPPPPPeER . addw %cx, %dx +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPeER . movw %ax, %dx +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPeER . xorw %bx, %dx +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPPeER . addw %cx, %dx +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPPPeER. movw %ax, %dx +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPPPeER xorw %bx, %dx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-4.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-4.s index 4ed529ee14465..9077670023b2a 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-4.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-4.s @@ -67,30 +67,37 @@ add %cx, %bx # CHECK-NEXT: - - - 0.33 - 0.33 0.33 - - - - - - - - - - - - - - - - addw %cx, %bx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 01234567 # CHECK-NEXT: Index 0123456789 0123456789 # CHECK: [0,0] DeeeER . . . . . . . imulw %ax, %bx -# CHECK-NEXT: [0,1] D===eER . . . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [0,2] D====eER . . . . . . . addw %cx, %bx -# CHECK-NEXT: [1,0] D=====eeeER . . . . . . imulw %ax, %bx -# CHECK-NEXT: [1,1] D========eER . . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [1,2] D=========eER . . . . . . addw %cx, %bx -# CHECK-NEXT: [2,0] .D=========eeeER . . . . . imulw %ax, %bx -# CHECK-NEXT: [2,1] .D============eER . . . . . lzcntw %ax, %bx -# CHECK-NEXT: [2,2] .D=============eER . . . . . addw %cx, %bx -# CHECK-NEXT: [3,0] .D==============eeeER . . . . imulw %ax, %bx -# CHECK-NEXT: [3,1] .D=================eER . . . . lzcntw %ax, %bx -# CHECK-NEXT: [3,2] .D==================eER . . . . addw %cx, %bx -# CHECK-NEXT: [4,0] . D==================eeeER . . . imulw %ax, %bx -# CHECK-NEXT: [4,1] . D=====================eER . . . lzcntw %ax, %bx -# CHECK-NEXT: [4,2] . D======================eER . . . addw %cx, %bx -# CHECK-NEXT: [5,0] . D=======================eeeER . . imulw %ax, %bx -# CHECK-NEXT: [5,1] . D==========================eER . . lzcntw %ax, %bx -# CHECK-NEXT: [5,2] . D===========================eER . . addw %cx, %bx -# CHECK-NEXT: [6,0] . D===========================eeeER . imulw %ax, %bx -# CHECK-NEXT: [6,1] . D==============================eER. lzcntw %ax, %bx -# CHECK-NEXT: [6,2] . D===============================eER addw %cx, %bx +# CHECK-NEXT: [0,1] DPPPeER . . . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [0,2] DPPPPeER . . . . . . . addw %cx, %bx +# CHECK-NEXT: [1,0] DPPPPPeeeER . . . . . . imulw %ax, %bx +# CHECK-NEXT: [1,1] DPPPPPPPPeER . . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [1,2] DPPPPPPPPPeER . . . . . . addw %cx, %bx +# CHECK-NEXT: [2,0] .DPPPPPPPPPeeeER . . . . . imulw %ax, %bx +# CHECK-NEXT: [2,1] .DPPPPPPPPPPPPeER . . . . . lzcntw %ax, %bx +# CHECK-NEXT: [2,2] .DPPPPPPPPPPPPPeER . . . . . addw %cx, %bx +# CHECK-NEXT: [3,0] .DPPPPPPPPPPPPPPeeeER . . . . imulw %ax, %bx +# CHECK-NEXT: [3,1] .DPPPPPPPPPPPPPPPPPeER . . . . lzcntw %ax, %bx +# CHECK-NEXT: [3,2] .DPPPPPPPPPPPPPPPPPPeER . . . . addw %cx, %bx +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPPPeeeER . . . imulw %ax, %bx +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPPPeER . . . lzcntw %ax, %bx +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPPPPPPPPPPPeER . . . addw %cx, %bx +# CHECK-NEXT: [5,0] . DPPPPPPPPPPPPPPPPPPPPPPPeeeER . . imulw %ax, %bx +# CHECK-NEXT: [5,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . lzcntw %ax, %bx +# CHECK-NEXT: [5,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . addw %cx, %bx +# CHECK-NEXT: [6,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeER . imulw %ax, %bx +# CHECK-NEXT: [6,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [6,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER addw %cx, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-5.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-5.s index 58941116d31f0..61c366558f67a 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-5.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-5.s @@ -58,17 +58,24 @@ lzcnt %ax, %bx ## partial register stall. # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - - - - - - - - - - lzcntw %ax, %bx # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . lzcntw %ax, %bx -# CHECK-NEXT: [1,0] D=eER. . lzcntw %ax, %bx -# CHECK-NEXT: [2,0] D==eER . lzcntw %ax, %bx -# CHECK-NEXT: [3,0] D===eER . lzcntw %ax, %bx -# CHECK-NEXT: [4,0] D====eER . lzcntw %ax, %bx -# CHECK-NEXT: [5,0] D=====eER . lzcntw %ax, %bx -# CHECK-NEXT: [6,0] .D=====eER. lzcntw %ax, %bx -# CHECK-NEXT: [7,0] .D======eER lzcntw %ax, %bx +# CHECK-NEXT: [1,0] DPeER. . lzcntw %ax, %bx +# CHECK-NEXT: [2,0] DPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [3,0] DPPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [4,0] DPPPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [5,0] DPPPPPeER . lzcntw %ax, %bx +# CHECK-NEXT: [6,0] .DPPPPPeER. lzcntw %ax, %bx +# CHECK-NEXT: [7,0] .DPPPPPPeER lzcntw %ax, %bx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-6.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-6.s index fdbf4d99fbf6e..b440d620ee988 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-6.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-6.s @@ -69,21 +69,28 @@ lzcnt 2(%rsp), %cx # CHECK-NEXT: 0.33 0.33 0.33 0.33 - 0.33 0.33 - - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 - - lzcntw 2(%rsp), %cx # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 0123456 # CHECK: [0,0] DeeeER . . . .. imull %edx, %ecx # CHECK-NEXT: [0,1] DeeeeeER . . . .. lzcntw (%rsp), %cx -# CHECK-NEXT: [0,2] D=eeeeeER . . . .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [1,0] D======eeeER . . .. imull %edx, %ecx -# CHECK-NEXT: [1,1] D======eeeeeER . . .. lzcntw (%rsp), %cx -# CHECK-NEXT: [1,2] D=======eeeeeER. . .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [2,0] .D===========eeeER . .. imull %edx, %ecx -# CHECK-NEXT: [2,1] .D===========eeeeeER. .. lzcntw (%rsp), %cx -# CHECK-NEXT: [2,2] .D============eeeeeER .. lzcntw 2(%rsp), %cx -# CHECK-NEXT: [3,0] .D=================eeeER .. imull %edx, %ecx -# CHECK-NEXT: [3,1] .D=================eeeeeER. lzcntw (%rsp), %cx -# CHECK-NEXT: [3,2] .D==================eeeeeER lzcntw 2(%rsp), %cx +# CHECK-NEXT: [0,2] DPeeeeeER . . . .. lzcntw 2(%rsp), %cx +# CHECK-NEXT: [1,0] DPPPPPPeeeER . . .. imull %edx, %ecx +# CHECK-NEXT: [1,1] DPPPPPPeeeeeER . . .. lzcntw (%rsp), %cx +# CHECK-NEXT: [1,2] DPPPPPPPeeeeeER. . .. lzcntw 2(%rsp), %cx +# CHECK-NEXT: [2,0] .DPPPPPPPPPPPeeeER . .. imull %edx, %ecx +# CHECK-NEXT: [2,1] .DPPPPPPPPPPPeeeeeER. .. lzcntw (%rsp), %cx +# CHECK-NEXT: [2,2] .DPPPPPPPPPPPPeeeeeER .. lzcntw 2(%rsp), %cx +# CHECK-NEXT: [3,0] .DPPPPPPPPPPPPPPPPPeeeER .. imull %edx, %ecx +# CHECK-NEXT: [3,1] .DPPPPPPPPPPPPPPPPPeeeeeER. lzcntw (%rsp), %cx +# CHECK-NEXT: [3,2] .DPPPPPPPPPPPPPPPPPPeeeeeER lzcntw 2(%rsp), %cx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-7.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-7.s index d782e5dd59783..bf062f8902607 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-7.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update-7.s @@ -33,11 +33,18 @@ addq %rcx, %rdx # CHECK-NEXT: 1 1 0.25 addq %rcx, %rdx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulq %rax, %rcx -# CHECK-NEXT: [0,1] D===eER. addl %edx, %ecx -# CHECK-NEXT: [0,2] D====eER addq %rcx, %rdx +# CHECK-NEXT: [0,1] DPPPeER. addl %edx, %ecx +# CHECK-NEXT: [0,2] DPPPPeER addq %rcx, %rdx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update.s b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update.s index 2dd1b4b337eee..5b629a1de158e 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/partial-reg-update.s @@ -29,11 +29,18 @@ add %ecx, %ebx # CHECK-NEXT: 1 1 0.25 addl %ecx, %ebx # CHECK: Timeline view: -# CHECK-NEXT: Index 01234567 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234567 # CHECK: [0,0] DeeeER . imulw %ax, %cx -# CHECK-NEXT: [0,1] D===eER. addb %al, %cl -# CHECK-NEXT: [0,2] D====eER addl %ecx, %ebx +# CHECK-NEXT: [0,1] DPPPeER. addb %al, %cl +# CHECK-NEXT: [0,2] DPPPPeER addl %ecx, %ebx # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-xmm.s b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-xmm.s index f3e515ce7e210..9487417ca8925 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-xmm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-xmm.s @@ -220,7 +220,14 @@ vmovdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovaps %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovaps %xmm0, %xmm1 @@ -514,7 +521,14 @@ vmovdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovups %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovups %xmm0, %xmm1 @@ -808,7 +822,14 @@ vmovdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovapd %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovapd %xmm0, %xmm1 @@ -1102,7 +1123,14 @@ vmovdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovupd %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovupd %xmm0, %xmm1 @@ -1396,7 +1424,14 @@ vmovdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovdqa %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovdqa %xmm0, %xmm1 @@ -1690,7 +1725,14 @@ vmovdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovdqu %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovdqu %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-ymm.s b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-ymm.s index a484a7562fdcb..dabdfefebef1b 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-ymm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-avx-ymm.s @@ -220,7 +220,14 @@ vmovdqu %ymm15, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovaps %ymm15, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovaps %ymm0, %ymm1 @@ -514,7 +521,14 @@ vmovdqu %ymm15, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovups %ymm15, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovups %ymm0, %ymm1 @@ -808,7 +822,14 @@ vmovdqu %ymm15, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovapd %ymm15, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovapd %ymm0, %ymm1 @@ -1102,7 +1123,14 @@ vmovdqu %ymm15, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovupd %ymm15, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovupd %ymm0, %ymm1 @@ -1396,7 +1424,14 @@ vmovdqu %ymm15, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovdqa %ymm15, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovdqa %ymm0, %ymm1 @@ -1690,7 +1725,14 @@ vmovdqu %ymm15, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vmovdqu %ymm15, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . vmovdqu %ymm0, %ymm1 diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-gpr.s b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-gpr.s index eb20d13e8c944..7d2952f71bf67 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-gpr.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-gpr.s @@ -172,7 +172,14 @@ xchgq %r15, %rax # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movl %r15d, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DR . . . . . movl %eax, %ecx @@ -440,7 +447,14 @@ xchgq %r15, %rax # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movq %r15, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DR . . . . . movq %rax, %rcx @@ -708,7 +722,14 @@ xchgq %r15, %rax # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - xchgl %r15d, %eax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DR . . . . . . . . . . xchgl %ecx, %eax @@ -976,7 +997,14 @@ xchgq %r15, %rax # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - xchgq %r15, %rax # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 01234567 # CHECK: [0,0] DR . . . . . . . . . . xchgq %rcx, %rax diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-mmx.s b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-mmx.s index e17d6717e1366..7b6ece257c87b 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-mmx.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-mmx.s @@ -93,86 +93,93 @@ movq %mm7, %mm0 # CHECK-NEXT: - - - - - - - - 1.00 - - - - - - - - - - - - - - movq %mm7, %mm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . . . . . . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [0,1] D=eER. . . . . . . . . . . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [0,2] D==eER . . . . . . . . . . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [0,3] D===eER . . . . . . . . . . . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [0,4] D====eER . . . . . . . . . . . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [0,5] D=====eER . . . . . . . . . . . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [0,6] .D=====eER. . . . . . . . . . . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [0,7] .D======eER . . . . . . . . . . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [1,0] .D=======eER . . . . . . . . . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [1,1] .D========eER . . . . . . . . . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [1,2] .D=========eER . . . . . . . . . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [1,3] .D==========eER. . . . . . . . . . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [1,4] . D==========eER . . . . . . . . . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [1,5] . D===========eER . . . . . . . . . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [1,6] . D============eER . . . . . . . . . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [1,7] . D=============eER . . . . . . . . . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [2,0] . D==============eER. . . . . . . . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [2,1] . D===============eER . . . . . . . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [2,2] . D===============eER . . . . . . . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [2,3] . D================eER . . . . . . . . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [2,4] . D=================eER . . . . . . . . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [2,5] . D==================eER. . . . . . . . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [2,6] . D===================eER . . . . . . . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [2,7] . D====================eER . . . . . . . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [3,0] . D====================eER . . . . . . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [3,1] . D=====================eER . . . . . . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [3,2] . D======================eER. . . . . . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [3,3] . D=======================eER . . . . . . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [3,4] . D========================eER . . . . . . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [3,5] . D=========================eER . . . . . . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [3,6] . D=========================eER . . . . . . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [3,7] . D==========================eER. . . . . . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [4,0] . D===========================eER . . . . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [4,1] . D============================eER . . . . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [4,2] . D=============================eER . . . . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [4,3] . D==============================eER . . . . . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [4,4] . .D==============================eER. . . . . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [4,5] . .D===============================eER . . . . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [4,6] . .D================================eER . . . . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [4,7] . .D=================================eER . . . . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [5,0] . .D==================================eER . . . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [5,1] . .D===================================eER. . . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [5,2] . . D===================================eER . . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [5,3] . . D====================================eER . . . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [5,4] . . D=====================================eER . . . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [5,5] . . D======================================eER . . . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [5,6] . . D=======================================eER. . . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [5,7] . . D========================================eER . . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [6,0] . . D========================================eER . . . . . . movq %mm0, %mm1 -# CHECK-NEXT: [6,1] . . D=========================================eER . . . . . . movq %mm1, %mm2 -# CHECK-NEXT: [6,2] . . D==========================================eER . . . . . . movq %mm2, %mm3 -# CHECK-NEXT: [6,3] . . D===========================================eER. . . . . . movq %mm3, %mm4 -# CHECK-NEXT: [6,4] . . D============================================eER . . . . . movq %mm4, %mm5 -# CHECK-NEXT: [6,5] . . D=============================================eER . . . . . movq %mm5, %mm6 -# CHECK-NEXT: [6,6] . . D=============================================eER . . . . . movq %mm6, %mm7 -# CHECK-NEXT: [6,7] . . D==============================================eER . . . . . movq %mm7, %mm0 -# CHECK-NEXT: [7,0] . . D===============================================eER. . . . . movq %mm0, %mm1 -# CHECK-NEXT: [7,1] . . D================================================eER . . . . movq %mm1, %mm2 -# CHECK-NEXT: [7,2] . . D=================================================eER . . . . movq %mm2, %mm3 -# CHECK-NEXT: [7,3] . . D==================================================eER . . . . movq %mm3, %mm4 -# CHECK-NEXT: [7,4] . . D==================================================eER . . . . movq %mm4, %mm5 -# CHECK-NEXT: [7,5] . . D===================================================eER. . . . movq %mm5, %mm6 -# CHECK-NEXT: [7,6] . . D====================================================eER . . . movq %mm6, %mm7 -# CHECK-NEXT: [7,7] . . D=====================================================eER . . . movq %mm7, %mm0 -# CHECK-NEXT: [8,0] . . D======================================================eER . . . movq %mm0, %mm1 -# CHECK-NEXT: [8,1] . . D=======================================================eER . . . movq %mm1, %mm2 -# CHECK-NEXT: [8,2] . . .D=======================================================eER. . . movq %mm2, %mm3 -# CHECK-NEXT: [8,3] . . .D========================================================eER . . movq %mm3, %mm4 -# CHECK-NEXT: [8,4] . . .D=========================================================eER . . movq %mm4, %mm5 -# CHECK-NEXT: [8,5] . . .D==========================================================eER . . movq %mm5, %mm6 -# CHECK-NEXT: [8,6] . . .D===========================================================eER . . movq %mm6, %mm7 -# CHECK-NEXT: [8,7] . . .D============================================================eER. . movq %mm7, %mm0 -# CHECK-NEXT: [9,0] . . . D============================================================eER . movq %mm0, %mm1 -# CHECK-NEXT: [9,1] . . . D=============================================================eER . movq %mm1, %mm2 -# CHECK-NEXT: [9,2] . . . D==============================================================eER . movq %mm2, %mm3 -# CHECK-NEXT: [9,3] . . . D===============================================================eER. movq %mm3, %mm4 -# CHECK-NEXT: [9,4] . . . D===============================================================eER movq %mm4, %mm5 +# CHECK-NEXT: [0,1] DPeER. . . . . . . . . . . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [0,2] DPPeER . . . . . . . . . . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [0,3] DPPPeER . . . . . . . . . . . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [0,4] DPPPPeER . . . . . . . . . . . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [0,5] DPPPPPeER . . . . . . . . . . . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [0,6] .DPPPPPeER. . . . . . . . . . . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [0,7] .DPPPPPPeER . . . . . . . . . . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [1,0] .DPPPPPPPeER . . . . . . . . . . . . . . movq %mm0, %mm1 +# CHECK-NEXT: [1,1] .DPPPPPPPPeER . . . . . . . . . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [1,2] .DPPPPPPPPPeER . . . . . . . . . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [1,3] .DPPPPPPPPPPeER. . . . . . . . . . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [1,4] . DPPPPPPPPPPeER . . . . . . . . . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [1,5] . DPPPPPPPPPPPeER . . . . . . . . . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [1,6] . DPPPPPPPPPPPPeER . . . . . . . . . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [1,7] . DPPPPPPPPPPPPPeER . . . . . . . . . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [2,0] . DPPPPPPPPPPPPPPeER. . . . . . . . . . . . . movq %mm0, %mm1 +# CHECK-NEXT: [2,1] . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [2,2] . DPPPPPPPPPPPPPPPeER . . . . . . . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [2,3] . DPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [2,4] . DPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [2,5] . DPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [2,6] . DPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [2,7] . DPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [3,0] . DPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . movq %mm0, %mm1 +# CHECK-NEXT: [3,1] . DPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [3,2] . DPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [3,3] . DPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [3,4] . DPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [3,5] . DPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [3,6] . DPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [3,7] . DPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [4,0] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . movq %mm0, %mm1 +# CHECK-NEXT: [4,1] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [4,2] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [4,3] . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [4,4] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [4,5] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [4,6] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [4,7] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [5,0] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . . movq %mm0, %mm1 +# CHECK-NEXT: [5,1] . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [5,2] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [5,3] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [5,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [5,5] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [5,6] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [5,7] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [6,0] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . movq %mm0, %mm1 +# CHECK-NEXT: [6,1] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . movq %mm1, %mm2 +# CHECK-NEXT: [6,2] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . . movq %mm2, %mm3 +# CHECK-NEXT: [6,3] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . . . movq %mm3, %mm4 +# CHECK-NEXT: [6,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . movq %mm4, %mm5 +# CHECK-NEXT: [6,5] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . movq %mm5, %mm6 +# CHECK-NEXT: [6,6] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . movq %mm6, %mm7 +# CHECK-NEXT: [6,7] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . . movq %mm7, %mm0 +# CHECK-NEXT: [7,0] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . . movq %mm0, %mm1 +# CHECK-NEXT: [7,1] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . movq %mm1, %mm2 +# CHECK-NEXT: [7,2] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . movq %mm2, %mm3 +# CHECK-NEXT: [7,3] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . movq %mm3, %mm4 +# CHECK-NEXT: [7,4] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . . movq %mm4, %mm5 +# CHECK-NEXT: [7,5] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . . movq %mm5, %mm6 +# CHECK-NEXT: [7,6] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . movq %mm6, %mm7 +# CHECK-NEXT: [7,7] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . movq %mm7, %mm0 +# CHECK-NEXT: [8,0] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . movq %mm0, %mm1 +# CHECK-NEXT: [8,1] . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . . movq %mm1, %mm2 +# CHECK-NEXT: [8,2] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . . movq %mm2, %mm3 +# CHECK-NEXT: [8,3] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . movq %mm3, %mm4 +# CHECK-NEXT: [8,4] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . movq %mm4, %mm5 +# CHECK-NEXT: [8,5] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . movq %mm5, %mm6 +# CHECK-NEXT: [8,6] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . . movq %mm6, %mm7 +# CHECK-NEXT: [8,7] . . .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. . movq %mm7, %mm0 +# CHECK-NEXT: [9,0] . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . movq %mm0, %mm1 +# CHECK-NEXT: [9,1] . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . movq %mm1, %mm2 +# CHECK-NEXT: [9,2] . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER . movq %mm2, %mm3 +# CHECK-NEXT: [9,3] . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER. movq %mm3, %mm4 +# CHECK-NEXT: [9,4] . . . DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeER movq %mm4, %mm5 # CHECK-NEXT: Truncated display due to cycle limit # CHECK: Average Wait times (based on the timeline view): diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-sse-xmm.s b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-sse-xmm.s index b45fd172bd555..0b1b32e1476de 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-sse-xmm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-sse-xmm.s @@ -220,7 +220,14 @@ movdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movaps %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . movaps %xmm0, %xmm1 @@ -514,7 +521,14 @@ movdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movups %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . movups %xmm0, %xmm1 @@ -808,7 +822,14 @@ movdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movapd %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . movapd %xmm0, %xmm1 @@ -1102,7 +1123,14 @@ movdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movupd %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . movupd %xmm0, %xmm1 @@ -1396,7 +1424,14 @@ movdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movdqa %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . movdqa %xmm0, %xmm1 @@ -1690,7 +1725,14 @@ movdqu %xmm15, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - movdqu %xmm15, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234567 # CHECK: [0,0] DR . . . . . . movdqu %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-x87.s b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-x87.s index 0465d413a854b..074e9ec056889 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-x87.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/reg-move-elimination-x87.s @@ -100,7 +100,14 @@ fxch %st(0) # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - - - - - - - - - - fxch %st(0) # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 0123456789 0123456789 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 0123456789 0123456789 0123456789 # CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456789 # CHECK: [0,0] DeER . . . . . . . . . . . . . . . . fxch %st(0) diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-xmm.s b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-xmm.s index ed4e8f90dd7b0..e3d1c45ba9192 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-xmm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-xmm.s @@ -164,7 +164,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vxorps %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vxorps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vxorps %xmm1, %xmm0, %xmm0 @@ -255,7 +262,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vxorpd %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vxorpd %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vxorpd %xmm1, %xmm0, %xmm0 @@ -346,7 +360,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vandnps %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vandnps %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vandnps %xmm1, %xmm0, %xmm0 @@ -437,7 +458,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vandnpd %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vandnpd %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vandnpd %xmm1, %xmm0, %xmm0 @@ -528,7 +556,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpxor %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpxor %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpxor %xmm1, %xmm0, %xmm0 @@ -619,7 +654,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpandn %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpandn %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpandn %xmm1, %xmm0, %xmm0 @@ -710,7 +752,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubb %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubb %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpsubb %xmm1, %xmm0, %xmm0 @@ -801,7 +850,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubw %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubw %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpsubw %xmm1, %xmm0, %xmm0 @@ -892,7 +948,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubd %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubd %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpsubd %xmm1, %xmm0, %xmm0 @@ -983,7 +1046,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubq %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpsubq %xmm1, %xmm0, %xmm0 @@ -1074,12 +1144,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubsb %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpsubsb %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1165,12 +1242,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubsw %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpsubsw %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1256,12 +1340,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubusb %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpsubusb %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1347,12 +1438,19 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %xmm1, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubusw %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R vpsubusw %xmm0, %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER vpxor %xmm1, %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER vpxor %xmm1, %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1438,7 +1536,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddb %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtb %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpaddb %xmm0, %xmm0, %xmm0 @@ -1529,7 +1634,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddw %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtw %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpaddw %xmm0, %xmm0, %xmm0 @@ -1620,7 +1732,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddd %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtd %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpaddd %xmm0, %xmm0, %xmm0 @@ -1711,7 +1830,14 @@ vpaddq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddq %xmm0, %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtq %xmm0, %xmm0, %xmm0 # CHECK-NEXT: [0,1] DeER vpaddq %xmm0, %xmm0, %xmm0 diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-ymm.s b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-ymm.s index 24043369c6f14..5f73471e6a2f9 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-ymm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-avx-ymm.s @@ -174,7 +174,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vxorps %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vxorps %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vxorps %ymm1, %ymm0, %ymm0 @@ -265,7 +272,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vxorpd %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vxorpd %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vxorpd %ymm1, %ymm0, %ymm0 @@ -356,7 +370,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vandnps %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vandnps %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vandnps %ymm1, %ymm0, %ymm0 @@ -447,7 +468,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vandnpd %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vandnpd %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vandnpd %ymm1, %ymm0, %ymm0 @@ -538,7 +566,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpxor %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpxor %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpxor %ymm1, %ymm0, %ymm0 @@ -629,7 +664,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpandn %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpandn %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpandn %ymm1, %ymm0, %ymm0 @@ -720,7 +762,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubb %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubb %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpsubb %ymm1, %ymm0, %ymm0 @@ -811,7 +860,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubw %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubw %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpsubw %ymm1, %ymm0, %ymm0 @@ -902,7 +958,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubd %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubd %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpsubd %ymm1, %ymm0, %ymm0 @@ -993,7 +1056,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpsubq %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpsubq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpsubq %ymm1, %ymm0, %ymm0 @@ -1084,12 +1154,19 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubsb %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpsubsb %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1175,12 +1252,19 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubsw %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpsubsw %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1266,12 +1350,19 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubusb %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpsubusb %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1357,12 +1448,19 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - vpxor %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. vpsubusw %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: [1,0] DeE-R vpsubusw %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1448,7 +1546,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddb %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtb %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpaddb %ymm0, %ymm0, %ymm0 @@ -1539,7 +1644,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddw %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtw %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpaddw %ymm0, %ymm0, %ymm0 @@ -1630,7 +1742,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddd %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtd %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpaddd %ymm0, %ymm0, %ymm0 @@ -1721,7 +1840,14 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpaddq %ymm0, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 0123 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123 # CHECK: [0,0] DR . vpcmpgtq %ymm0, %ymm0, %ymm0 # CHECK-NEXT: [0,1] DeER vpaddq %ymm0, %ymm0, %ymm0 @@ -1812,13 +1938,20 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.33 - 0.33 0.33 - - - - - - - - - - - vxorps %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . vperm2f128 $136, %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D===eER . vxorps %ymm1, %ymm0, %ymm0 -# CHECK-NEXT: [1,0] D====eeeER. vperm2f128 $136, %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=======eER vxorps %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPPPeER . vxorps %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [1,0] DPPPPeeeER. vperm2f128 $136, %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPPPPPPPeER vxorps %ymm1, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1904,13 +2037,20 @@ vpxor %ymm1, %ymm0, %ymm0 # CHECK-NEXT: - - - - - - - - 0.33 - 0.33 0.33 - - - - - - - - - - - vpxor %ymm1, %ymm0, %ymm0 # CHECK: Timeline view: -# CHECK-NEXT: 0 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeeeER . vperm2i128 $136, %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [0,1] D===eER . vpxor %ymm1, %ymm0, %ymm0 -# CHECK-NEXT: [1,0] D====eeeER. vperm2i128 $136, %ymm0, %ymm0, %ymm0 -# CHECK-NEXT: [1,1] D=======eER vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [0,1] DPPPeER . vpxor %ymm1, %ymm0, %ymm0 +# CHECK-NEXT: [1,0] DPPPPeeeER. vperm2i128 $136, %ymm0, %ymm0, %ymm0 +# CHECK-NEXT: [1,1] DPPPPPPPeER vpxor %ymm1, %ymm0, %ymm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-gpr.s b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-gpr.s index 4d648f7fb9dea..132b4a9b444fd 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-gpr.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-gpr.s @@ -94,7 +94,14 @@ addq %rax, %rax # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - - - - - - addl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DR .. xorl %eax, %eax # CHECK-NEXT: [0,1] DeER .. addl %eax, %eax @@ -201,7 +208,14 @@ addq %rax, %rax # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - - - - - - addq %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DR .. xorq %rax, %rax # CHECK-NEXT: [0,1] DeER .. addq %rax, %rax @@ -308,7 +322,14 @@ addq %rax, %rax # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - - - - - - addl %eax, %eax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DR .. subl %eax, %eax # CHECK-NEXT: [0,1] DeER .. addl %eax, %eax @@ -415,7 +436,14 @@ addq %rax, %rax # CHECK-NEXT: - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - - - - - - addq %rax, %rax # CHECK: Timeline view: -# CHECK-NEXT: Index 0123456 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 0123456 # CHECK: [0,0] DR .. subq %rax, %rax # CHECK-NEXT: [0,1] DeER .. addq %rax, %rax diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-sse-xmm.s b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-sse-xmm.s index aca39c52f36e5..b56c98be7489a 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-sse-xmm.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/zero-idioms-sse-xmm.s @@ -164,12 +164,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - xorps %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. xorps %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER xorps %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER xorps %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R xorps %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER xorps %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER xorps %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -255,12 +262,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - xorpd %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. xorpd %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER xorpd %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER xorpd %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R xorpd %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER xorpd %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER xorpd %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -346,12 +360,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - andnps %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. andnps %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER andnps %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER andnps %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R andnps %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER andnps %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER andnps %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -437,12 +458,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - andnpd %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. andnpd %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER andnpd %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER andnpd %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R andnpd %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER andnpd %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER andnpd %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -528,12 +556,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - pxor %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pxor %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER pxor %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R pxor %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER pxor %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -619,12 +654,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - pandn %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pandn %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER pandn %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER pandn %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R pandn %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER pandn %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER pandn %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -710,12 +752,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - psubb %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubb %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER psubb %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER psubb %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubb %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER psubb %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER psubb %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -801,12 +850,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - psubw %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubw %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER psubw %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER psubw %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubw %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER psubw %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER psubw %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -892,12 +948,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - psubd %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubd %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER psubd %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER psubd %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubd %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER psubd %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER psubd %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -983,12 +1046,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.50 - 0.25 0.25 - - - - - - - - - - - psubq %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubq %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER psubq %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER psubq %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubq %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER psubq %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER psubq %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1074,12 +1144,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - pxor %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubsb %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER pxor %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubsb %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER pxor %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1165,12 +1242,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - pxor %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubsw %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER pxor %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubsw %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER pxor %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1256,12 +1340,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - pxor %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubusb %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER pxor %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubusb %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER pxor %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1347,12 +1438,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - - - - pxor %xmm0, %xmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. psubusw %xmm1, %xmm1 -# CHECK-NEXT: [0,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [0,1] DPeER pxor %xmm0, %xmm1 # CHECK-NEXT: [1,0] DeE-R psubusw %xmm1, %xmm1 -# CHECK-NEXT: [1,1] D=eER pxor %xmm0, %xmm1 +# CHECK-NEXT: [1,1] DPeER pxor %xmm0, %xmm1 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1438,12 +1536,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddb %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpgtb %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddb %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddb %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpgtb %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddb %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddb %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1529,12 +1634,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddw %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpgtw %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddw %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddw %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpgtw %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddw %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddw %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1620,12 +1732,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddd %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpgtd %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddd %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddd %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpgtd %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddd %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddd %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions @@ -1711,12 +1830,19 @@ paddq %xmm0, %xmm0 # CHECK-NEXT: - - - - - - - - 0.25 0.25 - 0.50 - - - - - - - - - - - paddq %xmm0, %xmm0 # CHECK: Timeline view: -# CHECK-NEXT: Index 01234 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 01234 # CHECK: [0,0] DeER. pcmpgtq %xmm0, %xmm0 -# CHECK-NEXT: [0,1] D=eER paddq %xmm0, %xmm0 +# CHECK-NEXT: [0,1] DPeER paddq %xmm0, %xmm0 # CHECK-NEXT: [1,0] DeE-R pcmpgtq %xmm0, %xmm0 -# CHECK-NEXT: [1,1] D=eER paddq %xmm0, %xmm0 +# CHECK-NEXT: [1,1] DPeER paddq %xmm0, %xmm0 # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver4/independent-load-stores.s b/llvm/test/tools/llvm-mca/X86/Znver4/independent-load-stores.s index 1b487e6b1b9c7..48e3f38d3e192 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver4/independent-load-stores.s +++ b/llvm/test/tools/llvm-mca/X86/Znver4/independent-load-stores.s @@ -94,34 +94,40 @@ # ALL-NEXT: 0.66 0.66 0.68 0.50 - 0.50 - - - - - - - - - 0.66 0.66 0.68 0.33 0.33 0.34 1.00 - addq $44, 640(%r14) # ALL: Timeline view: - -# NOALIAS-NEXT: 01234 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# NOALIAS: 01234 # NOALIAS-NEXT: Index 0123456789 -# YESALIAS-NEXT: 0123456789 0123456789 0123456789 +# YESALIAS: 0123456789 0123456789 0123456789 # YESALIAS-NEXT: Index 0123456789 0123456789 0123456789 012 # NOALIAS: [0,0] DeeeeeeER . . addq $44, 64(%r14) # NOALIAS-NEXT: [0,1] DeeeeeeER . . addq $44, 128(%r14) # NOALIAS-NEXT: [0,2] D=eeeeeeER. . addq $44, 192(%r14) -# NOALIAS-NEXT: [0,3] D==eeeeeeER . addq $44, 256(%r14) -# NOALIAS-NEXT: [0,4] D==eeeeeeER . addq $44, 320(%r14) -# NOALIAS-NEXT: [0,5] D===eeeeeeER . addq $44, 384(%r14) -# NOALIAS-NEXT: [0,6] .D===eeeeeeER . addq $44, 448(%r14) -# NOALIAS-NEXT: [0,7] .D===eeeeeeER . addq $44, 512(%r14) -# NOALIAS-NEXT: [0,8] .D====eeeeeeER. addq $44, 576(%r14) -# NOALIAS-NEXT: [0,9] .D=====eeeeeeER addq $44, 640(%r14) +# NOALIAS-NEXT: [0,3] DP=eeeeeeER . addq $44, 256(%r14) +# NOALIAS-NEXT: [0,4] DPPeeeeeeER . addq $44, 320(%r14) +# NOALIAS-NEXT: [0,5] DPP=eeeeeeER . addq $44, 384(%r14) +# NOALIAS-NEXT: [0,6] .DPP=eeeeeeER . addq $44, 448(%r14) +# NOALIAS-NEXT: [0,7] .DPPPeeeeeeER . addq $44, 512(%r14) +# NOALIAS-NEXT: [0,8] .DPPP=eeeeeeER. addq $44, 576(%r14) +# NOALIAS-NEXT: [0,9] .DPPPP=eeeeeeER addq $44, 640(%r14) # YESALIAS: [0,0] DeeeeeeER . . . . . . . . . . . . addq $44, 64(%r14) -# YESALIAS-NEXT: [0,1] D======eeeeeeER. . . . . . . . . . . addq $44, 128(%r14) -# YESALIAS-NEXT: [0,2] D============eeeeeeER . . . . . . . . . addq $44, 192(%r14) -# YESALIAS-NEXT: [0,3] D==================eeeeeeER . . . . . . . . addq $44, 256(%r14) -# YESALIAS-NEXT: [0,4] D========================eeeeeeER . . . . . . . addq $44, 320(%r14) -# YESALIAS-NEXT: [0,5] D==============================eeeeeeER . . . . . . addq $44, 384(%r14) -# YESALIAS-NEXT: [0,6] .D===================================eeeeeeER. . . . . addq $44, 448(%r14) -# YESALIAS-NEXT: [0,7] .D=========================================eeeeeeER . . . addq $44, 512(%r14) -# YESALIAS-NEXT: [0,8] .D===============================================eeeeeeER . . addq $44, 576(%r14) -# YESALIAS-NEXT: [0,9] .D=====================================================eeeeeeER addq $44, 640(%r14) +# YESALIAS-NEXT: [0,1] DPPPPPPeeeeeeER. . . . . . . . . . . addq $44, 128(%r14) +# YESALIAS-NEXT: [0,2] DPPPPPPPPPPPPeeeeeeER . . . . . . . . . addq $44, 192(%r14) +# YESALIAS-NEXT: [0,3] DPPPPPPPPPPPPPPPPPPeeeeeeER . . . . . . . . addq $44, 256(%r14) +# YESALIAS-NEXT: [0,4] DPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . . . . . . addq $44, 320(%r14) +# YESALIAS-NEXT: [0,5] DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . . . . . addq $44, 384(%r14) +# YESALIAS-NEXT: [0,6] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER. . . . . addq $44, 448(%r14) +# YESALIAS-NEXT: [0,7] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . . addq $44, 512(%r14) +# YESALIAS-NEXT: [0,8] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER . . addq $44, 576(%r14) +# YESALIAS-NEXT: [0,9] .DPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeER addq $44, 640(%r14) # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/Znver4/partially-overlapping-group-resources.s b/llvm/test/tools/llvm-mca/X86/Znver4/partially-overlapping-group-resources.s index 7705c900ddff1..94f81adb893b7 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver4/partially-overlapping-group-resources.s +++ b/llvm/test/tools/llvm-mca/X86/Znver4/partially-overlapping-group-resources.s @@ -72,7 +72,14 @@ vpxord zmm1, zmm1, zmm1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpxord zmm1, zmm1, zmm1 # CHECK: Timeline view: -# CHECK-NEXT: Index 012345678 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: Index 012345678 # CHECK: [0,0] DeeeeeeER vpconflictd zmm0, zmm3 # CHECK-NEXT: [0,1] D==eE---R kxnorw k1, k1, k1 diff --git a/llvm/test/tools/llvm-mca/X86/Znver4/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/Znver4/zero-idioms.s index 30df2ed0a926d..0d8402ffb6d85 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver4/zero-idioms.s +++ b/llvm/test/tools/llvm-mca/X86/Znver4/zero-idioms.s @@ -504,7 +504,14 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpxorq %zmm19, %zmm19, %zmm21 # CHECK: Timeline view: -# CHECK-NEXT: 0123456789 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 0123456789 # CHECK-NEXT: Index 0123456789 01234 # CHECK: [0,0] DR . . . . . subl %eax, %eax @@ -512,8 +519,8 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,2] DR . . . . . xorl %eax, %eax # CHECK-NEXT: [0,3] DR . . . . . xorq %rax, %rax # CHECK-NEXT: [0,4] DeER . . . . . pcmpgtb %mm2, %mm2 -# CHECK-NEXT: [0,5] D=eER. . . . . pcmpgtd %mm2, %mm2 -# CHECK-NEXT: [0,6] .D=eER . . . . pcmpgtw %mm2, %mm2 +# CHECK-NEXT: [0,5] DPeER. . . . . pcmpgtd %mm2, %mm2 +# CHECK-NEXT: [0,6] .DPeER . . . . pcmpgtw %mm2, %mm2 # CHECK-NEXT: [0,7] .DeE-R . . . . pcmpgtb %xmm2, %xmm2 # CHECK-NEXT: [0,8] .DeE-R . . . . pcmpgtd %xmm2, %xmm2 # CHECK-NEXT: [0,9] .DeE-R . . . . pcmpgtq %xmm2, %xmm2 @@ -535,9 +542,9 @@ vpxorq %zmm19, %zmm19, %zmm21 # CHECK-NEXT: [0,25] . D--R . . . . vpcmpgtq %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,26] . D--R . . . . vpcmpgtw %ymm3, %ymm3, %ymm5 # CHECK-NEXT: [0,27] . DeER . . . . psubb %mm2, %mm2 -# CHECK-NEXT: [0,28] . D=eER . . . . psubd %mm2, %mm2 -# CHECK-NEXT: [0,29] . D==eER. . . . psubq %mm2, %mm2 -# CHECK-NEXT: [0,30] . D==eER . . . psubw %mm2, %mm2 +# CHECK-NEXT: [0,28] . DPeER . . . . psubd %mm2, %mm2 +# CHECK-NEXT: [0,29] . DPPeER. . . . psubq %mm2, %mm2 +# CHECK-NEXT: [0,30] . DPPeER . . . psubw %mm2, %mm2 # CHECK-NEXT: [0,31] . DeE--R . . . psubb %xmm2, %xmm2 # CHECK-NEXT: [0,32] . DeE--R . . . psubd %xmm2, %xmm2 # CHECK-NEXT: [0,33] . DeE--R . . . psubq %xmm2, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/bextr-read-after-ld.s b/llvm/test/tools/llvm-mca/X86/bextr-read-after-ld.s index 25f943f7d98b9..199393f351a41 100644 --- a/llvm/test/tools/llvm-mca/X86/bextr-read-after-ld.s +++ b/llvm/test/tools/llvm-mca/X86/bextr-read-after-ld.s @@ -102,14 +102,26 @@ bextrl %esi, (%rdi), %eax # ZNVER2-NEXT: 2 5 0.33 * bextrl %esi, (%rdi), %eax # ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. -# BDVER2-NEXT: Index 012345678 -# BDWELL-NEXT: Index 0123456789 -# BTVER2-NEXT: Index 0123456 -# HASWELL-NEXT: Index 0123456789 -# SKYLAKE-NEXT: Index 0123456789 -# ZNVER1-NEXT: Index 01234567 -# ZNVER2-NEXT: Index 01234567 +# BDVER2: Index 012345678 + +# BDWELL: Index 0123456789 + +# BTVER2: Index 0123456 + +# HASWELL: Index 0123456789 + +# SKYLAKE: Index 0123456789 + +# ZNVER1: Index 01234567 + +# ZNVER2: Index 01234567 # BDVER2: [0,0] DeER . . addl %edi, %esi # BDVER2-NEXT: [0,1] DeeeeeeER bextrl %esi, (%rdi), %eax diff --git a/llvm/test/tools/llvm-mca/X86/bzhi-read-after-ld.s b/llvm/test/tools/llvm-mca/X86/bzhi-read-after-ld.s index 281a5a34a5c6b..cafe17904592e 100644 --- a/llvm/test/tools/llvm-mca/X86/bzhi-read-after-ld.s +++ b/llvm/test/tools/llvm-mca/X86/bzhi-read-after-ld.s @@ -63,12 +63,22 @@ bzhil %esi, (%rdi), %eax # ZNVER2-NEXT: 2 5 0.33 * bzhil %esi, (%rdi), %eax # ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. -# BDWELL-NEXT: Index 012345678 -# HASWELL-NEXT: Index 012345678 -# SKYLAKE-NEXT: Index 012345678 -# ZNVER1-NEXT: Index 01234567 -# ZNVER2-NEXT: Index 01234567 +# BDWELL: Index 012345678 + +# HASWELL: Index 012345678 + +# SKYLAKE: Index 012345678 + +# ZNVER1: Index 01234567 + +# ZNVER2: Index 01234567 # BDWELL: [0,0] DeER . . addl %edi, %esi # BDWELL-NEXT: [0,1] DeeeeeeER bzhil %esi, (%rdi), %eax diff --git a/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-1.s index 09a47e7747e44..d7b68570ba84e 100644 --- a/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-1.s @@ -50,13 +50,24 @@ vfmadd213ps (%rdi), %xmm1, %xmm2 # ZNVER1-NEXT: Block RThroughput: 0.5 # ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. -# BDWELL-NEXT: 012 -# HASWELL-NEXT: 0123 -# SKYLAKE-NEXT: 012 -# ZNVER1-NEXT: 01234 +# BDWELL: 012 +# BDWELL-NEXT: Index 0123456789 -# ALL-NEXT: Index 0123456789 +# HASWELL: 0123 +# HASWELL-NEXT: Index 0123456789 + +# SKYLAKE: 012 +# SKYLAKE-NEXT: Index 0123456789 + +# ZNVER1: 01234 +# ZNVER1-NEXT: Index 0123456789 # BDWELL: [0,0] DeeeER . . vaddps %xmm0, %xmm0, %xmm1 # BDWELL-NEXT: [0,1] DeeeeeeeeeeER vfmadd213ps (%rdi), %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-2.s index cf1d6847384df..5593e1a35ff59 100644 --- a/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/fma3-read-after-ld-2.s @@ -50,13 +50,24 @@ vfmadd213ps (%rdi), %xmm1, %xmm2 # ZNVER1-NEXT: Block RThroughput: 0.5 # ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. -# BDWELL-NEXT: 012 -# HASWELL-NEXT: 0123 -# SKYLAKE-NEXT: 012 -# ZNVER1-NEXT: 01234 +# BDWELL: 012 +# BDWELL-NEXT: Index 0123456789 -# ALL-NEXT: Index 0123456789 +# HASWELL: 0123 +# HASWELL-NEXT: Index 0123456789 + +# SKYLAKE: 012 +# SKYLAKE-NEXT: Index 0123456789 + +# ZNVER1: 01234 +# ZNVER1-NEXT: Index 0123456789 # BDWELL: [0,0] DeeeER . . vaddps %xmm0, %xmm0, %xmm2 # BDWELL-NEXT: [0,1] DeeeeeeeeeeER vfmadd213ps (%rdi), %xmm1, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/option-all-views-1.s b/llvm/test/tools/llvm-mca/X86/option-all-views-1.s index c8a108882d1e8..85764bae6ca1a 100644 --- a/llvm/test/tools/llvm-mca/X86/option-all-views-1.s +++ b/llvm/test/tools/llvm-mca/X86/option-all-views-1.s @@ -128,19 +128,26 @@ add %eax, %eax # DEFAULTREPORT-NEXT: 0.50 0.50 - - - - - - - - - - - - addl %eax, %eax # FULLREPORT: Timeline view: -# FULLREPORT-NEXT: 012 +# FULLREPORT-NEXT: D: Instruction dispatched +# FULLREPORT-NEXT: e: Instruction executing +# FULLREPORT-NEXT: E: Instruction executed (write-back stage) +# FULLREPORT-NEXT: P: Instruction waiting for data dependency +# FULLREPORT-NEXT: =: Instruction waiting for available HW resource +# FULLREPORT-NEXT: -: Instruction executed, waiting to retire in order. + +# FULLREPORT: 012 # FULLREPORT-NEXT: Index 0123456789 # FULLREPORT: [0,0] DeER . . . addl %eax, %eax -# FULLREPORT-NEXT: [1,0] D=eER. . . addl %eax, %eax -# FULLREPORT-NEXT: [2,0] .D=eER . . addl %eax, %eax -# FULLREPORT-NEXT: [3,0] .D==eER . . addl %eax, %eax -# FULLREPORT-NEXT: [4,0] . D==eER . . addl %eax, %eax -# FULLREPORT-NEXT: [5,0] . D===eER . . addl %eax, %eax -# FULLREPORT-NEXT: [6,0] . D===eER. . addl %eax, %eax -# FULLREPORT-NEXT: [7,0] . D====eER . addl %eax, %eax -# FULLREPORT-NEXT: [8,0] . D====eER. addl %eax, %eax -# FULLREPORT-NEXT: [9,0] . D=====eER addl %eax, %eax +# FULLREPORT-NEXT: [1,0] DPeER. . . addl %eax, %eax +# FULLREPORT-NEXT: [2,0] .DPeER . . addl %eax, %eax +# FULLREPORT-NEXT: [3,0] .DPPeER . . addl %eax, %eax +# FULLREPORT-NEXT: [4,0] . DPPeER . . addl %eax, %eax +# FULLREPORT-NEXT: [5,0] . DPPPeER . . addl %eax, %eax +# FULLREPORT-NEXT: [6,0] . DPPPeER. . addl %eax, %eax +# FULLREPORT-NEXT: [7,0] . DPPPPeER . addl %eax, %eax +# FULLREPORT-NEXT: [8,0] . DPPPPeER. addl %eax, %eax +# FULLREPORT-NEXT: [9,0] . DPPPPPeER addl %eax, %eax # FULLREPORT: Average Wait times (based on the timeline view): # FULLREPORT-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/option-all-views-2.s b/llvm/test/tools/llvm-mca/X86/option-all-views-2.s index 6c7ba1666b7bc..72cbc6f414bd3 100644 --- a/llvm/test/tools/llvm-mca/X86/option-all-views-2.s +++ b/llvm/test/tools/llvm-mca/X86/option-all-views-2.s @@ -127,19 +127,26 @@ add %eax, %eax # FULLREPORT-NEXT: 0.50 0.50 - - - - - - - - - - - - addl %eax, %eax # ALL: Timeline view: -# ALL-NEXT: 012 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# ALL: 012 # ALL-NEXT: Index 0123456789 # ALL: [0,0] DeER . . . addl %eax, %eax -# ALL-NEXT: [1,0] D=eER. . . addl %eax, %eax -# ALL-NEXT: [2,0] .D=eER . . addl %eax, %eax -# ALL-NEXT: [3,0] .D==eER . . addl %eax, %eax -# ALL-NEXT: [4,0] . D==eER . . addl %eax, %eax -# ALL-NEXT: [5,0] . D===eER . . addl %eax, %eax -# ALL-NEXT: [6,0] . D===eER. . addl %eax, %eax -# ALL-NEXT: [7,0] . D====eER . addl %eax, %eax -# ALL-NEXT: [8,0] . D====eER. addl %eax, %eax -# ALL-NEXT: [9,0] . D=====eER addl %eax, %eax +# ALL-NEXT: [1,0] DPeER. . . addl %eax, %eax +# ALL-NEXT: [2,0] .DPeER . . addl %eax, %eax +# ALL-NEXT: [3,0] .DPPeER . . addl %eax, %eax +# ALL-NEXT: [4,0] . DPPeER . . addl %eax, %eax +# ALL-NEXT: [5,0] . DPPPeER . . addl %eax, %eax +# ALL-NEXT: [6,0] . DPPPeER. . addl %eax, %eax +# ALL-NEXT: [7,0] . DPPPPeER . addl %eax, %eax +# ALL-NEXT: [8,0] . DPPPPeER. addl %eax, %eax +# ALL-NEXT: [9,0] . DPPPPPeER addl %eax, %eax # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/option-no-stats-1.s b/llvm/test/tools/llvm-mca/X86/option-no-stats-1.s index d505dd9bc3e2a..c28969feaeb79 100644 --- a/llvm/test/tools/llvm-mca/X86/option-no-stats-1.s +++ b/llvm/test/tools/llvm-mca/X86/option-no-stats-1.s @@ -71,19 +71,26 @@ add %edi, %eax # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - addl %edi, %eax # CHECK: Timeline view: -# CHECK-NEXT: 012 +# CHECK-NEXT: D: Instruction dispatched +# CHECK-NEXT: e: Instruction executing +# CHECK-NEXT: E: Instruction executed (write-back stage) +# CHECK-NEXT: P: Instruction waiting for data dependency +# CHECK-NEXT: =: Instruction waiting for available HW resource +# CHECK-NEXT: -: Instruction executed, waiting to retire in order. + +# CHECK: 012 # CHECK-NEXT: Index 0123456789 # CHECK: [0,0] DeER . . . addl %edi, %eax -# CHECK-NEXT: [1,0] D=eER. . . addl %edi, %eax -# CHECK-NEXT: [2,0] .D=eER . . addl %edi, %eax -# CHECK-NEXT: [3,0] .D==eER . . addl %edi, %eax -# CHECK-NEXT: [4,0] . D==eER . . addl %edi, %eax -# CHECK-NEXT: [5,0] . D===eER . . addl %edi, %eax -# CHECK-NEXT: [6,0] . D===eER. . addl %edi, %eax -# CHECK-NEXT: [7,0] . D====eER . addl %edi, %eax -# CHECK-NEXT: [8,0] . D====eER. addl %edi, %eax -# CHECK-NEXT: [9,0] . D=====eER addl %edi, %eax +# CHECK-NEXT: [1,0] DPeER. . . addl %edi, %eax +# CHECK-NEXT: [2,0] .DPeER . . addl %edi, %eax +# CHECK-NEXT: [3,0] .DPPeER . . addl %edi, %eax +# CHECK-NEXT: [4,0] . DPPeER . . addl %edi, %eax +# CHECK-NEXT: [5,0] . DPPPeER . . addl %edi, %eax +# CHECK-NEXT: [6,0] . DPPPeER. . addl %edi, %eax +# CHECK-NEXT: [7,0] . DPPPPeER . addl %edi, %eax +# CHECK-NEXT: [8,0] . DPPPPeER. addl %edi, %eax +# CHECK-NEXT: [9,0] . DPPPPPeER addl %edi, %eax # CHECK: Average Wait times (based on the timeline view): # CHECK-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/read-after-ld-1.s index 7b9fb758320ec..d3ba67b908216 100644 --- a/llvm/test/tools/llvm-mca/X86/read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/read-after-ld-1.s @@ -107,72 +107,78 @@ vaddps (%rax), %xmm1, %xmm1 # ZNVER4-NEXT: Block RThroughput: 3.0 # ALL: Timeline view: - -# BARCELONA-NEXT: 0123456789 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# BARCELONA: 0123456789 # BARCELONA-NEXT: Index 0123456789 -# BDVER2-NEXT: 0123456 +# BDVER2: 0123456 # BDVER2-NEXT: Index 0123456789 -# BDWELL-NEXT: 0123456 +# BDWELL: 0123456 # BDWELL-NEXT: Index 0123456789 -# BTVER2-NEXT: 0123456789 +# BTVER2: 0123456789 # BTVER2-NEXT: Index 0123456789 01234 -# HASWELL-NEXT: 012345678 +# HASWELL: 012345678 # HASWELL-NEXT: Index 0123456789 -# SANDY-NEXT: 0123456789 +# SANDY: 0123456789 # SANDY-NEXT: Index 0123456789 -# SKYLAKE-NEXT: 01234567 +# SKYLAKE: 01234567 # SKYLAKE-NEXT: Index 0123456789 -# ZNVER1-NEXT: 01234 +# ZNVER1: 01234 # ZNVER1-NEXT: Index 0123456789 -# ZNVER2-NEXT: 012345 +# ZNVER2: 012345 # ZNVER2-NEXT: Index 0123456789 -# ZNVER3-NEXT: 0123456 +# ZNVER3: 0123456 # ZNVER3-NEXT: Index 0123456789 -# ZNVER4-NEXT: 0123456 +# ZNVER4: 0123456 # ZNVER4-NEXT: Index 0123456789 # BARCELONA: [0,0] DeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1 -# BARCELONA-NEXT: [0,1] D========eeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# BARCELONA-NEXT: [0,1] DPPPPPPPPeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # BDVER2: [0,0] DeeeeeeeeeER .. vdivps %xmm0, %xmm1, %xmm1 -# BDVER2-NEXT: [0,1] D====eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# BDVER2-NEXT: [0,1] DPPPPeeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # BDWELL: [0,0] DeeeeeeeeeeeER .. vdivps %xmm0, %xmm1, %xmm1 -# BDWELL-NEXT: [0,1] D======eeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# BDWELL-NEXT: [0,1] DPPPPPPeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # BTVER2: [0,0] DeeeeeeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1 -# BTVER2-NEXT: [0,1] D==============eeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# BTVER2-NEXT: [0,1] DPPPPPPPPPPPPPPeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # HASWELL: [0,0] DeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1 -# HASWELL-NEXT: [0,1] D=======eeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# HASWELL-NEXT: [0,1] DPPPPPPPeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # SANDY: [0,0] DeeeeeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1 -# SANDY-NEXT: [0,1] D========eeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# SANDY-NEXT: [0,1] DPPPPPPPPeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # SKYLAKE: [0,0] DeeeeeeeeeeeER . . vdivps %xmm0, %xmm1, %xmm1 -# SKYLAKE-NEXT: [0,1] D=====eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# SKYLAKE-NEXT: [0,1] DPPPPPeeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # ZNVER1: [0,0] DeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1 -# ZNVER1-NEXT: [0,1] D==eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# ZNVER1-NEXT: [0,1] DPPeeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # ZNVER2: [0,0] DeeeeeeeeeeER . vdivps %xmm0, %xmm1, %xmm1 -# ZNVER2-NEXT: [0,1] D===eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# ZNVER2-NEXT: [0,1] DPPPeeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # ZNVER3: [0,0] DeeeeeeeeeeeER .. vdivps %xmm0, %xmm1, %xmm1 -# ZNVER3-NEXT: [0,1] D====eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# ZNVER3-NEXT: [0,1] DPPPPeeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # ZNVER4: [0,0] DeeeeeeeeeeeER .. vdivps %xmm0, %xmm1, %xmm1 -# ZNVER4-NEXT: [0,1] D====eeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 +# ZNVER4-NEXT: [0,1] DPPPPeeeeeeeeeeER vaddps (%rax), %xmm1, %xmm1 # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/read-after-ld-2.s index fc6a825af347e..67df32698e622 100644 --- a/llvm/test/tools/llvm-mca/X86/read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/read-after-ld-2.s @@ -62,20 +62,26 @@ cmp %edi, %edx # ZNVER2-NEXT: Block RThroughput: 1.0 # ALL: Timeline view: - -# BDWELL-NEXT: 0123456789 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# BDWELL: 0123456789 # BDWELL-NEXT: Index 0123456789 01 -# HASWELL-NEXT: 0123456789 +# HASWELL: 0123456789 # HASWELL-NEXT: Index 0123456789 012 -# SKYLAKE-NEXT: 0123456789 +# SKYLAKE: 0123456789 # SKYLAKE-NEXT: Index 0123456789 -# ZNVER1-NEXT: 0123456789 +# ZNVER1: 0123456789 # ZNVER1-NEXT: Index 0123456789 012 -# ZNVER2-NEXT: 0123456789 +# ZNVER2: 0123456789 # ZNVER2-NEXT: Index 0123456789 # BDWELL: [0,0] DeER . . . .. addl $1, %edx @@ -163,43 +169,43 @@ cmp %edi, %edx # SKYLAKE: [0,0] DeER . . . . addl $1, %edx # SKYLAKE-NEXT: [0,1] DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [0,2] DeE-------R . . addq $32, %r8 -# SKYLAKE-NEXT: [0,3] D=eE------R . . cmpl %edi, %edx -# SKYLAKE-NEXT: [1,0] D=eE------R . . addl $1, %edx +# SKYLAKE-NEXT: [0,3] DPeE------R . . cmpl %edi, %edx +# SKYLAKE-NEXT: [1,0] DPeE------R . . addl $1, %edx # SKYLAKE-NEXT: [1,1] .DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [1,2] .DeE-------R . . addq $32, %r8 -# SKYLAKE-NEXT: [1,3] .D=eE------R . . cmpl %edi, %edx -# SKYLAKE-NEXT: [2,0] .D=eE------R . . addl $1, %edx +# SKYLAKE-NEXT: [1,3] .DPeE------R . . cmpl %edi, %edx +# SKYLAKE-NEXT: [2,0] .DPeE------R . . addl $1, %edx # SKYLAKE-NEXT: [2,1] . DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [2,2] . DeE-------R . . addq $32, %r8 -# SKYLAKE-NEXT: [2,3] . D=eE------R . . cmpl %edi, %edx -# SKYLAKE-NEXT: [3,0] . D=eE------R . . addl $1, %edx +# SKYLAKE-NEXT: [2,3] . DPeE------R . . cmpl %edi, %edx +# SKYLAKE-NEXT: [3,0] . DPeE------R . . addl $1, %edx # SKYLAKE-NEXT: [3,1] . DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [3,2] . DeE-------R . . addq $32, %r8 -# SKYLAKE-NEXT: [3,3] . D=eE------R . . cmpl %edi, %edx -# SKYLAKE-NEXT: [4,0] . D=eE------R . . addl $1, %edx +# SKYLAKE-NEXT: [3,3] . DPeE------R . . cmpl %edi, %edx +# SKYLAKE-NEXT: [4,0] . DPeE------R . . addl $1, %edx # SKYLAKE-NEXT: [4,1] . DeeeeeeeeER. . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [4,2] . DeE-------R. . addq $32, %r8 -# SKYLAKE-NEXT: [4,3] . D=eE------R. . cmpl %edi, %edx -# SKYLAKE-NEXT: [5,0] . D=eE------R. . addl $1, %edx +# SKYLAKE-NEXT: [4,3] . DPeE------R. . cmpl %edi, %edx +# SKYLAKE-NEXT: [5,0] . DPeE------R. . addl $1, %edx # SKYLAKE-NEXT: [5,1] . DeeeeeeeeER . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [5,2] . DeE-------R . addq $32, %r8 -# SKYLAKE-NEXT: [5,3] . D=eE------R . cmpl %edi, %edx -# SKYLAKE-NEXT: [6,0] . D=eE------R . addl $1, %edx +# SKYLAKE-NEXT: [5,3] . DPeE------R . cmpl %edi, %edx +# SKYLAKE-NEXT: [6,0] . DPeE------R . addl $1, %edx # SKYLAKE-NEXT: [6,1] . .DeeeeeeeeER . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [6,2] . .DeE-------R . addq $32, %r8 -# SKYLAKE-NEXT: [6,3] . .D=eE------R . cmpl %edi, %edx -# SKYLAKE-NEXT: [7,0] . .D=eE------R . addl $1, %edx +# SKYLAKE-NEXT: [6,3] . .DPeE------R . cmpl %edi, %edx +# SKYLAKE-NEXT: [7,0] . .DPeE------R . addl $1, %edx # SKYLAKE-NEXT: [7,1] . . DeeeeeeeeER . vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [7,2] . . DeE-------R . addq $32, %r8 -# SKYLAKE-NEXT: [7,3] . . D=eE------R . cmpl %edi, %edx -# SKYLAKE-NEXT: [8,0] . . D=eE------R . addl $1, %edx +# SKYLAKE-NEXT: [7,3] . . DPeE------R . cmpl %edi, %edx +# SKYLAKE-NEXT: [8,0] . . DPeE------R . addl $1, %edx # SKYLAKE-NEXT: [8,1] . . DeeeeeeeeER. vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [8,2] . . DeE-------R. addq $32, %r8 -# SKYLAKE-NEXT: [8,3] . . D=eE------R. cmpl %edi, %edx -# SKYLAKE-NEXT: [9,0] . . D=eE------R. addl $1, %edx +# SKYLAKE-NEXT: [8,3] . . DPeE------R. cmpl %edi, %edx +# SKYLAKE-NEXT: [9,0] . . DPeE------R. addl $1, %edx # SKYLAKE-NEXT: [9,1] . . DeeeeeeeeER vpaddd (%r8), %ymm0, %ymm0 # SKYLAKE-NEXT: [9,2] . . DeE-------R addq $32, %r8 -# SKYLAKE-NEXT: [9,3] . . D=eE------R cmpl %edi, %edx +# SKYLAKE-NEXT: [9,3] . . DPeE------R cmpl %edi, %edx # ZNVER1: [0,0] DeER . . . . . addl $1, %edx # ZNVER1-NEXT: [0,1] DeeeeeeeeER . . . vpaddd (%r8), %ymm0, %ymm0 @@ -245,43 +251,43 @@ cmp %edi, %edx # ZNVER2: [0,0] DeER . . . . addl $1, %edx # ZNVER2-NEXT: [0,1] DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [0,2] DeE-------R . . addq $32, %r8 -# ZNVER2-NEXT: [0,3] D=eE------R . . cmpl %edi, %edx +# ZNVER2-NEXT: [0,3] DPeE------R . . cmpl %edi, %edx # ZNVER2-NEXT: [1,0] .DeE------R . . addl $1, %edx # ZNVER2-NEXT: [1,1] .DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [1,2] .DeE-------R . . addq $32, %r8 -# ZNVER2-NEXT: [1,3] .D=eE------R . . cmpl %edi, %edx +# ZNVER2-NEXT: [1,3] .DPeE------R . . cmpl %edi, %edx # ZNVER2-NEXT: [2,0] . DeE------R . . addl $1, %edx # ZNVER2-NEXT: [2,1] . DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [2,2] . DeE-------R . . addq $32, %r8 -# ZNVER2-NEXT: [2,3] . D=eE------R . . cmpl %edi, %edx +# ZNVER2-NEXT: [2,3] . DPeE------R . . cmpl %edi, %edx # ZNVER2-NEXT: [3,0] . DeE------R . . addl $1, %edx # ZNVER2-NEXT: [3,1] . DeeeeeeeeER . . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [3,2] . DeE-------R . . addq $32, %r8 -# ZNVER2-NEXT: [3,3] . D=eE------R . . cmpl %edi, %edx +# ZNVER2-NEXT: [3,3] . DPeE------R . . cmpl %edi, %edx # ZNVER2-NEXT: [4,0] . DeE------R . . addl $1, %edx # ZNVER2-NEXT: [4,1] . DeeeeeeeeER. . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [4,2] . DeE-------R. . addq $32, %r8 -# ZNVER2-NEXT: [4,3] . D=eE------R. . cmpl %edi, %edx +# ZNVER2-NEXT: [4,3] . DPeE------R. . cmpl %edi, %edx # ZNVER2-NEXT: [5,0] . DeE------R. . addl $1, %edx # ZNVER2-NEXT: [5,1] . DeeeeeeeeER . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [5,2] . DeE-------R . addq $32, %r8 -# ZNVER2-NEXT: [5,3] . D=eE------R . cmpl %edi, %edx +# ZNVER2-NEXT: [5,3] . DPeE------R . cmpl %edi, %edx # ZNVER2-NEXT: [6,0] . .DeE------R . addl $1, %edx # ZNVER2-NEXT: [6,1] . .DeeeeeeeeER . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [6,2] . .DeE-------R . addq $32, %r8 -# ZNVER2-NEXT: [6,3] . .D=eE------R . cmpl %edi, %edx +# ZNVER2-NEXT: [6,3] . .DPeE------R . cmpl %edi, %edx # ZNVER2-NEXT: [7,0] . . DeE------R . addl $1, %edx # ZNVER2-NEXT: [7,1] . . DeeeeeeeeER . vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [7,2] . . DeE-------R . addq $32, %r8 -# ZNVER2-NEXT: [7,3] . . D=eE------R . cmpl %edi, %edx +# ZNVER2-NEXT: [7,3] . . DPeE------R . cmpl %edi, %edx # ZNVER2-NEXT: [8,0] . . DeE------R . addl $1, %edx # ZNVER2-NEXT: [8,1] . . DeeeeeeeeER. vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [8,2] . . DeE-------R. addq $32, %r8 -# ZNVER2-NEXT: [8,3] . . D=eE------R. cmpl %edi, %edx +# ZNVER2-NEXT: [8,3] . . DPeE------R. cmpl %edi, %edx # ZNVER2-NEXT: [9,0] . . DeE------R. addl $1, %edx # ZNVER2-NEXT: [9,1] . . DeeeeeeeeER vpaddd (%r8), %ymm0, %ymm0 # ZNVER2-NEXT: [9,2] . . DeE-------R addq $32, %r8 -# ZNVER2-NEXT: [9,3] . . D=eE------R cmpl %edi, %edx +# ZNVER2-NEXT: [9,3] . . DPeE------R cmpl %edi, %edx # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/read-after-ld-3.s b/llvm/test/tools/llvm-mca/X86/read-after-ld-3.s index 7abeadee39925..e2b1e8f50b9dd 100644 --- a/llvm/test/tools/llvm-mca/X86/read-after-ld-3.s +++ b/llvm/test/tools/llvm-mca/X86/read-after-ld-3.s @@ -35,7 +35,14 @@ addl (%rdi), %esi # SKYLAKE-NEXT: Block RThroughput: 0.5 # ALL: Timeline view: -# ALL-NEXT: Index 012345678 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# ALL: Index 012345678 # ALL: [0,0] DeER . . addl %edi, %esi # ALL-NEXT: [0,1] DeeeeeeER addl (%rdi), %esi diff --git a/llvm/test/tools/llvm-mca/X86/sqrt-rsqrt-rcp-memop.s b/llvm/test/tools/llvm-mca/X86/sqrt-rsqrt-rcp-memop.s index abf01cb0b10f9..ed944d65f21db 100644 --- a/llvm/test/tools/llvm-mca/X86/sqrt-rsqrt-rcp-memop.s +++ b/llvm/test/tools/llvm-mca/X86/sqrt-rsqrt-rcp-memop.s @@ -32,60 +32,108 @@ rcpss (%rax), %xmm1 # ALL: [0] Code Region - test_sqrtss # ALL: Timeline view: - -# BARCELONA-NEXT: 0123456789 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# BARCELONA: 0123456789 # BARCELONA-NEXT: Index 0123456789 0123 -# BDVER2-NEXT: 012345678 +# BDVER2: 012345678 # BDVER2-NEXT: Index 0123456789 -# BROADWELL-NEXT: 0123456789 +# BROADWELL: 0123456789 # BROADWELL-NEXT: Index 0123456789 -# BTVER2-NEXT: 0123456789 0 -# BTVER2-NEXT: Index 0123456789 0123456789 - -# HASWELL-NEXT: 0123456789 +# HASWELL: 0123456789 # HASWELL-NEXT: Index 0123456789 -# SKYLAKE-NEXT: 0123456789 +# SKYLAKE: 0123456789 # SKYLAKE-NEXT: Index 0123456789 0 -# ZNVER1-NEXT: 0123456789 -# ZNVER1-NEXT: Index 0123456789 01234 - -# ZNVER2-NEXT: 0123456789 -# ZNVER2-NEXT: Index 0123456789 01234 - # BARCELONA: [0,0] DeER . . . . . leaq 8(%rsp,%rdi,2), %rax -# BARCELONA-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 +# BARCELONA-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 # BDVER2: [0,0] DeeER. . . . leaq 8(%rsp,%rdi,2), %rax -# BDVER2-NEXT: [0,1] D==eeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 +# BDVER2-NEXT: [0,1] DPPeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 # BROADWELL: [0,0] DeER . . . . leaq 8(%rsp,%rdi,2), %rax -# BROADWELL-NEXT: [0,1] D=eeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 - -# BTVER2: [0,0] DeeER. . . . . . leaq 8(%rsp,%rdi,2), %rax -# BTVER2-NEXT: [0,1] D==eeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 +# BROADWELL-NEXT: [0,1] DPeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 # HASWELL: [0,0] DeER . . . . leaq 8(%rsp,%rdi,2), %rax -# HASWELL-NEXT: [0,1] D=eeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 +# HASWELL-NEXT: [0,1] DPeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 # SKYLAKE: [0,0] DeER . . . . leaq 8(%rsp,%rdi,2), %rax -# SKYLAKE-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 +# SKYLAKE-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 + +# BTVER2: 0123456789 0 +# BTVER2-NEXT: Index 0123456789 0123456789 + +# ZNVER1: 0123456789 +# ZNVER1-NEXT: Index 0123456789 01234 + +# ZNVER2: 0123456789 +# ZNVER2-NEXT: Index 0123456789 01234 + +# BTVER2: [0,0] DeeER. . . . . . leaq 8(%rsp,%rdi,2), %rax +# BTVER2-NEXT: [0,1] DPPeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 # ZNVER1: [0,0] DeER . . . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER1-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 +# ZNVER1-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 # ZNVER2: [0,0] DeER . . . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER2-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 - -# ALL: Average Wait times (based on the timeline view): -# ALL-NEXT: [0]: Executions -# ALL-NEXT: [1]: Average time spent waiting in a scheduler's queue -# ALL-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready -# ALL-NEXT: [3]: Average time elapsed from WB until retire stage +# ZNVER2-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeER sqrtss (%rax), %xmm1 + +# BARCELONA: Average Wait times (based on the timeline view): +# BARCELONA-NEXT: [0]: Executions +# BARCELONA-NEXT: [1]: Average time spent waiting in a scheduler's queue +# BARCELONA-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# BARCELONA-NEXT: [3]: Average time elapsed from WB until retire stage + +# BDVER2: Average Wait times (based on the timeline view): +# BDVER2-NEXT: [0]: Executions +# BDVER2-NEXT: [1]: Average time spent waiting in a scheduler's queue +# BDVER2-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# BDVER2-NEXT: [3]: Average time elapsed from WB until retire stage + +# BROADWELL: Average Wait times (based on the timeline view): +# BROADWELL-NEXT: [0]: Executions +# BROADWELL-NEXT: [1]: Average time spent waiting in a scheduler's queue +# BROADWELL-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# BROADWELL-NEXT: [3]: Average time elapsed from WB until retire stage + +# BTVER2: Average Wait times (based on the timeline view): +# BTVER2-NEXT: [0]: Executions +# BTVER2-NEXT: [1]: Average time spent waiting in a scheduler's queue +# BTVER2-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# BTVER2-NEXT: [3]: Average time elapsed from WB until retire stage + +# HASWELL: Average Wait times (based on the timeline view): +# HASWELL-NEXT: [0]: Executions +# HASWELL-NEXT: [1]: Average time spent waiting in a scheduler's queue +# HASWELL-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# HASWELL-NEXT: [3]: Average time elapsed from WB until retire stage + +# SKYLAKE: Average Wait times (based on the timeline view): +# SKYLAKE-NEXT: [0]: Executions +# SKYLAKE-NEXT: [1]: Average time spent waiting in a scheduler's queue +# SKYLAKE-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# SKYLAKE-NEXT: [3]: Average time elapsed from WB until retire stage + +# ZNVER1: Average Wait times (based on the timeline view): +# ZNVER1-NEXT: [0]: Executions +# ZNVER1-NEXT: [1]: Average time spent waiting in a scheduler's queue +# ZNVER1-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# ZNVER1-NEXT: [3]: Average time elapsed from WB until retire stage + +# ZNVER2: Average Wait times (based on the timeline view): +# ZNVER2-NEXT: [0]: Executions +# ZNVER2-NEXT: [1]: Average time spent waiting in a scheduler's queue +# ZNVER2-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready +# ZNVER2-NEXT: [3]: Average time elapsed from WB until retire stage # ALL: [0] [1] [2] [3] # ALL-NEXT: 0. 1 1.0 1.0 0.0 leaq 8(%rsp,%rdi,2), %rax @@ -117,54 +165,60 @@ rcpss (%rax), %xmm1 # ALL: [1] Code Region - test_sqrtsd # ALL: Timeline view: - -# BARCELONA-NEXT: 0123456789 0 +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# BARCELONA: 0123456789 0 # BARCELONA-NEXT: Index 0123456789 0123456789 -# BDVER2-NEXT: 012345678 +# BDVER2: 012345678 # BDVER2-NEXT: Index 0123456789 -# BROADWELL-NEXT: 0123456789 +# BROADWELL: 0123456789 # BROADWELL-NEXT: Index 0123456789 01234 -# BTVER2-NEXT: 0123456789 0123456 +# BTVER2: 0123456789 0123456 # BTVER2-NEXT: Index 0123456789 0123456789 -# HASWELL-NEXT: 0123456789 +# HASWELL: 0123456789 # HASWELL-NEXT: Index 0123456789 01234 -# SKYLAKE-NEXT: 0123456789 +# SKYLAKE: 0123456789 # SKYLAKE-NEXT: Index 0123456789 0123456 -# ZNVER1-NEXT: 0123456789 0 +# ZNVER1: 0123456789 0 # ZNVER1-NEXT: Index 0123456789 0123456789 -# ZNVER2-NEXT: 0123456789 0 +# ZNVER2: 0123456789 0 # ZNVER2-NEXT: Index 0123456789 0123456789 # BARCELONA: [0,0] DeER . . . . . . leaq 8(%rsp,%rdi,2), %rax -# BARCELONA-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# BARCELONA-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # BDVER2: [0,0] DeeER. . . . leaq 8(%rsp,%rdi,2), %rax -# BDVER2-NEXT: [0,1] D==eeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# BDVER2-NEXT: [0,1] DPPeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # BROADWELL: [0,0] DeER . . . . . leaq 8(%rsp,%rdi,2), %rax -# BROADWELL-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# BROADWELL-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # BTVER2: [0,0] DeeER. . . . . . .. leaq 8(%rsp,%rdi,2), %rax -# BTVER2-NEXT: [0,1] D==eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# BTVER2-NEXT: [0,1] DPPeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # HASWELL: [0,0] DeER . . . . . leaq 8(%rsp,%rdi,2), %rax -# HASWELL-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# HASWELL-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # SKYLAKE: [0,0] DeER . . . . .. leaq 8(%rsp,%rdi,2), %rax -# SKYLAKE-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# SKYLAKE-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # ZNVER1: [0,0] DeER . . . . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER1-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# ZNVER1-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # ZNVER2: [0,0] DeER . . . . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER2-NEXT: [0,1] D=eeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 +# ZNVER2-NEXT: [0,1] DPeeeeeeeeeeeeeeeeeeeeeeeeeeeER sqrtsd (%rax), %xmm1 # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions @@ -202,41 +256,60 @@ rcpss (%rax), %xmm1 # ALL: [2] Code Region - test_rsqrtss # ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# BARCELONA: 01234 +# BARCELONA-NEXT: Index 0123456789 + +# BDVER2: 01234 +# BDVER2-NEXT: Index 0123456789 + +# BROADWELL: 0123 +# BROADWELL-NEXT: Index 0123456789 + +# BTVER2: 01 +# BTVER2-NEXT: Index 0123456789 + +# HASWELL: 0123 +# HASWELL-NEXT: Index 0123456789 -# BARCELONA-NEXT: 01234 -# BDVER2-NEXT: 01234 -# BROADWELL-NEXT: 0123 -# BTVER2-NEXT: 01 -# HASWELL-NEXT: 0123 -# SKYLAKE-NEXT: 012 -# ZNVER1-NEXT: 012345 -# ZNVER2-NEXT: 012345 +# SKYLAKE: 012 +# SKYLAKE-NEXT: Index 0123456789 -# ALL-NEXT: Index 0123456789 +# ZNVER1: 012345 +# ZNVER1-NEXT: Index 0123456789 + +# ZNVER2: 012345 +# ZNVER2-NEXT: Index 0123456789 # BARCELONA: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# BARCELONA-NEXT: [0,1] D=eeeeeeeeeeeER rsqrtss (%rax), %xmm1 +# BARCELONA-NEXT: [0,1] DPeeeeeeeeeeeER rsqrtss (%rax), %xmm1 # BDVER2: [0,0] DeeER. . . leaq 8(%rsp,%rdi,2), %rax -# BDVER2-NEXT: [0,1] D==eeeeeeeeeeER rsqrtss (%rax), %xmm1 +# BDVER2-NEXT: [0,1] DPPeeeeeeeeeeER rsqrtss (%rax), %xmm1 # BROADWELL: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# BROADWELL-NEXT: [0,1] D=eeeeeeeeeeER rsqrtss (%rax), %xmm1 +# BROADWELL-NEXT: [0,1] DPeeeeeeeeeeER rsqrtss (%rax), %xmm1 # BTVER2: [0,0] DeeER. .. leaq 8(%rsp,%rdi,2), %rax -# BTVER2-NEXT: [0,1] D==eeeeeeeER rsqrtss (%rax), %xmm1 +# BTVER2-NEXT: [0,1] DPPeeeeeeeER rsqrtss (%rax), %xmm1 # HASWELL: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# HASWELL-NEXT: [0,1] D=eeeeeeeeeeER rsqrtss (%rax), %xmm1 +# HASWELL-NEXT: [0,1] DPeeeeeeeeeeER rsqrtss (%rax), %xmm1 # SKYLAKE: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# SKYLAKE-NEXT: [0,1] D=eeeeeeeeeER rsqrtss (%rax), %xmm1 +# SKYLAKE-NEXT: [0,1] DPeeeeeeeeeER rsqrtss (%rax), %xmm1 # ZNVER1: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER1-NEXT: [0,1] D=eeeeeeeeeeeeER rsqrtss (%rax), %xmm1 +# ZNVER1-NEXT: [0,1] DPeeeeeeeeeeeeER rsqrtss (%rax), %xmm1 # ZNVER2: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER2-NEXT: [0,1] D=eeeeeeeeeeeeER rsqrtss (%rax), %xmm1 +# ZNVER2-NEXT: [0,1] DPeeeeeeeeeeeeER rsqrtss (%rax), %xmm1 # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions @@ -274,41 +347,60 @@ rcpss (%rax), %xmm1 # ALL: [3] Code Region - test_rcp # ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. + +# BARCELONA: 01234 +# BARCELONA-NEXT: Index 0123456789 + +# BDVER2: 01234 +# BDVER2-NEXT: Index 0123456789 + +# BROADWELL: 0123 +# BROADWELL-NEXT: Index 0123456789 + +# BTVER2: 01 +# BTVER2-NEXT: Index 0123456789 + +# HASWELL: 0123 +# HASWELL-NEXT: Index 0123456789 + +# SKYLAKE: 012 +# SKYLAKE-NEXT: Index 0123456789 -# BARCELONA-NEXT: 01234 -# BDVER2-NEXT: 01234 -# BROADWELL-NEXT: 0123 -# BTVER2-NEXT: 01 -# HASWELL-NEXT: 0123 -# SKYLAKE-NEXT: 012 -# ZNVER1-NEXT: 012345 -# ZNVER2-NEXT: 012345 +# ZNVER1: 012345 +# ZNVER1-NEXT: Index 0123456789 -# ALL-NEXT: Index 0123456789 +# ZNVER2: 012345 +# ZNVER2-NEXT: Index 0123456789 # BARCELONA: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# BARCELONA-NEXT: [0,1] D=eeeeeeeeeeeER rcpss (%rax), %xmm1 +# BARCELONA-NEXT: [0,1] DPeeeeeeeeeeeER rcpss (%rax), %xmm1 # BDVER2: [0,0] DeeER. . . leaq 8(%rsp,%rdi,2), %rax -# BDVER2-NEXT: [0,1] D==eeeeeeeeeeER rcpss (%rax), %xmm1 +# BDVER2-NEXT: [0,1] DPPeeeeeeeeeeER rcpss (%rax), %xmm1 # BROADWELL: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# BROADWELL-NEXT: [0,1] D=eeeeeeeeeeER rcpss (%rax), %xmm1 +# BROADWELL-NEXT: [0,1] DPeeeeeeeeeeER rcpss (%rax), %xmm1 # BTVER2: [0,0] DeeER. .. leaq 8(%rsp,%rdi,2), %rax -# BTVER2-NEXT: [0,1] D==eeeeeeeER rcpss (%rax), %xmm1 +# BTVER2-NEXT: [0,1] DPPeeeeeeeER rcpss (%rax), %xmm1 # HASWELL: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# HASWELL-NEXT: [0,1] D=eeeeeeeeeeER rcpss (%rax), %xmm1 +# HASWELL-NEXT: [0,1] DPeeeeeeeeeeER rcpss (%rax), %xmm1 # SKYLAKE: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# SKYLAKE-NEXT: [0,1] D=eeeeeeeeeER rcpss (%rax), %xmm1 +# SKYLAKE-NEXT: [0,1] DPeeeeeeeeeER rcpss (%rax), %xmm1 # ZNVER1: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER1-NEXT: [0,1] D=eeeeeeeeeeeeER rcpss (%rax), %xmm1 +# ZNVER1-NEXT: [0,1] DPeeeeeeeeeeeeER rcpss (%rax), %xmm1 # ZNVER2: [0,0] DeER . . . leaq 8(%rsp,%rdi,2), %rax -# ZNVER2-NEXT: [0,1] D=eeeeeeeeeeeeER rcpss (%rax), %xmm1 +# ZNVER2-NEXT: [0,1] DPeeeeeeeeeeeeER rcpss (%rax), %xmm1 # ALL: Average Wait times (based on the timeline view): # ALL-NEXT: [0]: Executions diff --git a/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-1.s b/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-1.s index cdf13271722ef..febdc80ae126f 100644 --- a/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-1.s +++ b/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-1.s @@ -97,38 +97,37 @@ vblendvps %xmm1, (%rdi), %xmm2, %xmm3 # ZNVER2-NEXT: IPC: 0.18 # ZNVER2-NEXT: Block RThroughput: 0.5 -# BDVER2: Timeline view: -# BDVER2-NEXT: Index 0123456789 +# ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. -# BDWELL: Timeline view: -# BDWELL-NEXT: Index 0123456789 +# BDVER2: Index 0123456789 -# BTVER2: Timeline view: -# BTVER2-NEXT: 0 +# BDWELL: Index 0123456789 + +# BTVER2: 0 # BTVER2-NEXT: Index 0123456789 -# HASWELL: Timeline view: -# HASWELL-NEXT: 0 +# HASWELL: 0 # HASWELL-NEXT: Index 0123456789 -# IVY: Timeline view: -# IVY-NEXT: 0 +# IVY: 0 # IVY-NEXT: Index 0123456789 -# SANDY: Timeline view: -# SANDY-NEXT: 0 +# SANDY: 0 # SANDY-NEXT: Index 0123456789 -# SKYLAKE: Timeline view: -# SKYLAKE-NEXT: 0 +# SKYLAKE: 0 # SKYLAKE-NEXT: Index 0123456789 -# ZNVER1: Timeline view: -# ZNVER1-NEXT: 0 +# ZNVER1: 0 # ZNVER1-NEXT: Index 0123456789 -# ZNVER2: Timeline view: -# ZNVER2-NEXT: 0 +# ZNVER2: 0 # ZNVER2-NEXT: Index 0123456789 # BDVER2: [0,0] DeeeeeER . vaddps %xmm0, %xmm0, %xmm1 diff --git a/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-2.s b/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-2.s index 46cf892796a78..bd5dcb0734191 100644 --- a/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-2.s +++ b/llvm/test/tools/llvm-mca/X86/variable-blend-read-after-ld-2.s @@ -97,38 +97,37 @@ vblendvps %xmm1, (%rdi), %xmm2, %xmm3 # ZNVER2-NEXT: IPC: 0.18 # ZNVER2-NEXT: Block RThroughput: 0.5 -# BDVER2: Timeline view: -# BDVER2-NEXT: Index 0123456789 +# ALL: Timeline view: +# ALL-NEXT: D: Instruction dispatched +# ALL-NEXT: e: Instruction executing +# ALL-NEXT: E: Instruction executed (write-back stage) +# ALL-NEXT: P: Instruction waiting for data dependency +# ALL-NEXT: =: Instruction waiting for available HW resource +# ALL-NEXT: -: Instruction executed, waiting to retire in order. -# BDWELL: Timeline view: -# BDWELL-NEXT: Index 0123456789 +# BDVER2: Index 0123456789 -# BTVER2: Timeline view: -# BTVER2-NEXT: 0 +# BDWELL: Index 0123456789 + +# BTVER2: 0 # BTVER2-NEXT: Index 0123456789 -# HASWELL: Timeline view: -# HASWELL-NEXT: 0 +# HASWELL: 0 # HASWELL-NEXT: Index 0123456789 -# IVY: Timeline view: -# IVY-NEXT: 0 +# IVY: 0 # IVY-NEXT: Index 0123456789 -# SANDY: Timeline view: -# SANDY-NEXT: 0 +# SANDY: 0 # SANDY-NEXT: Index 0123456789 -# SKYLAKE: Timeline view: -# SKYLAKE-NEXT: 0 +# SKYLAKE: 0 # SKYLAKE-NEXT: Index 0123456789 -# ZNVER1: Timeline view: -# ZNVER1-NEXT: 0 +# ZNVER1: 0 # ZNVER1-NEXT: Index 0123456789 -# ZNVER2: Timeline view: -# ZNVER2-NEXT: 0 +# ZNVER2: 0 # ZNVER2-NEXT: Index 0123456789 # BDVER2: [0,0] DeeeeeER . vaddps %xmm0, %xmm0, %xmm2 diff --git a/llvm/tools/llvm-mca/Views/TimelineView.cpp b/llvm/tools/llvm-mca/Views/TimelineView.cpp index 2eca48aadfd70..1ac9e4bb4bbed 100644 --- a/llvm/tools/llvm-mca/Views/TimelineView.cpp +++ b/llvm/tools/llvm-mca/Views/TimelineView.cpp @@ -99,6 +99,10 @@ void TimelineView::onEvent(const HWInstructionEvent &Event) { if (Timeline[Index].CycleDispatched == -1) Timeline[Index].CycleDispatched = static_cast(CurrentCycle); break; + case HWInstructionEvent::Pending: { + Timeline[Index].CyclePending = CurrentCycle; + break; + } default: return; } @@ -231,7 +235,11 @@ void TimelineView::printTimelineViewEntry(formatted_raw_ostream &OS, // Zero latency instructions have the same value for CycleDispatched, // CycleIssued and CycleExecuted. for (unsigned I = CycleDispatched + 1, E = Entry.CycleIssued; I < E; ++I) - OS << TimelineView::DisplayChar::Waiting; + if (I >= Entry.CycleReady) + OS << TimelineView::DisplayChar::Waiting; + else + OS << TimelineView::DisplayChar::Pending; + if (Entry.CycleIssued == Entry.CycleExecuted) OS << TimelineView::DisplayChar::DisplayChar::Executed; else { @@ -255,7 +263,14 @@ void TimelineView::printTimelineViewEntry(formatted_raw_ostream &OS, } static void printTimelineHeader(formatted_raw_ostream &OS, unsigned Cycles) { - OS << "\n\nTimeline view:\n"; + OS << "\n\nTimeline view:\n" + "D: Instruction dispatched\n" + "e: Instruction executing\n" + "E: Instruction executed (write-back stage)\n" + "P: Instruction waiting for data dependency\n" + "=: Instruction waiting for available HW resource\n" + "-: Instruction executed, waiting to retire in order.\n" + "\n"; if (Cycles >= 10) { OS.PadToColumn(10); for (unsigned I = 0; I <= Cycles; ++I) { diff --git a/llvm/tools/llvm-mca/Views/TimelineView.h b/llvm/tools/llvm-mca/Views/TimelineView.h index 81be8244b779d..918b57f832f01 100644 --- a/llvm/tools/llvm-mca/Views/TimelineView.h +++ b/llvm/tools/llvm-mca/Views/TimelineView.h @@ -126,6 +126,7 @@ class TimelineView : public InstructionView { struct TimelineViewEntry { int CycleDispatched; // A negative value is an "invalid cycle". + unsigned CyclePending; unsigned CycleReady; unsigned CycleIssued; unsigned CycleExecuted; @@ -156,6 +157,7 @@ class TimelineView : public InstructionView { static const char Dispatched = 'D'; static const char Executed = 'E'; static const char Retired = 'R'; + static const char Pending = 'P'; static const char Waiting = '='; // Instruction is waiting in the scheduler. static const char Executing = 'e'; static const char RetireLag = '-'; // The instruction is waiting to retire.