diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index bd6aef1..a3d510d 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -36,12 +36,12 @@ jobs: - name: Run conversion on reference example run: | uScope --input-file examples/reference/reference.out \ - --output-file reference.json + --output-dir res/ - name: Compare output with reference run: | - gunzip -c examples/reference/reference.json.gz > expected.json - diff -u reference.json expected.json + gunzip -c examples/reference/reference_0.json.gz > expected.json + diff -u res/reference_0.json expected.json - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 diff --git a/examples/reference/reference.S b/examples/reference/reference.S index e5283c2..ebf5e69 100644 --- a/examples/reference/reference.S +++ b/examples/reference/reference.S @@ -1,3 +1,5 @@ +.option norvc + .section .data .align 4 int_a: .word 10, 20 diff --git a/examples/reference/reference.json.gz b/examples/reference/reference.json.gz deleted file mode 100644 index 83b6b6b..0000000 Binary files a/examples/reference/reference.json.gz and /dev/null differ diff --git a/examples/reference/reference.out b/examples/reference/reference.out index f17a05a..fad7124 100644 --- a/examples/reference/reference.out +++ b/examples/reference/reference.out @@ -12,7 +12,7 @@ O3PipeView:dispatch:80500 O3PipeView:issue:80500 O3PipeView:complete:81000 O3PipeView:retire:137000:store:0 -O3PipeView:fetch:78500:0x00010148:0:2:ld a0, 548(a0):MemRead +O3PipeView:fetch:78500:0x00010148:0:2:ld a0, 532(a0):MemRead O3PipeView:decode:79000 O3PipeView:rename:79500 O3PipeView:dispatch:80500 @@ -33,14 +33,14 @@ O3PipeView:dispatch:80500 O3PipeView:issue:80500 O3PipeView:complete:81000 O3PipeView:retire:141500:store:0 -O3PipeView:fetch:78500:0x00010150:0:4:ld a1, 548(a1):MemRead +O3PipeView:fetch:78500:0x00010150:0:4:ld a1, 532(a1):MemRead O3PipeView:decode:79000 O3PipeView:rename:79500 O3PipeView:dispatch:80500 O3PipeView:issue:81000 O3PipeView:complete:81500 O3PipeView:retire:141000:store:0 -O3PipeView:fetch:78500:0x00010158:0:6:ld a2, 548(a2):MemRead +O3PipeView:fetch:78500:0x00010158:0:6:ld a2, 532(a2):MemRead O3PipeView:decode:79000 O3PipeView:rename:79500 O3PipeView:dispatch:80500 @@ -54,1284 +54,1333 @@ O3PipeView:dispatch:80500 O3PipeView:issue:136000 O3PipeView:complete:136500 O3PipeView:retire:189000:store:0 -O3PipeView:fetch:79000:0x00010164:0:9:lw a5, 0(a1):MemRead +O3PipeView:fetch:79000:0x0001017c:0:15:addi a0, a0, 4:IntAlu O3PipeView:decode:79500 O3PipeView:rename:80000 O3PipeView:dispatch:81000 +O3PipeView:issue:136000 +O3PipeView:complete:136500 +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:130000:0x00010180:0:16:addi a1, a1, 4:IntAlu +O3PipeView:decode:130500 +O3PipeView:rename:131000 +O3PipeView:dispatch:132000 O3PipeView:issue:140000 O3PipeView:complete:140500 -O3PipeView:retire:193500:store:0 -O3PipeView:fetch:130000:0x00010194:0:21:auipc a0, 1:IntAlu +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:130000:0x00010184:0:17:addi a2, a2, 4:IntAlu +O3PipeView:decode:130500 +O3PipeView:rename:131000 +O3PipeView:dispatch:132000 +O3PipeView:issue:140500 +O3PipeView:complete:141000 +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:130000:0x00010190:0:20:auipc a0, 1:IntAlu O3PipeView:decode:130500 O3PipeView:rename:131000 O3PipeView:dispatch:132000 O3PipeView:issue:132000 O3PipeView:complete:132500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130000:0x00010198:0:22:ld a0, 468(a0):MemRead +O3PipeView:fetch:130000:0x00010194:0:21:ld a0, 456(a0):MemRead O3PipeView:decode:130500 O3PipeView:rename:131000 O3PipeView:dispatch:132000 O3PipeView:issue:132500 O3PipeView:complete:133000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130000:0x0001019c:0:23:auipc a1, 1:IntAlu +O3PipeView:fetch:130000:0x00010198:0:22:auipc a1, 1:IntAlu O3PipeView:decode:130500 O3PipeView:rename:131000 O3PipeView:dispatch:132000 O3PipeView:issue:132000 O3PipeView:complete:132500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101a0:0:24:ld a1, 468(a1):MemRead +O3PipeView:fetch:130000:0x0001019c:0:23:ld a1, 456(a1):MemRead +O3PipeView:decode:130500 +O3PipeView:rename:131000 +O3PipeView:dispatch:132000 +O3PipeView:issue:132500 +O3PipeView:complete:133000 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:130500:0x000101a0:0:24:addi a3, zero, 2:IntAlu O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:132500 O3PipeView:complete:133000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101a4:0:25:addi a3, zero, 2:IntAlu +O3PipeView:fetch:130500:0x000101a4:0:25:lw a4, 0(a0):MemRead O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 -O3PipeView:issue:132500 -O3PipeView:complete:133000 +O3PipeView:issue:0 +O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101a8:0:26:lw a4, 0(a0):MemRead +O3PipeView:fetch:130500:0x000101a8:0:26:lw a5, 0(a1):MemRead O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101ac:0:27:lw a5, 0(a1):MemRead +O3PipeView:fetch:130500:0x000101ac:0:27:mul a6, a4, a5:IntMult O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101b0:0:28:mul a6, a4, a5:IntMult +O3PipeView:fetch:130500:0x000101b0:0:28:div a7, a4, a5:IntDiv O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101b4:0:29:div a7, a4, a5:IntDiv +O3PipeView:fetch:130500:0x000101b4:0:29:sw s2, 0(a2):MemWrite O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101b8:0:30:add s2, a6, a7:IntAlu +O3PipeView:fetch:130500:0x000101b8:0:30:addi a0, a0, 4:IntAlu O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130500:0x000101bc:0:31:sw s2, 0(a2):MemWrite +O3PipeView:fetch:130500:0x000101bc:0:31:addi a1, a1, 4:IntAlu O3PipeView:decode:131000 O3PipeView:rename:131500 O3PipeView:dispatch:132500 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:130000:0x00010180:0:16:addi a0, a0, 4:IntAlu -O3PipeView:decode:130500 -O3PipeView:rename:131000 -O3PipeView:dispatch:132000 -O3PipeView:issue:136000 -O3PipeView:complete:136500 -O3PipeView:retire:195000:store:0 -O3PipeView:fetch:130000:0x00010184:0:17:addi a1, a1, 4:IntAlu -O3PipeView:decode:130500 -O3PipeView:rename:131000 -O3PipeView:dispatch:132000 -O3PipeView:issue:140000 -O3PipeView:complete:140500 -O3PipeView:retire:195000:store:0 -O3PipeView:fetch:130000:0x00010188:0:18:addi a2, a2, 4:IntAlu -O3PipeView:decode:130500 -O3PipeView:rename:131000 -O3PipeView:dispatch:132000 -O3PipeView:issue:140500 -O3PipeView:complete:141000 -O3PipeView:retire:195000:store:0 -O3PipeView:fetch:130000:0x0001018c:0:19:addi a3, a3, -1:IntAlu +O3PipeView:fetch:130000:0x00010188:0:18:addi a3, a3, -1:IntAlu O3PipeView:decode:130500 O3PipeView:rename:131000 O3PipeView:dispatch:132000 O3PipeView:issue:132000 O3PipeView:complete:132500 -O3PipeView:retire:195000:store:0 -O3PipeView:fetch:130000:0x00010190:0:20:bne a3, zero, -48:IntAlu +O3PipeView:retire:194500:store:0 +O3PipeView:fetch:130000:0x0001018c:0:19:bne a3, zero, -44:IntAlu O3PipeView:decode:130500 O3PipeView:rename:131000 O3PipeView:dispatch:132000 O3PipeView:issue:132500 O3PipeView:complete:133000 -O3PipeView:retire:195000:store:0 +O3PipeView:retire:194500:store:0 O3PipeView:fetch:135500:0x00010160:0:32:lw a4, 0(a0):MemRead O3PipeView:decode:136000 O3PipeView:rename:136500 O3PipeView:dispatch:137500 O3PipeView:issue:137500 O3PipeView:complete:138000 -O3PipeView:retire:195000:store:0 +O3PipeView:retire:194500:store:0 O3PipeView:fetch:135500:0x00010164:0:33:lw a5, 0(a1):MemRead O3PipeView:decode:136000 O3PipeView:rename:136500 O3PipeView:dispatch:137500 O3PipeView:issue:140500 O3PipeView:complete:141000 -O3PipeView:retire:195000:store:0 -O3PipeView:fetch:79000:0x00010174:0:13:or s3, a4, a5:IntAlu -O3PipeView:decode:79500 -O3PipeView:rename:80000 -O3PipeView:dispatch:81000 -O3PipeView:issue:192500 -O3PipeView:complete:193000 -O3PipeView:retire:194000:store:0 -O3PipeView:fetch:79000:0x00010170:0:12:and s2, a4, a5:IntAlu -O3PipeView:decode:79500 -O3PipeView:rename:80000 -O3PipeView:dispatch:81000 -O3PipeView:issue:192500 -O3PipeView:complete:193000 -O3PipeView:retire:194000:store:0 -O3PipeView:fetch:79000:0x0001016c:0:11:sub a7, a4, a5:IntAlu -O3PipeView:decode:79500 -O3PipeView:rename:80000 -O3PipeView:dispatch:81000 -O3PipeView:issue:192500 -O3PipeView:complete:193000 -O3PipeView:retire:194000:store:0 -O3PipeView:fetch:79000:0x00010168:0:10:add a6, a4, a5:IntAlu +O3PipeView:retire:194500:store:0 +O3PipeView:fetch:79000:0x00010164:0:9:lw a5, 0(a1):MemRead O3PipeView:decode:79500 O3PipeView:rename:80000 O3PipeView:dispatch:81000 -O3PipeView:issue:192500 -O3PipeView:complete:193000 -O3PipeView:retire:194000:store:0 -O3PipeView:fetch:135500:0x00010168:0:34:add a6, a4, a5:IntAlu -O3PipeView:decode:136000 -O3PipeView:rename:136500 -O3PipeView:dispatch:137500 -O3PipeView:issue:192500 -O3PipeView:complete:193000 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:135500:0x0001016c:0:35:sub a7, a4, a5:IntAlu +O3PipeView:issue:140000 +O3PipeView:complete:140500 +O3PipeView:retire:193500:store:0 +O3PipeView:fetch:135500:0x0001017c:0:39:addi a0, a0, 4:IntAlu O3PipeView:decode:136000 O3PipeView:rename:136500 O3PipeView:dispatch:137500 -O3PipeView:issue:192500 -O3PipeView:complete:193000 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:136500:0x00010180:0:40:addi a0, a0, 4:IntAlu -O3PipeView:decode:137000 -O3PipeView:rename:137500 -O3PipeView:dispatch:138500 -O3PipeView:issue:138500 -O3PipeView:complete:139000 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:136500:0x00010184:0:41:addi a1, a1, 4:IntAlu +O3PipeView:issue:137500 +O3PipeView:complete:138000 +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:136500:0x00010180:0:40:addi a1, a1, 4:IntAlu O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:140500 O3PipeView:complete:141000 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:135500:0x00010178:0:38:add s4, a6, a7:IntAlu -O3PipeView:decode:136000 -O3PipeView:rename:136500 -O3PipeView:dispatch:137500 -O3PipeView:issue:193000 -O3PipeView:complete:193500 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:135500:0x00010174:0:37:or s3, a4, a5:IntAlu -O3PipeView:decode:136000 -O3PipeView:rename:136500 -O3PipeView:dispatch:137500 -O3PipeView:issue:193000 -O3PipeView:complete:193500 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:135500:0x00010170:0:36:and s2, a4, a5:IntAlu -O3PipeView:decode:136000 -O3PipeView:rename:136500 -O3PipeView:dispatch:137500 -O3PipeView:issue:193000 -O3PipeView:complete:193500 -O3PipeView:retire:195500:store:0 -O3PipeView:fetch:79000:0x00010178:0:14:add s4, a6, a7:IntAlu -O3PipeView:decode:79500 -O3PipeView:rename:80000 -O3PipeView:dispatch:81000 -O3PipeView:issue:193000 -O3PipeView:complete:193500 -O3PipeView:retire:194500:store:0 -O3PipeView:fetch:136500:0x00010188:0:42:addi a2, a2, 4:IntAlu +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:136500:0x00010184:0:41:addi a2, a2, 4:IntAlu O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:141000 O3PipeView:complete:141500 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:136500:0x0001018c:0:43:addi a3, a3, -1:IntAlu +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:136500:0x00010188:0:42:addi a3, a3, -1:IntAlu O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:138500 O3PipeView:complete:139000 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:136500:0x00010190:0:44:bne a3, zero, -48:IntAlu +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:136500:0x0001018c:0:43:bne a3, zero, -44:IntAlu O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:139000 O3PipeView:complete:139500 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:136500:0x00010194:0:45:auipc a0, 1:IntAlu +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:136500:0x00010190:0:44:auipc a0, 1:IntAlu O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:138500 O3PipeView:complete:139000 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:136500:0x00010198:0:46:ld a0, 468(a0):MemRead +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:136500:0x00010194:0:45:ld a0, 456(a0):MemRead O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:139000 O3PipeView:complete:139500 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:136500:0x0001019c:0:47:auipc a1, 1:IntAlu +O3PipeView:retire:195000:store:0 +O3PipeView:fetch:135500:0x0001016c:0:35:sub a7, a4, a5:IntAlu +O3PipeView:decode:136000 +O3PipeView:rename:136500 +O3PipeView:dispatch:137500 +O3PipeView:issue:192500 +O3PipeView:complete:193000 +O3PipeView:retire:194500:store:0 +O3PipeView:fetch:135500:0x00010168:0:34:add a6, a4, a5:IntAlu +O3PipeView:decode:136000 +O3PipeView:rename:136500 +O3PipeView:dispatch:137500 +O3PipeView:issue:192500 +O3PipeView:complete:193000 +O3PipeView:retire:194500:store:0 +O3PipeView:fetch:79000:0x00010174:0:13:or s3, a4, a5:IntAlu +O3PipeView:decode:79500 +O3PipeView:rename:80000 +O3PipeView:dispatch:81000 +O3PipeView:issue:192500 +O3PipeView:complete:193000 +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:79000:0x00010170:0:12:and s2, a4, a5:IntAlu +O3PipeView:decode:79500 +O3PipeView:rename:80000 +O3PipeView:dispatch:81000 +O3PipeView:issue:192500 +O3PipeView:complete:193000 +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:79000:0x0001016c:0:11:sub a7, a4, a5:IntAlu +O3PipeView:decode:79500 +O3PipeView:rename:80000 +O3PipeView:dispatch:81000 +O3PipeView:issue:192500 +O3PipeView:complete:193000 +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:79000:0x00010168:0:10:add a6, a4, a5:IntAlu +O3PipeView:decode:79500 +O3PipeView:rename:80000 +O3PipeView:dispatch:81000 +O3PipeView:issue:192500 +O3PipeView:complete:193000 +O3PipeView:retire:194000:store:0 +O3PipeView:fetch:136500:0x00010198:0:46:auipc a1, 1:IntAlu O3PipeView:decode:137000 O3PipeView:rename:137500 O3PipeView:dispatch:138500 O3PipeView:issue:138500 O3PipeView:complete:139000 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:137000:0x000101a0:0:48:ld a1, 468(a1):MemRead -O3PipeView:decode:137500 -O3PipeView:rename:138000 -O3PipeView:dispatch:139000 +O3PipeView:retire:195500:store:0 +O3PipeView:fetch:136500:0x0001019c:0:47:ld a1, 456(a1):MemRead +O3PipeView:decode:137000 +O3PipeView:rename:137500 +O3PipeView:dispatch:138500 O3PipeView:issue:139000 O3PipeView:complete:139500 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:137000:0x000101a4:0:49:addi a3, zero, 2:IntAlu +O3PipeView:retire:195500:store:0 +O3PipeView:fetch:137000:0x000101a0:0:48:addi a3, zero, 2:IntAlu O3PipeView:decode:137500 O3PipeView:rename:138000 O3PipeView:dispatch:139000 O3PipeView:issue:139000 O3PipeView:complete:139500 -O3PipeView:retire:196000:store:0 -O3PipeView:fetch:79000:0x0001017c:0:15:sw s4, 0(a2):MemWrite -O3PipeView:decode:79500 -O3PipeView:rename:80000 -O3PipeView:dispatch:81000 -O3PipeView:issue:193500 -O3PipeView:complete:194000 -O3PipeView:retire:195000:store:197000 -O3PipeView:fetch:137000:0x000101a8:0:50:lw a4, 0(a0):MemRead +O3PipeView:retire:195500:store:0 +O3PipeView:fetch:137000:0x000101a4:0:49:lw a4, 0(a0):MemRead O3PipeView:decode:137500 O3PipeView:rename:138000 O3PipeView:dispatch:139000 O3PipeView:issue:140500 O3PipeView:complete:141000 -O3PipeView:retire:196500:store:0 -O3PipeView:fetch:137000:0x000101ac:0:51:lw a5, 0(a1):MemRead +O3PipeView:retire:195500:store:0 +O3PipeView:fetch:137000:0x000101a8:0:50:lw a5, 0(a1):MemRead O3PipeView:decode:137500 O3PipeView:rename:138000 O3PipeView:dispatch:139000 O3PipeView:issue:141000 O3PipeView:complete:141500 -O3PipeView:retire:196500:store:0 -O3PipeView:fetch:137000:0x000101b0:0:52:mul a6, a4, a5:IntMult +O3PipeView:retire:195500:store:0 +O3PipeView:fetch:135500:0x00010174:0:37:or s3, a4, a5:IntAlu +O3PipeView:decode:136000 +O3PipeView:rename:136500 +O3PipeView:dispatch:137500 +O3PipeView:issue:193000 +O3PipeView:complete:193500 +O3PipeView:retire:194500:store:0 +O3PipeView:fetch:135500:0x00010170:0:36:and s2, a4, a5:IntAlu +O3PipeView:decode:136000 +O3PipeView:rename:136500 +O3PipeView:dispatch:137500 +O3PipeView:issue:193000 +O3PipeView:complete:193500 +O3PipeView:retire:194500:store:0 +O3PipeView:fetch:137000:0x000101ac:0:51:mul a6, a4, a5:IntMult O3PipeView:decode:137500 O3PipeView:rename:138000 O3PipeView:dispatch:139000 O3PipeView:issue:192500 O3PipeView:complete:194000 -O3PipeView:retire:196500:store:0 -O3PipeView:fetch:135500:0x0001017c:0:39:sw s4, 0(a2):MemWrite -O3PipeView:decode:136000 -O3PipeView:rename:136500 -O3PipeView:dispatch:137500 -O3PipeView:issue:193500 -O3PipeView:complete:194000 -O3PipeView:retire:195500:store:197500 -O3PipeView:fetch:182500:0x000101d0:0:60:auipc a0, 1:IntAlu +O3PipeView:retire:195500:store:0 +O3PipeView:fetch:182500:0x000101c8:0:58:auipc a0, 1:IntAlu O3PipeView:decode:183000 O3PipeView:rename:183500 O3PipeView:dispatch:184500 O3PipeView:issue:184500 O3PipeView:complete:185000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:182500:0x000101d8:0:62:auipc a1, 1:IntAlu +O3PipeView:fetch:182500:0x000101cc:0:59:ld a0, 424(a0):MemRead +O3PipeView:decode:183000 +O3PipeView:rename:183500 +O3PipeView:dispatch:184500 +O3PipeView:issue:185000 +O3PipeView:complete:185500 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:182500:0x000101d0:0:60:auipc a1, 1:IntAlu O3PipeView:decode:183000 O3PipeView:rename:183500 O3PipeView:dispatch:184500 O3PipeView:issue:184500 O3PipeView:complete:185000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101e0:0:64:auipc a2, 1:IntAlu +O3PipeView:fetch:182500:0x000101d4:0:61:ld a1, 424(a1):MemRead +O3PipeView:decode:183000 +O3PipeView:rename:183500 +O3PipeView:dispatch:184500 +O3PipeView:issue:185000 +O3PipeView:complete:185500 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:182500:0x000101d8:0:62:auipc a2, 1:IntAlu +O3PipeView:decode:183000 +O3PipeView:rename:183500 +O3PipeView:dispatch:184500 +O3PipeView:issue:184500 +O3PipeView:complete:185000 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:183000:0x000101e0:0:64:addi a3, zero, 2:IntAlu O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 O3PipeView:issue:185000 O3PipeView:complete:185500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101e8:0:66:addi a3, zero, 2:IntAlu +O3PipeView:fetch:183000:0x000101e4:0:65:flw ft0, 0(a0):FloatMemRead O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 -O3PipeView:issue:185000 -O3PipeView:complete:185500 +O3PipeView:issue:0 +O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101ec:0:67:flw ft0, 0(a0):FloatMemRead +O3PipeView:fetch:183000:0x000101e8:0:66:flw ft1, 0(a1):FloatMemRead O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101f0:0:68:flw ft1, 0(a1):FloatMemRead +O3PipeView:fetch:183000:0x000101ec:0:67:fadd_s ft2, ft0, ft1:FloatAdd O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101f4:0:69:fadd_s ft2, ft0, ft1:FloatAdd +O3PipeView:fetch:183000:0x000101f0:0:68:fsub_s ft3, ft0, ft1:FloatAdd O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101f8:0:70:fsub_s ft3, ft0, ft1:FloatAdd +O3PipeView:fetch:183000:0x000101f4:0:69:feq_s a4, ft0, ft1:FloatCmp O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101fc:0:71:feq_s a4, ft0, ft1:FloatCmp +O3PipeView:fetch:183000:0x000101f8:0:70:fsw ft2, 0(a2):FloatMemWrite O3PipeView:decode:183500 O3PipeView:rename:184000 O3PipeView:dispatch:185000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:182500:0x000101c0:0:56:addi a0, a0, 4:IntAlu -O3PipeView:decode:183000 -O3PipeView:rename:183500 -O3PipeView:dispatch:184500 -O3PipeView:issue:184500 -O3PipeView:complete:185000 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:182500:0x000101c4:0:57:addi a1, a1, 4:IntAlu -O3PipeView:decode:183000 -O3PipeView:rename:183500 -O3PipeView:dispatch:184500 -O3PipeView:issue:184500 -O3PipeView:complete:185000 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:182500:0x000101c8:0:58:addi a3, a3, -1:IntAlu +O3PipeView:fetch:183000:0x000101fc:0:71:addi a2, a2, 4:IntAlu +O3PipeView:decode:183500 +O3PipeView:rename:184000 +O3PipeView:dispatch:185000 +O3PipeView:issue:0 +O3PipeView:complete:0 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:137000:0x000101b8:0:54:addi a0, a0, 4:IntAlu +O3PipeView:decode:137500 +O3PipeView:rename:138000 +O3PipeView:dispatch:139000 +O3PipeView:issue:140500 +O3PipeView:complete:141000 +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:137000:0x000101bc:0:55:addi a1, a1, 4:IntAlu +O3PipeView:decode:137500 +O3PipeView:rename:138000 +O3PipeView:dispatch:139000 +O3PipeView:issue:141000 +O3PipeView:complete:141500 +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:182500:0x000101c0:0:56:addi a3, a3, -1:IntAlu O3PipeView:decode:183000 O3PipeView:rename:183500 O3PipeView:dispatch:184500 O3PipeView:issue:184500 O3PipeView:complete:185000 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:182500:0x000101cc:0:59:bne a3, zero, -36:IntAlu +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:182500:0x000101c4:0:57:bne a3, zero, -32:IntAlu O3PipeView:decode:183000 O3PipeView:rename:183500 O3PipeView:dispatch:184500 O3PipeView:issue:185000 O3PipeView:complete:185500 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:188000:0x000101a8:0:72:lw a4, 0(a0):MemRead +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:188000:0x000101a4:0:72:lw a4, 0(a0):MemRead O3PipeView:decode:188500 O3PipeView:rename:189000 O3PipeView:dispatch:190000 O3PipeView:issue:190000 O3PipeView:complete:190500 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:188000:0x000101ac:0:73:lw a5, 0(a1):MemRead +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:188000:0x000101a8:0:73:lw a5, 0(a1):MemRead O3PipeView:decode:188500 O3PipeView:rename:189000 O3PipeView:dispatch:190000 O3PipeView:issue:190000 O3PipeView:complete:190500 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:188000:0x000101b0:0:74:mul a6, a4, a5:IntMult +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:188000:0x000101ac:0:74:mul a6, a4, a5:IntMult O3PipeView:decode:188500 O3PipeView:rename:189000 O3PipeView:dispatch:190000 O3PipeView:issue:193500 O3PipeView:complete:195000 -O3PipeView:retire:204500:store:0 -O3PipeView:fetch:137000:0x000101b4:0:53:div a7, a4, a5:IntDiv -O3PipeView:decode:137500 -O3PipeView:rename:138000 -O3PipeView:dispatch:139000 -O3PipeView:issue:192500 -O3PipeView:complete:202500 O3PipeView:retire:203500:store:0 -O3PipeView:fetch:137000:0x000101b8:0:54:add s2, a6, a7:IntAlu -O3PipeView:decode:137500 -O3PipeView:rename:138000 -O3PipeView:dispatch:139000 -O3PipeView:issue:202500 -O3PipeView:complete:203000 -O3PipeView:retire:204000:store:0 -O3PipeView:fetch:137000:0x000101bc:0:55:sw s2, 0(a2):MemWrite +O3PipeView:fetch:137000:0x000101b0:0:52:div a7, a4, a5:IntDiv O3PipeView:decode:137500 O3PipeView:rename:138000 O3PipeView:dispatch:139000 -O3PipeView:issue:203000 -O3PipeView:complete:203500 -O3PipeView:retire:204500:store:206500 -O3PipeView:fetch:189000:0x000101c0:0:78:addi a0, a0, 4:IntAlu +O3PipeView:issue:192500 +O3PipeView:complete:202000 +O3PipeView:retire:203000:store:0 +O3PipeView:fetch:188000:0x000101b8:0:77:addi a0, a0, 4:IntAlu +O3PipeView:decode:188500 +O3PipeView:rename:189000 +O3PipeView:dispatch:190000 +O3PipeView:issue:190000 +O3PipeView:complete:190500 +O3PipeView:retire:205000:store:0 +O3PipeView:fetch:188000:0x000101bc:0:78:addi a1, a1, 4:IntAlu +O3PipeView:decode:188500 +O3PipeView:rename:189000 +O3PipeView:dispatch:190000 +O3PipeView:issue:190000 +O3PipeView:complete:190500 +O3PipeView:retire:205000:store:0 +O3PipeView:fetch:189000:0x000101c0:0:79:addi a3, a3, -1:IntAlu O3PipeView:decode:189500 O3PipeView:rename:190000 O3PipeView:dispatch:191000 O3PipeView:issue:191000 O3PipeView:complete:191500 -O3PipeView:retire:206000:store:0 -O3PipeView:fetch:189000:0x000101c4:0:79:addi a1, a1, 4:IntAlu +O3PipeView:retire:205000:store:0 +O3PipeView:fetch:189000:0x000101c4:0:80:bne a3, zero, -32:IntAlu +O3PipeView:decode:189500 +O3PipeView:rename:190000 +O3PipeView:dispatch:191000 +O3PipeView:issue:191500 +O3PipeView:complete:192000 +O3PipeView:retire:205000:store:0 +O3PipeView:fetch:189000:0x000101c8:0:81:auipc a0, 1:IntAlu O3PipeView:decode:189500 O3PipeView:rename:190000 O3PipeView:dispatch:191000 O3PipeView:issue:191000 O3PipeView:complete:191500 -O3PipeView:retire:206000:store:0 -O3PipeView:fetch:189000:0x000101c8:0:80:addi a3, a3, -1:IntAlu +O3PipeView:retire:205000:store:0 +O3PipeView:fetch:189000:0x000101cc:0:82:ld a0, 424(a0):MemRead +O3PipeView:decode:189500 +O3PipeView:rename:190000 +O3PipeView:dispatch:191000 +O3PipeView:issue:191500 +O3PipeView:complete:192000 +O3PipeView:retire:205000:store:0 +O3PipeView:fetch:189000:0x000101d0:0:83:auipc a1, 1:IntAlu O3PipeView:decode:189500 O3PipeView:rename:190000 O3PipeView:dispatch:191000 O3PipeView:issue:191000 O3PipeView:complete:191500 -O3PipeView:retire:206000:store:0 -O3PipeView:fetch:189000:0x000101cc:0:81:bne a3, zero, -36:IntAlu +O3PipeView:retire:205500:store:0 +O3PipeView:fetch:189000:0x000101d4:0:84:ld a1, 424(a1):MemRead O3PipeView:decode:189500 O3PipeView:rename:190000 O3PipeView:dispatch:191000 O3PipeView:issue:191500 O3PipeView:complete:192000 -O3PipeView:retire:206000:store:0 -O3PipeView:fetch:189000:0x000101d0:0:82:auipc a0, 1:IntAlu +O3PipeView:retire:205500:store:0 +O3PipeView:fetch:189000:0x000101d8:0:85:auipc a2, 1:IntAlu O3PipeView:decode:189500 O3PipeView:rename:190000 O3PipeView:dispatch:191000 O3PipeView:issue:191000 O3PipeView:complete:191500 -O3PipeView:retire:206000:store:0 -O3PipeView:fetch:188000:0x000101b4:0:75:div a7, a4, a5:IntDiv +O3PipeView:retire:205500:store:0 +O3PipeView:fetch:188000:0x000101b0:0:75:div a7, a4, a5:IntDiv O3PipeView:decode:188500 O3PipeView:rename:189000 O3PipeView:dispatch:190000 O3PipeView:issue:194000 O3PipeView:complete:204000 O3PipeView:retire:205000:store:0 -O3PipeView:fetch:188000:0x000101b8:0:76:add s2, a6, a7:IntAlu -O3PipeView:decode:188500 -O3PipeView:rename:189000 -O3PipeView:dispatch:190000 -O3PipeView:issue:204000 -O3PipeView:complete:204500 -O3PipeView:retire:205500:store:0 -O3PipeView:fetch:188000:0x000101bc:0:77:sw s2, 0(a2):MemWrite -O3PipeView:decode:188500 -O3PipeView:rename:189000 -O3PipeView:dispatch:190000 -O3PipeView:issue:204500 -O3PipeView:complete:205000 -O3PipeView:retire:206000:store:208000 -O3PipeView:fetch:182500:0x000101d4:0:61:ld a0, 432(a0):MemRead +O3PipeView:fetch:182500:0x000101dc:0:63:ld a2, 424(a2):MemRead O3PipeView:decode:183000 O3PipeView:rename:183500 O3PipeView:dispatch:184500 O3PipeView:issue:185000 O3PipeView:complete:185500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:189000:0x000101d8:0:84:auipc a1, 1:IntAlu -O3PipeView:decode:189500 -O3PipeView:rename:190000 -O3PipeView:dispatch:191000 -O3PipeView:issue:191000 -O3PipeView:complete:191500 -O3PipeView:retire:241500:store:0 -O3PipeView:fetch:189000:0x000101d4:0:83:ld a0, 432(a0):MemRead -O3PipeView:decode:189500 -O3PipeView:rename:190000 -O3PipeView:dispatch:191000 -O3PipeView:issue:191500 -O3PipeView:complete:192000 -O3PipeView:retire:241500:store:0 -O3PipeView:fetch:182500:0x000101dc:0:63:ld a1, 432(a1):MemRead -O3PipeView:decode:183000 -O3PipeView:rename:183500 -O3PipeView:dispatch:184500 -O3PipeView:issue:185000 -O3PipeView:complete:185500 -O3PipeView:retire:0:store:0 -O3PipeView:fetch:183000:0x000101e4:0:65:ld a2, 432(a2):MemRead -O3PipeView:decode:183500 -O3PipeView:rename:184000 -O3PipeView:dispatch:185000 -O3PipeView:issue:185500 -O3PipeView:complete:186000 -O3PipeView:retire:0:store:0 -O3PipeView:fetch:189500:0x000101e0:0:86:auipc a2, 1:IntAlu +O3PipeView:fetch:189500:0x000101e0:0:87:addi a3, zero, 2:IntAlu O3PipeView:decode:190000 O3PipeView:rename:190500 O3PipeView:dispatch:191500 O3PipeView:issue:191500 O3PipeView:complete:192000 -O3PipeView:retire:245500:store:0 -O3PipeView:fetch:189500:0x000101e8:0:88:addi a3, zero, 2:IntAlu -O3PipeView:decode:190000 -O3PipeView:rename:190500 -O3PipeView:dispatch:191500 +O3PipeView:retire:241500:store:0 +O3PipeView:fetch:189000:0x000101dc:0:86:ld a2, 424(a2):MemRead +O3PipeView:decode:189500 +O3PipeView:rename:190000 +O3PipeView:dispatch:191000 O3PipeView:issue:191500 O3PipeView:complete:192000 -O3PipeView:retire:245500:store:0 -O3PipeView:fetch:189500:0x000101ec:0:89:flw ft0, 0(a0):FloatMemRead +O3PipeView:retire:241500:store:0 +O3PipeView:fetch:189500:0x000101e4:0:88:flw ft0, 0(a0):FloatMemRead O3PipeView:decode:190000 O3PipeView:rename:190500 O3PipeView:dispatch:191500 -O3PipeView:issue:240500 -O3PipeView:complete:241000 -O3PipeView:retire:245500:store:0 -O3PipeView:fetch:189500:0x000101e4:0:87:ld a2, 432(a2):MemRead +O3PipeView:issue:193500 +O3PipeView:complete:194000 +O3PipeView:retire:246000:store:0 +O3PipeView:fetch:79000:0x00010178:0:14:sw s4, 0(a2):MemWrite +O3PipeView:decode:79500 +O3PipeView:rename:80000 +O3PipeView:dispatch:81000 +O3PipeView:issue:140500 +O3PipeView:complete:141000 +O3PipeView:retire:194000:store:249001 +O3PipeView:fetch:135500:0x00010178:0:38:sw s4, 0(a2):MemWrite +O3PipeView:decode:136000 +O3PipeView:rename:136500 +O3PipeView:dispatch:137500 +O3PipeView:issue:141000 +O3PipeView:complete:141500 +O3PipeView:retire:195000:store:249002 +O3PipeView:fetch:137000:0x000101b4:0:53:sw s2, 0(a2):MemWrite +O3PipeView:decode:137500 +O3PipeView:rename:138000 +O3PipeView:dispatch:139000 +O3PipeView:issue:193500 +O3PipeView:complete:194000 +O3PipeView:retire:203000:store:249003 +O3PipeView:fetch:188000:0x000101b4:0:76:sw s2, 0(a2):MemWrite +O3PipeView:decode:188500 +O3PipeView:rename:189000 +O3PipeView:dispatch:190000 +O3PipeView:issue:193500 +O3PipeView:complete:194000 +O3PipeView:retire:205000:store:249004 +O3PipeView:fetch:189500:0x000101e8:0:89:flw ft1, 0(a1):FloatMemRead O3PipeView:decode:190000 -O3PipeView:rename:190500 -O3PipeView:dispatch:191500 -O3PipeView:issue:192000 -O3PipeView:complete:192500 -O3PipeView:retire:245500:store:0 -O3PipeView:fetch:189000:0x000101dc:0:85:ld a1, 432(a1):MemRead -O3PipeView:decode:189500 -O3PipeView:rename:190000 -O3PipeView:dispatch:191000 -O3PipeView:issue:191500 -O3PipeView:complete:192000 -O3PipeView:retire:245500:store:0 -O3PipeView:fetch:189500:0x000101f0:0:90:flw ft1, 0(a1):FloatMemRead +O3PipeView:rename:190500 +O3PipeView:dispatch:191500 +O3PipeView:issue:193500 +O3PipeView:complete:194000 +O3PipeView:retire:250000:store:0 +O3PipeView:fetch:189500:0x000101fc:0:94:addi a2, a2, 4:IntAlu O3PipeView:decode:190000 O3PipeView:rename:190500 O3PipeView:dispatch:191500 -O3PipeView:issue:244500 -O3PipeView:complete:245000 -O3PipeView:retire:247000:store:0 -O3PipeView:fetch:234500:0x00010204:0:95:addi a2, a2, 4:IntAlu +O3PipeView:issue:240500 +O3PipeView:complete:241000 +O3PipeView:retire:251500:store:0 +O3PipeView:fetch:234500:0x00010204:0:96:addi a2, a2, 4:IntAlu +O3PipeView:decode:235000 +O3PipeView:rename:235500 +O3PipeView:dispatch:236500 +O3PipeView:issue:241000 +O3PipeView:complete:241500 +O3PipeView:retire:251500:store:0 +O3PipeView:fetch:234500:0x00010208:0:97:addi a0, a0, 4:IntAlu O3PipeView:decode:235000 O3PipeView:rename:235500 O3PipeView:dispatch:236500 -O3PipeView:issue:244500 -O3PipeView:complete:245000 -O3PipeView:retire:248500:store:0 -O3PipeView:fetch:234500:0x0001020c:0:97:addi a2, a2, 4:IntAlu +O3PipeView:issue:236500 +O3PipeView:complete:237000 +O3PipeView:retire:251500:store:0 +O3PipeView:fetch:234500:0x0001020c:0:98:addi a1, a1, 4:IntAlu O3PipeView:decode:235000 O3PipeView:rename:235500 O3PipeView:dispatch:236500 -O3PipeView:issue:245000 -O3PipeView:complete:245500 -O3PipeView:retire:248500:store:0 -O3PipeView:fetch:234500:0x00010210:0:98:addi a0, a0, 4:IntAlu +O3PipeView:issue:236500 +O3PipeView:complete:237000 +O3PipeView:retire:251500:store:0 +O3PipeView:fetch:234500:0x00010210:0:99:addi a3, a3, -1:IntAlu O3PipeView:decode:235000 O3PipeView:rename:235500 O3PipeView:dispatch:236500 -O3PipeView:issue:240500 -O3PipeView:complete:241000 -O3PipeView:retire:248500:store:0 -O3PipeView:fetch:234500:0x00010214:0:99:addi a1, a1, 4:IntAlu +O3PipeView:issue:236500 +O3PipeView:complete:237000 +O3PipeView:retire:251500:store:0 +O3PipeView:fetch:234500:0x00010214:0:100:bne a3, zero, -48:IntAlu O3PipeView:decode:235000 O3PipeView:rename:235500 O3PipeView:dispatch:236500 -O3PipeView:issue:244500 -O3PipeView:complete:245000 -O3PipeView:retire:248500:store:0 -O3PipeView:fetch:234500:0x00010218:0:100:addi a3, a3, -1:IntAlu +O3PipeView:issue:237000 +O3PipeView:complete:237500 +O3PipeView:retire:251500:store:0 +O3PipeView:fetch:234500:0x00010218:0:101:auipc a0, 1:IntAlu O3PipeView:decode:235000 O3PipeView:rename:235500 O3PipeView:dispatch:236500 O3PipeView:issue:236500 O3PipeView:complete:237000 -O3PipeView:retire:248500:store:0 -O3PipeView:fetch:234500:0x0001021c:0:101:bne a3, zero, -48:IntAlu +O3PipeView:retire:0:store:0 +O3PipeView:fetch:234500:0x0001021c:0:102:ld a0, 344(a0):MemRead O3PipeView:decode:235000 O3PipeView:rename:235500 O3PipeView:dispatch:236500 O3PipeView:issue:237000 O3PipeView:complete:237500 -O3PipeView:retire:248500:store:0 -O3PipeView:fetch:235000:0x00010220:0:102:auipc a0, 1:IntAlu +O3PipeView:retire:0:store:0 +O3PipeView:fetch:235000:0x00010220:0:103:auipc a1, 1:IntAlu O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 O3PipeView:issue:237000 O3PipeView:complete:237500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x00010224:0:103:ld a0, 352(a0):MemRead +O3PipeView:fetch:235000:0x00010224:0:104:ld a1, 344(a1):MemRead O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 O3PipeView:issue:237500 O3PipeView:complete:238000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x00010228:0:104:auipc a1, 1:IntAlu +O3PipeView:fetch:235000:0x00010228:0:105:auipc a2, 1:IntAlu O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 O3PipeView:issue:237000 O3PipeView:complete:237500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x0001022c:0:105:ld a1, 352(a1):MemRead +O3PipeView:fetch:235000:0x0001022c:0:106:ld a2, 344(a2):MemRead O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 O3PipeView:issue:237500 O3PipeView:complete:238000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x00010230:0:106:auipc a2, 1:IntAlu +O3PipeView:fetch:235000:0x00010230:0:107:addi a3, zero, 2:IntAlu O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 O3PipeView:issue:237000 O3PipeView:complete:237500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x00010234:0:107:ld a2, 352(a2):MemRead +O3PipeView:fetch:235000:0x00010234:0:108:flw ft0, 0(a0):FloatMemRead O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 -O3PipeView:issue:237500 -O3PipeView:complete:238000 +O3PipeView:issue:0 +O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x00010238:0:108:addi a3, zero, 2:IntAlu +O3PipeView:fetch:235000:0x00010238:0:109:flw ft1, 0(a1):FloatMemRead O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 -O3PipeView:issue:237000 -O3PipeView:complete:237500 +O3PipeView:issue:0 +O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:235000:0x0001023c:0:109:flw ft0, 0(a0):FloatMemRead +O3PipeView:fetch:235000:0x0001023c:0:110:fmul_s ft2, ft0, ft1:FloatMult O3PipeView:decode:235500 O3PipeView:rename:236000 O3PipeView:dispatch:237000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:240000:0x000101ec:0:110:flw ft0, 0(a0):FloatMemRead +O3PipeView:fetch:240000:0x000101e4:0:111:flw ft0, 0(a0):FloatMemRead O3PipeView:decode:240500 O3PipeView:rename:241000 O3PipeView:dispatch:242000 O3PipeView:issue:242000 O3PipeView:complete:242500 -O3PipeView:retire:249000:store:0 -O3PipeView:fetch:240000:0x000101f0:0:111:flw ft1, 0(a1):FloatMemRead +O3PipeView:retire:252000:store:0 +O3PipeView:fetch:240000:0x000101e8:0:112:flw ft1, 0(a1):FloatMemRead O3PipeView:decode:240500 O3PipeView:rename:241000 O3PipeView:dispatch:242000 -O3PipeView:issue:245000 -O3PipeView:complete:245500 -O3PipeView:retire:249000:store:0 -O3PipeView:fetch:241000:0x00010204:0:116:addi a2, a2, 4:IntAlu -O3PipeView:decode:241500 -O3PipeView:rename:242000 -O3PipeView:dispatch:243000 -O3PipeView:issue:245500 -O3PipeView:complete:246000 -O3PipeView:retire:249000:store:0 -O3PipeView:fetch:189500:0x000101f4:0:91:fadd_s ft2, ft0, ft1:FloatAdd +O3PipeView:issue:242000 +O3PipeView:complete:242500 +O3PipeView:retire:252000:store:0 +O3PipeView:fetch:240000:0x000101fc:0:117:addi a2, a2, 4:IntAlu +O3PipeView:decode:240500 +O3PipeView:rename:241000 +O3PipeView:dispatch:242000 +O3PipeView:issue:242000 +O3PipeView:complete:242500 +O3PipeView:retire:252000:store:0 +O3PipeView:fetch:189500:0x000101ec:0:90:fadd_s ft2, ft0, ft1:FloatAdd O3PipeView:decode:190000 O3PipeView:rename:190500 O3PipeView:dispatch:191500 -O3PipeView:issue:246000 -O3PipeView:complete:247000 -O3PipeView:retire:248000:store:0 -O3PipeView:fetch:189500:0x000101f8:0:92:fsub_s ft3, ft0, ft1:FloatAdd +O3PipeView:issue:249000 +O3PipeView:complete:250000 +O3PipeView:retire:251000:store:0 +O3PipeView:fetch:189500:0x000101f0:0:91:fsub_s ft3, ft0, ft1:FloatAdd O3PipeView:decode:190000 O3PipeView:rename:190500 O3PipeView:dispatch:191500 -O3PipeView:issue:246000 -O3PipeView:complete:247000 -O3PipeView:retire:248000:store:0 -O3PipeView:fetch:189500:0x000101fc:0:93:feq_s a4, ft0, ft1:FloatCmp +O3PipeView:issue:249000 +O3PipeView:complete:250000 +O3PipeView:retire:251000:store:0 +O3PipeView:fetch:189500:0x000101f4:0:92:feq_s a4, ft0, ft1:FloatCmp O3PipeView:decode:190000 O3PipeView:rename:190500 O3PipeView:dispatch:191500 -O3PipeView:issue:246000 -O3PipeView:complete:247000 -O3PipeView:retire:248000:store:0 -O3PipeView:fetch:241000:0x0001020c:0:118:addi a2, a2, 4:IntAlu +O3PipeView:issue:249000 +O3PipeView:complete:250000 +O3PipeView:retire:251000:store:0 +O3PipeView:fetch:241000:0x00010204:0:119:addi a2, a2, 4:IntAlu O3PipeView:decode:241500 O3PipeView:rename:242000 O3PipeView:dispatch:243000 -O3PipeView:issue:246000 -O3PipeView:complete:246500 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241000:0x00010210:0:119:addi a0, a0, 4:IntAlu +O3PipeView:issue:243000 +O3PipeView:complete:243500 +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241000:0x00010208:0:120:addi a0, a0, 4:IntAlu O3PipeView:decode:241500 O3PipeView:rename:242000 O3PipeView:dispatch:243000 O3PipeView:issue:243000 O3PipeView:complete:243500 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241000:0x00010214:0:120:addi a1, a1, 4:IntAlu +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241000:0x0001020c:0:121:addi a1, a1, 4:IntAlu O3PipeView:decode:241500 O3PipeView:rename:242000 O3PipeView:dispatch:243000 -O3PipeView:issue:245000 -O3PipeView:complete:245500 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241000:0x00010218:0:121:addi a3, a3, -1:IntAlu +O3PipeView:issue:243000 +O3PipeView:complete:243500 +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241000:0x00010210:0:122:addi a3, a3, -1:IntAlu O3PipeView:decode:241500 O3PipeView:rename:242000 O3PipeView:dispatch:243000 O3PipeView:issue:243000 O3PipeView:complete:243500 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241000:0x0001021c:0:122:bne a3, zero, -48:IntAlu +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241000:0x00010214:0:123:bne a3, zero, -48:IntAlu O3PipeView:decode:241500 O3PipeView:rename:242000 O3PipeView:dispatch:243000 O3PipeView:issue:243500 O3PipeView:complete:244000 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241500:0x00010220:0:123:auipc a0, 1:IntAlu -O3PipeView:decode:242000 -O3PipeView:rename:242500 -O3PipeView:dispatch:243500 +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241000:0x00010218:0:124:auipc a0, 1:IntAlu +O3PipeView:decode:241500 +O3PipeView:rename:242000 +O3PipeView:dispatch:243000 +O3PipeView:issue:243000 +O3PipeView:complete:243500 +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241000:0x0001021c:0:125:ld a0, 344(a0):MemRead +O3PipeView:decode:241500 +O3PipeView:rename:242000 +O3PipeView:dispatch:243000 O3PipeView:issue:243500 O3PipeView:complete:244000 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241500:0x00010224:0:124:ld a0, 352(a0):MemRead -O3PipeView:decode:242000 -O3PipeView:rename:242500 -O3PipeView:dispatch:243500 -O3PipeView:issue:244000 -O3PipeView:complete:244500 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:241500:0x00010228:0:125:auipc a1, 1:IntAlu +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:241500:0x00010220:0:126:auipc a1, 1:IntAlu O3PipeView:decode:242000 O3PipeView:rename:242500 O3PipeView:dispatch:243500 O3PipeView:issue:243500 O3PipeView:complete:244000 -O3PipeView:retire:249500:store:0 -O3PipeView:fetch:240000:0x000101f4:0:112:fadd_s ft2, ft0, ft1:FloatAdd +O3PipeView:retire:252500:store:0 +O3PipeView:fetch:240000:0x000101ec:0:113:fadd_s ft2, ft0, ft1:FloatAdd O3PipeView:decode:240500 O3PipeView:rename:241000 O3PipeView:dispatch:242000 -O3PipeView:issue:246500 -O3PipeView:complete:247500 -O3PipeView:retire:249000:store:0 -O3PipeView:fetch:240000:0x000101f8:0:113:fsub_s ft3, ft0, ft1:FloatAdd +O3PipeView:issue:249500 +O3PipeView:complete:250500 +O3PipeView:retire:252000:store:0 +O3PipeView:fetch:240000:0x000101f0:0:114:fsub_s ft3, ft0, ft1:FloatAdd O3PipeView:decode:240500 O3PipeView:rename:241000 O3PipeView:dispatch:242000 -O3PipeView:issue:246500 -O3PipeView:complete:247500 -O3PipeView:retire:249000:store:0 -O3PipeView:fetch:240000:0x000101fc:0:114:feq_s a4, ft0, ft1:FloatCmp +O3PipeView:issue:249500 +O3PipeView:complete:250500 +O3PipeView:retire:252000:store:0 +O3PipeView:fetch:240000:0x000101f4:0:115:feq_s a4, ft0, ft1:FloatCmp O3PipeView:decode:240500 O3PipeView:rename:241000 O3PipeView:dispatch:242000 -O3PipeView:issue:246500 -O3PipeView:complete:247500 -O3PipeView:retire:249000:store:0 -O3PipeView:fetch:241500:0x0001022c:0:126:ld a1, 352(a1):MemRead +O3PipeView:issue:249500 +O3PipeView:complete:250500 +O3PipeView:retire:252000:store:0 +O3PipeView:fetch:189500:0x000101f8:0:93:fsw ft2, 0(a2):FloatMemWrite +O3PipeView:decode:190000 +O3PipeView:rename:190500 +O3PipeView:dispatch:191500 +O3PipeView:issue:250000 +O3PipeView:complete:250500 +O3PipeView:retire:251500:store:253500 +O3PipeView:fetch:241500:0x00010224:0:127:ld a1, 344(a1):MemRead O3PipeView:decode:242000 O3PipeView:rename:242500 O3PipeView:dispatch:243500 O3PipeView:issue:244000 O3PipeView:complete:244500 -O3PipeView:retire:250000:store:0 -O3PipeView:fetch:241500:0x00010230:0:127:auipc a2, 1:IntAlu +O3PipeView:retire:253000:store:0 +O3PipeView:fetch:241500:0x00010228:0:128:auipc a2, 1:IntAlu O3PipeView:decode:242000 O3PipeView:rename:242500 O3PipeView:dispatch:243500 O3PipeView:issue:243500 O3PipeView:complete:244000 -O3PipeView:retire:250000:store:0 -O3PipeView:fetch:241500:0x00010234:0:128:ld a2, 352(a2):MemRead +O3PipeView:retire:253000:store:0 +O3PipeView:fetch:241500:0x0001022c:0:129:ld a2, 344(a2):MemRead O3PipeView:decode:242000 O3PipeView:rename:242500 O3PipeView:dispatch:243500 O3PipeView:issue:244000 O3PipeView:complete:244500 -O3PipeView:retire:250000:store:0 -O3PipeView:fetch:241500:0x00010238:0:129:addi a3, zero, 2:IntAlu +O3PipeView:retire:253000:store:0 +O3PipeView:fetch:241500:0x00010230:0:130:addi a3, zero, 2:IntAlu O3PipeView:decode:242000 O3PipeView:rename:242500 O3PipeView:dispatch:243500 O3PipeView:issue:243500 O3PipeView:complete:244000 -O3PipeView:retire:250000:store:0 -O3PipeView:fetch:241500:0x0001023c:0:130:flw ft0, 0(a0):FloatMemRead +O3PipeView:retire:253000:store:0 +O3PipeView:fetch:241500:0x00010234:0:131:flw ft0, 0(a0):FloatMemRead O3PipeView:decode:242000 O3PipeView:rename:242500 O3PipeView:dispatch:243500 O3PipeView:issue:245500 O3PipeView:complete:246000 -O3PipeView:retire:250000:store:0 -O3PipeView:fetch:286500:0x00010240:0:131:flw ft1, 0(a1):FloatMemRead -O3PipeView:decode:287000 -O3PipeView:rename:287500 -O3PipeView:dispatch:288500 -O3PipeView:issue:288500 -O3PipeView:complete:289000 -O3PipeView:retire:291000:store:0 -O3PipeView:fetch:286500:0x00010244:0:132:fmul_s ft2, ft0, ft1:FloatMult -O3PipeView:decode:287000 -O3PipeView:rename:287500 -O3PipeView:dispatch:288500 -O3PipeView:issue:290000 -O3PipeView:complete:292000 -O3PipeView:retire:293000:store:0 -O3PipeView:fetch:286500:0x00010250:0:135:addi a2, a2, 4:IntAlu +O3PipeView:retire:253000:store:0 +O3PipeView:fetch:241500:0x00010238:0:132:flw ft1, 0(a1):FloatMemRead +O3PipeView:decode:242000 +O3PipeView:rename:242500 +O3PipeView:dispatch:243500 +O3PipeView:issue:245500 +O3PipeView:complete:246000 +O3PipeView:retire:253000:store:0 +O3PipeView:fetch:234500:0x00010200:0:95:fsw ft3, 0(a2):FloatMemWrite +O3PipeView:decode:235000 +O3PipeView:rename:235500 +O3PipeView:dispatch:236500 +O3PipeView:issue:250000 +O3PipeView:complete:250500 +O3PipeView:retire:251500:store:253501 +O3PipeView:fetch:240000:0x000101f8:0:116:fsw ft2, 0(a2):FloatMemWrite +O3PipeView:decode:240500 +O3PipeView:rename:241000 +O3PipeView:dispatch:242000 +O3PipeView:issue:250500 +O3PipeView:complete:251000 +O3PipeView:retire:252000:store:254000 +O3PipeView:fetch:241000:0x00010200:0:118:fsw ft3, 0(a2):FloatMemWrite +O3PipeView:decode:241500 +O3PipeView:rename:242000 +O3PipeView:dispatch:243000 +O3PipeView:issue:250500 +O3PipeView:complete:251000 +O3PipeView:retire:252000:store:254001 +O3PipeView:fetch:241500:0x0001023c:0:133:fmul_s ft2, ft0, ft1:FloatMult +O3PipeView:decode:242000 +O3PipeView:rename:242500 +O3PipeView:dispatch:243500 +O3PipeView:issue:250500 +O3PipeView:complete:252500 +O3PipeView:retire:253500:store:0 +O3PipeView:fetch:286500:0x00010248:0:136:addi a2, a2, 4:IntAlu O3PipeView:decode:287000 O3PipeView:rename:287500 O3PipeView:dispatch:288500 O3PipeView:issue:288500 O3PipeView:complete:289000 -O3PipeView:retire:297000:store:0 -O3PipeView:fetch:287000:0x0001026c:0:142:auipc a0, 1:IntAlu +O3PipeView:retire:295500:store:0 +O3PipeView:fetch:287000:0x00010264:0:143:auipc a0, 1:IntAlu O3PipeView:decode:287500 O3PipeView:rename:288000 O3PipeView:dispatch:289000 O3PipeView:issue:289000 O3PipeView:complete:289500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:287000:0x00010270:0:143:ld a0, 300(a0):MemRead +O3PipeView:fetch:287000:0x00010268:0:144:ld a0, 292(a0):MemRead O3PipeView:decode:287500 O3PipeView:rename:288000 O3PipeView:dispatch:289000 O3PipeView:issue:289500 O3PipeView:complete:290000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:287000:0x00010274:0:144:auipc a1, 1:IntAlu +O3PipeView:fetch:287000:0x0001026c:0:145:auipc a1, 1:IntAlu O3PipeView:decode:287500 O3PipeView:rename:288000 O3PipeView:dispatch:289000 O3PipeView:issue:289000 O3PipeView:complete:289500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:287000:0x00010278:0:145:ld a1, 300(a1):MemRead +O3PipeView:fetch:287000:0x00010270:0:146:ld a1, 292(a1):MemRead O3PipeView:decode:287500 O3PipeView:rename:288000 O3PipeView:dispatch:289000 O3PipeView:issue:289500 O3PipeView:complete:290000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:287000:0x0001027c:0:146:auipc a2, 1:IntAlu +O3PipeView:fetch:287000:0x00010274:0:147:auipc a2, 1:IntAlu O3PipeView:decode:287500 O3PipeView:rename:288000 O3PipeView:dispatch:289000 O3PipeView:issue:289000 O3PipeView:complete:289500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:286500:0x00010258:0:137:addi a2, a2, 4:IntAlu +O3PipeView:fetch:287000:0x00010278:0:148:ld a2, 292(a2):MemRead +O3PipeView:decode:287500 +O3PipeView:rename:288000 +O3PipeView:dispatch:289000 +O3PipeView:issue:289500 +O3PipeView:complete:290000 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:287000:0x0001027c:0:149:addi t0, zero, 4:IntAlu +O3PipeView:decode:287500 +O3PipeView:rename:288000 +O3PipeView:dispatch:289000 +O3PipeView:issue:289000 +O3PipeView:complete:289500 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:286500:0x00010250:0:138:addi a2, a2, 4:IntAlu O3PipeView:decode:287000 O3PipeView:rename:287500 O3PipeView:dispatch:288500 O3PipeView:issue:289000 O3PipeView:complete:289500 -O3PipeView:retire:297500:store:0 -O3PipeView:fetch:286500:0x0001025c:0:138:addi a0, a0, 4:IntAlu +O3PipeView:retire:296000:store:0 +O3PipeView:fetch:286500:0x00010254:0:139:addi a0, a0, 4:IntAlu O3PipeView:decode:287000 O3PipeView:rename:287500 O3PipeView:dispatch:288500 O3PipeView:issue:288500 O3PipeView:complete:289000 -O3PipeView:retire:297500:store:0 -O3PipeView:fetch:287000:0x00010260:0:139:addi a1, a1, 4:IntAlu -O3PipeView:decode:287500 -O3PipeView:rename:288000 -O3PipeView:dispatch:289000 -O3PipeView:issue:289000 -O3PipeView:complete:289500 -O3PipeView:retire:297500:store:0 -O3PipeView:fetch:287000:0x00010264:0:140:addi a3, a3, -1:IntAlu +O3PipeView:retire:296000:store:0 +O3PipeView:fetch:286500:0x00010258:0:140:addi a1, a1, 4:IntAlu +O3PipeView:decode:287000 +O3PipeView:rename:287500 +O3PipeView:dispatch:288500 +O3PipeView:issue:288500 +O3PipeView:complete:289000 +O3PipeView:retire:296000:store:0 +O3PipeView:fetch:286500:0x0001025c:0:141:addi a3, a3, -1:IntAlu +O3PipeView:decode:287000 +O3PipeView:rename:287500 +O3PipeView:dispatch:288500 +O3PipeView:issue:288500 +O3PipeView:complete:289000 +O3PipeView:retire:296000:store:0 +O3PipeView:fetch:287000:0x00010260:0:142:bne a3, zero, -44:IntAlu O3PipeView:decode:287500 O3PipeView:rename:288000 O3PipeView:dispatch:289000 O3PipeView:issue:289000 O3PipeView:complete:289500 -O3PipeView:retire:297500:store:0 -O3PipeView:fetch:287000:0x00010268:0:141:bne a3, zero, -44:IntAlu -O3PipeView:decode:287500 -O3PipeView:rename:288000 -O3PipeView:dispatch:289000 -O3PipeView:issue:289500 -O3PipeView:complete:290000 -O3PipeView:retire:297500:store:0 -O3PipeView:fetch:286500:0x00010248:0:133:fdiv_s ft3, ft0, ft1:FloatDiv +O3PipeView:retire:296000:store:0 +O3PipeView:fetch:286500:0x00010240:0:134:fdiv_s ft3, ft0, ft1:FloatDiv +O3PipeView:decode:287000 +O3PipeView:rename:287500 +O3PipeView:dispatch:288500 +O3PipeView:issue:288500 +O3PipeView:complete:294500 +O3PipeView:retire:295500:store:0 +O3PipeView:fetch:286500:0x00010244:0:135:fsw ft2, 0(a2):FloatMemWrite +O3PipeView:decode:287000 +O3PipeView:rename:287500 +O3PipeView:dispatch:288500 +O3PipeView:issue:288500 +O3PipeView:complete:289000 +O3PipeView:retire:295500:store:297503 +O3PipeView:fetch:286500:0x0001024c:0:137:fsw ft3, 0(a2):FloatMemWrite O3PipeView:decode:287000 O3PipeView:rename:287500 O3PipeView:dispatch:288500 -O3PipeView:issue:290000 -O3PipeView:complete:296000 -O3PipeView:retire:297000:store:0 -O3PipeView:fetch:292500:0x0001023c:0:147:flw ft0, 0(a0):FloatMemRead -O3PipeView:decode:293000 -O3PipeView:rename:293500 -O3PipeView:dispatch:294500 O3PipeView:issue:294500 O3PipeView:complete:295000 -O3PipeView:retire:297500:store:0 -O3PipeView:fetch:293500:0x00010240:0:148:flw ft1, 0(a1):FloatMemRead -O3PipeView:decode:294000 -O3PipeView:rename:294500 -O3PipeView:dispatch:295500 +O3PipeView:retire:296000:store:298000 +O3PipeView:fetch:292000:0x00010234:0:150:flw ft0, 0(a0):FloatMemRead +O3PipeView:decode:292500 +O3PipeView:rename:293000 +O3PipeView:dispatch:294000 +O3PipeView:issue:294000 +O3PipeView:complete:294500 +O3PipeView:retire:296500:store:0 +O3PipeView:fetch:292000:0x00010238:0:151:flw ft1, 0(a1):FloatMemRead +O3PipeView:decode:292500 +O3PipeView:rename:293000 +O3PipeView:dispatch:294000 +O3PipeView:issue:294000 +O3PipeView:complete:294500 +O3PipeView:retire:297000:store:0 +O3PipeView:fetch:292000:0x0001023c:0:152:fmul_s ft2, ft0, ft1:FloatMult +O3PipeView:decode:292500 +O3PipeView:rename:293000 +O3PipeView:dispatch:294000 +O3PipeView:issue:296000 +O3PipeView:complete:298000 +O3PipeView:retire:299000:store:0 +O3PipeView:fetch:293000:0x00010248:0:155:addi a2, a2, 4:IntAlu +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:295000 +O3PipeView:complete:295500 +O3PipeView:retire:303000:store:0 +O3PipeView:fetch:293000:0x00010250:0:157:addi a2, a2, 4:IntAlu +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 O3PipeView:issue:295500 O3PipeView:complete:296000 -O3PipeView:retire:298000:store:0 -O3PipeView:fetch:234500:0x00010200:0:94:fsw ft2, 0(a2):FloatMemWrite -O3PipeView:decode:235000 -O3PipeView:rename:235500 -O3PipeView:dispatch:236500 -O3PipeView:issue:247000 -O3PipeView:complete:247500 -O3PipeView:retire:248500:store:301000 -O3PipeView:fetch:293500:0x00010244:0:149:fmul_s ft2, ft0, ft1:FloatMult +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293000:0x00010254:0:158:addi a0, a0, 4:IntAlu +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:295000 +O3PipeView:complete:295500 +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293000:0x00010258:0:159:addi a1, a1, 4:IntAlu +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:295000 +O3PipeView:complete:295500 +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293000:0x0001025c:0:160:addi a3, a3, -1:IntAlu +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:295000 +O3PipeView:complete:295500 +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293500:0x00010260:0:161:bne a3, zero, -44:IntAlu O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 -O3PipeView:issue:297000 -O3PipeView:complete:299000 -O3PipeView:retire:300000:store:0 -O3PipeView:fetch:293500:0x00010250:0:152:addi a2, a2, 4:IntAlu +O3PipeView:issue:295500 +O3PipeView:complete:296000 +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293500:0x00010264:0:162:auipc a0, 1:IntAlu O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 O3PipeView:issue:295500 O3PipeView:complete:296000 -O3PipeView:retire:304000:store:0 -O3PipeView:fetch:234500:0x00010208:0:96:fsw ft3, 0(a2):FloatMemWrite -O3PipeView:decode:235000 -O3PipeView:rename:235500 -O3PipeView:dispatch:236500 -O3PipeView:issue:247000 -O3PipeView:complete:247500 -O3PipeView:retire:248500:store:305000 -O3PipeView:fetch:293500:0x00010258:0:154:addi a2, a2, 4:IntAlu +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293500:0x00010268:0:163:ld a0, 292(a0):MemRead O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 O3PipeView:issue:296000 O3PipeView:complete:296500 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:293500:0x0001025c:0:155:addi a0, a0, 4:IntAlu +O3PipeView:retire:303500:store:0 +O3PipeView:fetch:293500:0x0001026c:0:164:auipc a1, 1:IntAlu O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 O3PipeView:issue:295500 O3PipeView:complete:296000 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:294000:0x00010260:0:156:addi a1, a1, 4:IntAlu -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296000 -O3PipeView:complete:296500 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:294000:0x00010264:0:157:addi a3, a3, -1:IntAlu -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296000 -O3PipeView:complete:296500 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:294000:0x00010268:0:158:bne a3, zero, -44:IntAlu -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296500 -O3PipeView:complete:297000 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:294000:0x0001026c:0:159:auipc a0, 1:IntAlu -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296000 -O3PipeView:complete:296500 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:294000:0x00010270:0:160:ld a0, 300(a0):MemRead -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296500 -O3PipeView:complete:297000 -O3PipeView:retire:304500:store:0 -O3PipeView:fetch:241000:0x00010200:0:115:fsw ft2, 0(a2):FloatMemWrite -O3PipeView:decode:241500 -O3PipeView:rename:242000 -O3PipeView:dispatch:243000 -O3PipeView:issue:247500 -O3PipeView:complete:248000 -O3PipeView:retire:249000:store:305001 -O3PipeView:fetch:286500:0x0001024c:0:134:fsw ft2, 0(a2):FloatMemWrite -O3PipeView:decode:287000 -O3PipeView:rename:287500 -O3PipeView:dispatch:288500 -O3PipeView:issue:292000 -O3PipeView:complete:292500 -O3PipeView:retire:297000:store:301001 -O3PipeView:fetch:241000:0x00010208:0:117:fsw ft3, 0(a2):FloatMemWrite -O3PipeView:decode:241500 -O3PipeView:rename:242000 -O3PipeView:dispatch:243000 -O3PipeView:issue:247500 -O3PipeView:complete:248000 -O3PipeView:retire:249000:store:305002 -O3PipeView:fetch:286500:0x00010254:0:136:fsw ft3, 0(a2):FloatMemWrite -O3PipeView:decode:287000 -O3PipeView:rename:287500 -O3PipeView:dispatch:288500 -O3PipeView:issue:296000 -O3PipeView:complete:296500 -O3PipeView:retire:297500:store:305003 -O3PipeView:fetch:294000:0x00010274:0:161:auipc a1, 1:IntAlu -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296000 -O3PipeView:complete:296500 -O3PipeView:retire:305000:store:0 -O3PipeView:fetch:294000:0x00010278:0:162:ld a1, 300(a1):MemRead -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 -O3PipeView:issue:296500 -O3PipeView:complete:297000 -O3PipeView:retire:305000:store:0 -O3PipeView:fetch:294000:0x0001027c:0:163:auipc a2, 1:IntAlu -O3PipeView:decode:294500 -O3PipeView:rename:295000 -O3PipeView:dispatch:296000 +O3PipeView:retire:304000:store:0 +O3PipeView:fetch:293500:0x00010270:0:165:ld a1, 292(a1):MemRead +O3PipeView:decode:294000 +O3PipeView:rename:294500 +O3PipeView:dispatch:295500 O3PipeView:issue:296000 O3PipeView:complete:296500 -O3PipeView:retire:305000:store:0 -O3PipeView:fetch:293500:0x00010248:0:150:fdiv_s ft3, ft0, ft1:FloatDiv +O3PipeView:retire:304000:store:0 +O3PipeView:fetch:293500:0x00010274:0:166:auipc a2, 1:IntAlu O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 -O3PipeView:issue:297000 -O3PipeView:complete:303000 +O3PipeView:issue:295500 +O3PipeView:complete:296000 O3PipeView:retire:304000:store:0 -O3PipeView:fetch:293500:0x0001024c:0:151:fsw ft2, 0(a2):FloatMemWrite +O3PipeView:fetch:293500:0x00010278:0:167:ld a2, 292(a2):MemRead O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 -O3PipeView:issue:299000 -O3PipeView:complete:299500 -O3PipeView:retire:304000:store:306000 -O3PipeView:fetch:293500:0x00010254:0:153:fsw ft3, 0(a2):FloatMemWrite +O3PipeView:issue:296000 +O3PipeView:complete:296500 +O3PipeView:retire:304000:store:0 +O3PipeView:fetch:293500:0x0001027c:0:168:addi t0, zero, 4:IntAlu O3PipeView:decode:294000 O3PipeView:rename:294500 O3PipeView:dispatch:295500 -O3PipeView:issue:303000 -O3PipeView:complete:303500 -O3PipeView:retire:304500:store:306500 -O3PipeView:fetch:339500:0x000102be:0:182:c_addi4spn s0, sp, 0:IntAlu -O3PipeView:decode:340000 -O3PipeView:rename:340500 +O3PipeView:issue:295500 +O3PipeView:complete:296000 +O3PipeView:retire:304000:store:0 +O3PipeView:fetch:293000:0x00010240:0:153:fdiv_s ft3, ft0, ft1:FloatDiv +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:296000 +O3PipeView:complete:302000 +O3PipeView:retire:303000:store:0 +O3PipeView:fetch:293000:0x00010244:0:154:fsw ft2, 0(a2):FloatMemWrite +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:298000 +O3PipeView:complete:298500 +O3PipeView:retire:303000:store:305000 +O3PipeView:fetch:293000:0x0001024c:0:156:fsw ft3, 0(a2):FloatMemWrite +O3PipeView:decode:293500 +O3PipeView:rename:294000 +O3PipeView:dispatch:295000 +O3PipeView:issue:302000 +O3PipeView:complete:302500 +O3PipeView:retire:303500:store:305500 +O3PipeView:fetch:339000:0x000102b4:0:184:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:339500 +O3PipeView:rename:340000 O3PipeView:dispatch:0 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339500:0x000102bc:0:181:c_addi4spn s0, sp, 0:IntAlu -O3PipeView:decode:340000 -O3PipeView:rename:340500 +O3PipeView:fetch:339000:0x000102b2:0:183:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:339500 +O3PipeView:rename:340000 O3PipeView:dispatch:0 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339500:0x000102ba:0:180:c_addi4spn s0, sp, 0:IntAlu -O3PipeView:decode:340000 -O3PipeView:rename:340500 +O3PipeView:fetch:339000:0x000102b0:0:182:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:339500 +O3PipeView:rename:340000 O3PipeView:dispatch:0 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102b8:0:179:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:fetch:339000:0x000102ae:0:181:c_addi4spn s0, sp, 0:IntAlu O3PipeView:decode:339500 O3PipeView:rename:340000 O3PipeView:dispatch:0 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102b6:0:178:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:fetch:339000:0x000102ac:0:180:c_addi4spn s0, sp, 0:IntAlu O3PipeView:decode:339500 O3PipeView:rename:340000 O3PipeView:dispatch:0 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102b4:0:177:c_addi4spn s0, sp, 0:IntAlu -O3PipeView:decode:339500 -O3PipeView:rename:340000 +O3PipeView:fetch:339500:0x000102be:0:189:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:340000 +O3PipeView:rename:340500 O3PipeView:dispatch:0 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102a0:0:172:addi a2, a2, 32:IntAlu -O3PipeView:decode:339500 -O3PipeView:rename:340000 -O3PipeView:dispatch:341000 -O3PipeView:issue:342000 +O3PipeView:fetch:339500:0x000102bc:0:188:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:340000 +O3PipeView:rename:340500 +O3PipeView:dispatch:0 +O3PipeView:issue:0 +O3PipeView:complete:0 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:339500:0x000102ba:0:187:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:340000 +O3PipeView:rename:340500 +O3PipeView:dispatch:0 +O3PipeView:issue:0 +O3PipeView:complete:0 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:339500:0x000102b8:0:186:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:340000 +O3PipeView:rename:340500 +O3PipeView:dispatch:0 +O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102b0:0:176:ecall:No_OpClass +O3PipeView:fetch:339500:0x000102b6:0:185:c_addi4spn s0, sp, 0:IntAlu +O3PipeView:decode:340000 +O3PipeView:rename:340500 +O3PipeView:dispatch:0 +O3PipeView:issue:0 +O3PipeView:complete:0 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:339000:0x000102a8:0:179:ecall:No_OpClass O3PipeView:decode:339500 O3PipeView:rename:340000 O3PipeView:dispatch:341000 O3PipeView:issue:0 O3PipeView:complete:0 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x0001029c:0:171:vnop:No_OpClass +O3PipeView:fetch:338500:0x0001029c:0:176:vnop:No_OpClass O3PipeView:decode:339000 O3PipeView:rename:339500 O3PipeView:dispatch:340500 O3PipeView:issue:340500 O3PipeView:complete:341000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x00010298:0:170:vnop:No_OpClass +O3PipeView:fetch:338500:0x00010298:0:175:addi a2, a2, 32:IntAlu O3PipeView:decode:339000 O3PipeView:rename:339500 O3PipeView:dispatch:340500 O3PipeView:issue:340500 O3PipeView:complete:341000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x00010294:0:169:vnop:No_OpClass +O3PipeView:fetch:338500:0x00010294:0:174:vnop:No_OpClass O3PipeView:decode:339000 O3PipeView:rename:339500 O3PipeView:dispatch:340500 O3PipeView:issue:340500 O3PipeView:complete:341000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x00010290:0:168:vnop:No_OpClass +O3PipeView:fetch:338500:0x00010290:0:173:vnop:No_OpClass O3PipeView:decode:339000 O3PipeView:rename:339500 O3PipeView:dispatch:340500 O3PipeView:issue:340500 O3PipeView:complete:341000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x0001028c:0:167:vnop:No_OpClass +O3PipeView:fetch:338500:0x0001028c:0:172:vnop:No_OpClass O3PipeView:decode:339000 O3PipeView:rename:339500 O3PipeView:dispatch:340500 O3PipeView:issue:340500 O3PipeView:complete:341000 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x00010284:0:165:addi t0, zero, 4:IntAlu +O3PipeView:fetch:338500:0x00010288:0:171:vnop:No_OpClass +O3PipeView:decode:339000 +O3PipeView:rename:339500 +O3PipeView:dispatch:340500 +O3PipeView:issue:340500 +O3PipeView:complete:341000 +O3PipeView:retire:0:store:0 +O3PipeView:fetch:338500:0x00010284:0:170:vnop:No_OpClass O3PipeView:decode:339000 O3PipeView:rename:339500 O3PipeView:dispatch:340500 O3PipeView:issue:340500 O3PipeView:complete:341000 -O3PipeView:retire:343000:store:0 -O3PipeView:fetch:339000:0x000102ac:0:175:addi a7, zero, 93:IntAlu -O3PipeView:decode:339500 -O3PipeView:rename:340000 -O3PipeView:dispatch:341000 -O3PipeView:issue:341000 -O3PipeView:complete:341500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102a8:0:174:addi a0, zero, 0:IntAlu +O3PipeView:fetch:338500:0x00010280:0:169:vsetvli t0, t0, e32, m1, ta, ma:SimdConfig +O3PipeView:decode:339000 +O3PipeView:rename:339500 +O3PipeView:dispatch:340500 +O3PipeView:issue:340500 +O3PipeView:complete:341000 +O3PipeView:retire:342500:store:0 +O3PipeView:fetch:339000:0x000102a4:0:178:addi a7, zero, 93:IntAlu O3PipeView:decode:339500 O3PipeView:rename:340000 O3PipeView:dispatch:341000 O3PipeView:issue:341000 O3PipeView:complete:341500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:339000:0x000102a4:0:173:vnop:No_OpClass +O3PipeView:fetch:339000:0x000102a0:0:177:addi a0, zero, 0:IntAlu O3PipeView:decode:339500 O3PipeView:rename:340000 O3PipeView:dispatch:341000 O3PipeView:issue:341000 O3PipeView:complete:341500 O3PipeView:retire:0:store:0 -O3PipeView:fetch:338500:0x00010288:0:166:vsetvli t0, t0, e32, m1, ta, ma:SimdConfig -O3PipeView:decode:339000 -O3PipeView:rename:339500 -O3PipeView:dispatch:340500 -O3PipeView:issue:341000 -O3PipeView:complete:341500 -O3PipeView:retire:343000:store:0 -O3PipeView:fetch:338500:0x00010280:0:164:ld a2, 300(a2):MemRead -O3PipeView:decode:339000 -O3PipeView:rename:339500 -O3PipeView:dispatch:340500 -O3PipeView:issue:340500 -O3PipeView:complete:341000 -O3PipeView:retire:343000:store:0 -O3PipeView:fetch:344000:0x0001028c:0:183:vle32_v_micro v1, 0(a0), zero:SimdUnitStrideLoad -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:346000 -O3PipeView:complete:346500 -O3PipeView:retire:348500:store:0 -O3PipeView:fetch:344000:0x000102a0:0:188:addi a2, a2, 32:IntAlu -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:346000 -O3PipeView:complete:346500 -O3PipeView:retire:350000:store:0 -O3PipeView:fetch:344000:0x000102a8:0:190:addi a0, zero, 0:IntAlu -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:346000 -O3PipeView:complete:346500 -O3PipeView:retire:350000:store:0 -O3PipeView:fetch:344500:0x000102ac:0:191:addi a7, zero, 93:IntAlu -O3PipeView:decode:345500 -O3PipeView:rename:346000 -O3PipeView:dispatch:347000 -O3PipeView:issue:347000 -O3PipeView:complete:347500 -O3PipeView:retire:350000:store:0 -O3PipeView:fetch:344000:0x00010290:0:184:vle32_v_micro v2, 0(a1), zero:SimdUnitStrideLoad -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:346000 -O3PipeView:complete:346500 -O3PipeView:retire:349000:store:0 -O3PipeView:fetch:344000:0x00010298:0:186:vmul_vv_micro v4, v1, v2:SimdMult -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:348000 -O3PipeView:complete:348500 -O3PipeView:retire:349500:store:0 -O3PipeView:fetch:344000:0x00010294:0:185:vadd_vv_micro v3, v1, v2:SimdAdd -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:348000 -O3PipeView:complete:348500 -O3PipeView:retire:349500:store:0 -O3PipeView:fetch:344000:0x0001029c:0:187:vse32_v_micro v3, 0(a2):SimdUnitStrideStore -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:348500 -O3PipeView:complete:349000 -O3PipeView:retire:350000:store:352000 -O3PipeView:fetch:344000:0x000102a4:0:189:vse32_v_micro v4, 0(a2):SimdUnitStrideStore -O3PipeView:decode:344500 -O3PipeView:rename:345000 -O3PipeView:dispatch:346000 -O3PipeView:issue:348500 -O3PipeView:complete:349000 -O3PipeView:retire:350000:store:352001 +O3PipeView:fetch:343500:0x00010284:0:190:vle32_v_micro v1, 0(a0), zero:SimdUnitStrideLoad +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:345500 +O3PipeView:complete:346000 +O3PipeView:retire:398000:store:0 +O3PipeView:fetch:343500:0x00010298:0:195:addi a2, a2, 32:IntAlu +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:345500 +O3PipeView:complete:346000 +O3PipeView:retire:403000:store:0 +O3PipeView:fetch:343500:0x000102a0:0:197:addi a0, zero, 0:IntAlu +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:345500 +O3PipeView:complete:346000 +O3PipeView:retire:403000:store:0 +O3PipeView:fetch:344000:0x000102a4:0:198:addi a7, zero, 93:IntAlu +O3PipeView:decode:345000 +O3PipeView:rename:345500 +O3PipeView:dispatch:346500 +O3PipeView:issue:346500 +O3PipeView:complete:347000 +O3PipeView:retire:403000:store:0 +O3PipeView:fetch:343500:0x00010288:0:191:vle32_v_micro v2, 0(a1), zero:SimdUnitStrideLoad +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:345500 +O3PipeView:complete:346000 +O3PipeView:retire:402000:store:0 +O3PipeView:fetch:343500:0x00010290:0:193:vmul_vv_micro v4, v1, v2:SimdMult +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:401000 +O3PipeView:complete:401500 +O3PipeView:retire:402500:store:0 +O3PipeView:fetch:343500:0x0001028c:0:192:vadd_vv_micro v3, v1, v2:SimdAdd +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:401000 +O3PipeView:complete:401500 +O3PipeView:retire:402500:store:0 +O3PipeView:fetch:343500:0x00010294:0:194:vse32_v_micro v3, 0(a2):SimdUnitStrideStore +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:401500 +O3PipeView:complete:402000 +O3PipeView:retire:403000:store:405000 +O3PipeView:fetch:343500:0x0001029c:0:196:vse32_v_micro v4, 0(a2):SimdUnitStrideStore +O3PipeView:decode:344000 +O3PipeView:rename:344500 +O3PipeView:dispatch:345500 +O3PipeView:issue:401500 +O3PipeView:complete:402000 +O3PipeView:retire:403000:store:405001 diff --git a/examples/reference/reference_0.json.gz b/examples/reference/reference_0.json.gz new file mode 100644 index 0000000..f54119f Binary files /dev/null and b/examples/reference/reference_0.json.gz differ diff --git a/src/uScope/O3.py b/src/uScope/O3.py index 2297f63..9e0db5c 100644 --- a/src/uScope/O3.py +++ b/src/uScope/O3.py @@ -36,6 +36,7 @@ class Instruction: stages: Dict[PipelineStage, int] stage_order: List[PipelineStage] store_tick: int = 0 + core_id: int = 0 @property def mnemonic(self): diff --git a/src/uScope/configs/colors.json b/src/uScope/configs/colors.json index 58315c0..d8ca7f9 100644 --- a/src/uScope/configs/colors.json +++ b/src/uScope/configs/colors.json @@ -8,8 +8,7 @@ "IntMultDiv": [ "rail_animation", "cq_build_attempt_failed", - "terrible", - "head_dump_child_node_arrow" + "terrible" ], "FP_ALU": [ "good", @@ -38,7 +37,6 @@ "Matrix_Unit": [ "bad", "terrible", - "head_dump_child_node_arrow", "thread_state_uninterruptible" ], "System_Unit": [ diff --git a/src/uScope/converter.py b/src/uScope/converter.py index 033982f..2a62699 100644 --- a/src/uScope/converter.py +++ b/src/uScope/converter.py @@ -1,4 +1,4 @@ -from typing import Dict, List, Tuple +from typing import Dict, List, Optional, Tuple from tqdm import tqdm @@ -37,7 +37,7 @@ def __init__( self.stage_managers: Dict[PipelineStage, StageLaneManager] = {} self.func_units_managers: Dict[str, StageLaneManager] = {} - self.store_lane_manager: StageLaneManager = None + self.store_lane_manager: Optional[StageLaneManager] = None def convert(self, progress: bool = True) -> List[dict]: self._add_metadata() @@ -123,13 +123,14 @@ def _assign_lane_for_func_units( ) -> Tuple[int, int]: return self.func_units_managers[unit_name].assign_lane(start_time, end_time) + def _cname_for(self, instr: Instruction) -> str: + if instr.is_squashed: + return self.config.get_squashed_cname() + return self.config.get_color_for_instr(instr) + def _add_pipeline_stage_events(self, instr: Instruction): mnemonic = instr.mnemonic - cname = ( - self.config.get_squashed_cname() - if instr.is_squashed - else self.config.get_color_for_instr(instr) - ) + cname = self._cname_for(instr) active = [ (st, instr.stages[st]) @@ -181,11 +182,7 @@ def _add_execution_unit_events(self, instr: Instruction): pid, tid = self._assign_lane_for_func_units(unit, issue, complete) dur = complete - issue - cname = ( - self.config.get_squashed_cname() - if instr.is_squashed - else self.config.get_color_for_instr(instr) - ) + cname = self._cname_for(instr) self.duration_events.append( DurationEvent( @@ -242,11 +239,7 @@ def _add_store_completion_event(self, instr: Instruction): _, tid = self.store_lane_manager.assign_lane(retire_tick, store_tick) dur = store_tick - retire_tick - cname = ( - self.config.get_squashed_cname() - if instr.is_squashed - else self.config.get_color_for_instr(instr) - ) + cname = self._cname_for(instr) self.duration_events.append( DurationEvent( diff --git a/src/uScope/main.py b/src/uScope/main.py index a3776fd..c69d9a9 100644 --- a/src/uScope/main.py +++ b/src/uScope/main.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import argparse +import os import sys import json import logging @@ -16,17 +17,45 @@ logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") logger = logging.getLogger(__name__) + +def _make_output_path(output_dir: str, input_stem: str, core_id: int, gzip_enabled: bool) -> str: + output = str(Path(output_dir) / f"{input_stem}_{core_id}.json") + if gzip_enabled: + output += '.gz' + return output + + +def _convert_and_dump( + trace_parser: PipeViewParser, + config, + args, + output_file: str, + progress: bool, +): + converter = ChromeTracingConverter( + trace_parser, config, + args.exclude_exec, args.exclude_pipeline, + args.only_committed, args.store_completions, + ) + events = converter.convert(progress=progress) + logger.info(f"Writing {output_file}") + with (gzip.open if args.gzip else open)(output_file, 'wt', encoding='utf-8') as f: + json.dump(events, f, indent=2) + return len(events) + def main(): parser = argparse.ArgumentParser( description="Convert gem5 O3PipeView trace to Perfetto / Chrome Tracing JSON format." ) parser.add_argument( "--input-file", '-i', + required=True, help="Path to the input trace file (e.g., trace.out)" ) parser.add_argument( - "--output-file", "-o", - help="Output JSON file name. If not specified, it will be derived from input_file" + "--output-dir", "-o", + default=".", + help="Output directory for JSON traces. Defaults to current directory." ) parser.add_argument( "--config-path", "-c", @@ -99,22 +128,14 @@ def main(): logging.getLogger().setLevel(logging.WARNING) input_file = args.input_file - - if args.output_file: - output_file = args.output_file - else: - if input_file.endswith('.out'): - output_file = input_file[:-4] + '.json' - else: - output_file = input_file + '.json' - - if args.gzip and not output_file.endswith('.gz'): - output_file += '.gz' + output_dir = args.output_dir try: if not Path(input_file).exists(): raise FileNotFoundError(f"Input file not found: {input_file}") + os.makedirs(output_dir, exist_ok=True) + logger.info(f"Parsing {input_file}") trace_parser = PipeViewParser() trace_parser.parse_file(input_file) @@ -123,18 +144,29 @@ def main(): raise ValueError("No instructions with valid timestamps found") logger.info(f"Loading configuration from {args.config_path if args.config_path else 'default location'}") - config = load_config(args.config_path) - converter = ChromeTracingConverter(trace_parser, config, args.exclude_exec, args.exclude_pipeline, args.only_committed, args.store_completions) - events = converter.convert(progress=not args.quiet) - - logger.info(f"Writing {output_file}") + all_instructions = trace_parser.instructions + core_ids = trace_parser.get_core_ids() + input_stem = Path(input_file).stem + progress = not args.quiet - with (gzip.open if args.gzip else open)(output_file, 'wt', encoding='utf-8') as f: - json.dump(events, f, indent=2) - - logger.info(f"Total events: {len(events)}") + if len(core_ids) == 1: + core_id = core_ids[0] + core_output = _make_output_path(output_dir, input_stem, core_id, args.gzip) + total = _convert_and_dump(trace_parser, config, args, core_output, progress) + logger.info(f"Total events: {total}") + else: + logger.info(f"Detected {len(core_ids)} cores: {core_ids}") + for core_id in core_ids: + trace_parser.instructions = { + seq: instr + for seq, instr in all_instructions.items() + if instr.core_id == core_id + } + core_output = _make_output_path(output_dir, input_stem, core_id, args.gzip) + total = _convert_and_dump(trace_parser, config, args, core_output, progress) + logger.info(f"Core {core_id}: {total} events") except ValueError as e: logging.error(f"Value error: {e}") diff --git a/src/uScope/parser.py b/src/uScope/parser.py index dd128fa..96b0354 100644 --- a/src/uScope/parser.py +++ b/src/uScope/parser.py @@ -6,6 +6,7 @@ class PipeViewParser: def __init__(self): self.instructions = {} + self.current_core_id = None self.current_seq_num = None self.current_instr = None self.stage_map = {f"{stage}": stage for stage in PipelineStage.order()} @@ -18,21 +19,24 @@ def parse_file(self, filename: str): self.parse_line(line) if self.current_instr is not None: - self.instructions[self.current_seq_num] = self.current_instr + self.instructions[(self.current_core_id, self.current_seq_num)] = self.current_instr self.instructions = { - seq: instr - for seq, instr in self.instructions.items() + key: instr + for key, instr in self.instructions.items() if any(tick > 0 for tick in instr.stages.values()) } + def get_core_ids(self): + return sorted(set(instr.core_id for instr in self.instructions.values())) + @staticmethod def _parse_fetch_line(rest: str): parts = rest.split(":", 5) if len(parts) != 6: return None - tick_str, pc, _, seq_str, disasm, opclass = parts - return int(tick_str), pc, int(seq_str), disasm.strip(), opclass.strip() + tick_str, pc, core_id_str, seq_str, disasm, opclass = parts + return int(tick_str), pc, int(core_id_str), int(seq_str), disasm.strip(), opclass.strip() @staticmethod def _parse_stage_line(rest: str): @@ -62,11 +66,12 @@ def parse_line(self, line: str): result = self._parse_fetch_line(rest[6:]) if result is None: return - tick, pc, seq_num, disasm, opclass = result + tick, pc, core_id, seq_num, disasm, opclass = result if self.current_instr is not None: - self.instructions[self.current_seq_num] = self.current_instr + self.instructions[(self.current_core_id, self.current_seq_num)] = self.current_instr + self.current_core_id = core_id self.current_seq_num = seq_num self.current_instr = Instruction( seq_num=seq_num, @@ -75,6 +80,7 @@ def parse_line(self, line: str): opclass=opclass, stages={}, stage_order=[], + core_id=core_id, ) self.current_instr.stages[PipelineStage.FETCH] = tick diff --git a/tests/conftest.py b/tests/conftest.py index fdd1bed..7dd6425 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -40,7 +40,7 @@ def minimal_parser() -> PipeViewParser: PipelineStage.RETIRE, ], ) - parser.instructions = {1: instr} + parser.instructions = {(0, 1): instr} return parser diff --git a/tests/test_main.py b/tests/test_main.py index 810b461..b707689 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -20,15 +20,17 @@ def test_main_basic(tmp_path: Path, monkeypatch): """ input_file.write_text(content) - output_file = tmp_path.joinpath("output.json") + output_dir = tmp_path.joinpath("output") + output_dir.mkdir() monkeypatch.setattr( sys, "argv", - ["uscope", "--input-file", str(input_file), "--output-file", str(output_file)], + ["uscope", "--input-file", str(input_file), "--output-dir", str(output_dir)], ) main() + output_file = output_dir.joinpath("trace_0.json") assert output_file.exists() data = json.loads(output_file.read_text()) assert isinstance(data, list) diff --git a/tests/test_parser.py b/tests/test_parser.py index dffc25e..4cad3e9 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -36,11 +36,11 @@ def assert_instruction( assert instr.stages[stage] == expected, f"Stage {stage} value mismatch" -def assert_instructions(parser, expected, stage_order): +def assert_instructions(parser, expected, stage_order, core_id=0): assert len(parser.instructions) == len(expected) for seq_num, (pc, disasm, opclass, stages) in expected.items(): assert_instruction( - instr=parser.instructions[seq_num], + instr=parser.instructions[(core_id, seq_num)], seq_num=seq_num, pc=pc, disasm=disasm, @@ -168,7 +168,7 @@ def test_parse_missing_stages(trace_with_missing_stages): ), } assert_instructions(parser, expected, expected_order) - assert PipelineStage.DISPATCH not in parser.instructions[1].stages + assert PipelineStage.DISPATCH not in parser.instructions[(0, 1)].stages def test_parse_empty_lines(trace_with_empty_lines):