Skip to content

[RISC-V] Update SpacemiT X60 vector scheduling model with measured latencies #144564

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 92 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
1b243f3
Initial version + test
mikhailramalho May 9, 2025
2d42b7b
Added all instructions
mikhailramalho Jun 11, 2025
5e10525
Let's start with easy one vmv.x.s and vmv.s.x
mikhailramalho Jun 13, 2025
82b0d80
Added vrgather.vx
mikhailramalho Jun 13, 2025
5c0019a
Added vrgather.vi, same as vrgather.vx
mikhailramalho Jun 13, 2025
c2efe44
Add vcompress
mikhailramalho Jun 13, 2025
597f5cb
Added vmv{1,2,4,8}.r
mikhailramalho Jun 13, 2025
3eb214c
Added vsext/vzext
mikhailramalho Jun 13, 2025
3b2977b
Added vrgather
mikhailramalho Jun 13, 2025
9f60d75
Unified vgather and vcompress
mikhailramalho Jun 13, 2025
d92cedb
Added vfmv
mikhailramalho Jun 13, 2025
4d1d5f2
Added constant vm* operations
mikhailramalho Jun 13, 2025
b52a1d4
Added vmpop and vmfirst
mikhailramalho Jun 13, 2025
26c2c85
Added viota and vid
mikhailramalho Jun 13, 2025
bd4bde5
Moved vmv closed together
mikhailramalho Jun 13, 2025
70978c2
added vnclip, vnclipu, vnsra, vnsrl
mikhailramalho Jun 13, 2025
8c2affd
Added vredmax, vredmaxu, vredmin, vredminu, vredsum, vredand, vredor,…
mikhailramalho Jun 14, 2025
cf7cac2
Added vwredsum, vwredsumu and unified the other vreds
mikhailramalho Jun 14, 2025
671aa11
Update vmerge
mikhailramalho Jun 16, 2025
2bb7c08
Added vmv
mikhailramalho Jun 16, 2025
710826f
Added vsll, vsra, vsrl
mikhailramalho Jun 16, 2025
633f483
Added vsll, vsra, vsrl
mikhailramalho Jun 16, 2025
3425cfc
Added vslide instructions
mikhailramalho Jun 16, 2025
c8ed9a6
Added vfcvt, vfmv, vfmerge, vfclass, vfrec7, vfsgnj, vfsgnjn, vfsgnjx…
mikhailramalho Jun 16, 2025
67fe7c0
Added vsbc, vadc
mikhailramalho Jun 16, 2025
e16a2f4
Added vmadc, vmseq, vmsle, vmsleu, vmsne, vmsgt, vmsgtu, vmslt, vmslt…
mikhailramalho Jun 16, 2025
016a20e
vmax, vmaxu, vmin, vminu
mikhailramalho Jun 16, 2025
25bf2c2
Added vaadd, vaaddu, vasub, vasubu, vsadd, vsaddu, vssub, vssubu
mikhailramalho Jun 16, 2025
c4ac239
Added vfadd.vf, vfsub.vf, vfmax, vfmin, vfrsub
mikhailramalho Jun 16, 2025
429ff5c
Added vmfeq, vmfge, vmfle, vmfgt, vmflt, vmfne
mikhailramalho Jun 16, 2025
91484d8
Added several vw* instructions
mikhailramalho Jun 16, 2025
6aa3bc0
Added vadd, vsub, vrsub, vand, vor, vxor
mikhailramalho Jun 16, 2025
0809937
Added vdiv, vdivu, vrem, vremu
mikhailramalho Jun 16, 2025
238d62f
Added vfdiv.vf and vfrdiv.vf
mikhailramalho Jun 16, 2025
0e73533
Added vfncvt
mikhailramalho Jun 17, 2025
ca000b3
Added vfwcvt
mikhailramalho Jun 17, 2025
5df4e75
Added vfn* and vfm*
mikhailramalho Jun 17, 2025
312341e
vfmin/vfmax.vv has the same latency as vfmin/vfmax.vf
mikhailramalho Jun 17, 2025
3cb4c0b
Added vmul, vmulh, vmulhu, vmulhsu, vmacc, vmadd, vnmsac, vnmsub
mikhailramalho Jun 17, 2025
778600f
Added vsmul
mikhailramalho Jun 17, 2025
91fc6b3
Added vfadd.vv, vfsub.vv, vfmul.vf, vfmul.vv
mikhailramalho Jun 17, 2025
47eec38
Added vfwmacc, vfwmsac, vfwnmacc, vfwnmsac
mikhailramalho Jun 17, 2025
4f42ca1
Added vfredmax.vs, vfredmin.vs, vfredusum.vs
mikhailramalho Jun 17, 2025
8c8c32b
Added vfwmul
mikhailramalho Jun 17, 2025
c798f45
Added vfredosum.vs
mikhailramalho Jun 17, 2025
26a2e09
Added vfwredosum, vfwredusum
mikhailramalho Jun 17, 2025
6e32989
Added vfdiv.vv
mikhailramalho Jun 17, 2025
ed566ec
Added vfwadd and vfwsub
mikhailramalho Jun 17, 2025
e2a9402
Fixed vfdiv.vv
mikhailramalho Jun 17, 2025
e9ab84a
Fix vf reduction
mikhailramalho Jun 18, 2025
f8c9c1e
Started clean up of comments, fix vadc/vsbc while at it
mikhailramalho Jun 18, 2025
3d71887
Improve comment on widening instructions
mikhailramalho Jun 18, 2025
1618a06
Clean up div and rem
mikhailramalho Jun 18, 2025
6a9ee96
Code style
mikhailramalho Jun 18, 2025
774927d
Added comment for vsmul
mikhailramalho Jun 18, 2025
150aa90
Fix comment
mikhailramalho Jun 18, 2025
ab7583a
Split Vector Floating-Point Instructions to more closely match the co…
mikhailramalho Jun 18, 2025
ac03662
Code style
mikhailramalho Jun 18, 2025
3bc008a
improved vfw latencies
mikhailramalho Jun 18, 2025
0c7ec23
Comment
mikhailramalho Jun 18, 2025
b334a3b
Improved comment for vf{r}div
mikhailramalho Jun 18, 2025
2d3a38d
Improved comments for vfsqrt
mikhailramalho Jun 18, 2025
6a0dc47
Improve comment for vred*
mikhailramalho Jun 18, 2025
94f0704
Improved comments for vredsum
mikhailramalho Jun 18, 2025
eb3d6c8
Improved vfredosum
mikhailramalho Jun 18, 2025
4346139
Updated test cases
mikhailramalho Jun 18, 2025
d31b781
Split vfwredusum to more closely match collected data
mikhailramalho Jun 18, 2025
90f047e
Code style
mikhailramalho Jun 18, 2025
425fb59
Improved comment for vslide
mikhailramalho Jun 18, 2025
483e5aa
Improved vrgatherei16.vv
mikhailramalho Jun 18, 2025
63d0c30
Updated test cases
mikhailramalho Jun 18, 2025
3220793
Renamed classes and got rid of unnecessary variables
mikhailramalho Jun 18, 2025
afb7351
Make !cond formatting a bit more readable
mikhailramalho Jun 18, 2025
ef567f0
Merge remote-tracking branch 'origin/main' into x60-rvv
mikhailramalho Jun 19, 2025
d582653
Renamed test case
mikhailramalho Jun 19, 2025
55ee05b
Added some comments on ProcResource
mikhailramalho Jun 19, 2025
2d55067
Fix vf instructions not using the VFPU
mikhailramalho Jun 19, 2025
f7769ae
Added estimations for vector ld/st
mikhailramalho Jun 27, 2025
e83cccd
Renamed variable
mikhailramalho Jun 30, 2025
eee5854
Renamed variable
mikhailramalho Jun 30, 2025
9925ae5
Improve comment
mikhailramalho Jun 30, 2025
7b83053
Fixed latencies that were already split
mikhailramalho Jun 30, 2025
59513e6
Clean up test case
mikhailramalho Jun 30, 2025
b055340
Renamed variable
mikhailramalho Jun 30, 2025
4318105
Reuse variable
mikhailramalho Jun 30, 2025
10f53c7
Avoid string cast
mikhailramalho Jul 1, 2025
b999470
Updated WriteVIALUV/X/I to use worst case latency
mikhailramalho Jul 1, 2025
241fcb0
Typo
mikhailramalho Jul 1, 2025
66801a0
Replaced simple cond with if
mikhailramalho Jul 1, 2025
012c8e8
Renamed variable
mikhailramalho Jul 1, 2025
b54c0b3
Update vfdiv.vv/.vf and vfrdiv latencies
mikhailramalho Jul 1, 2025
a2fa503
Split test case
mikhailramalho Jul 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
997 changes: 996 additions & 1 deletion llvm/lib/Target/RISCV/RISCVSchedSpacemitX60.td

Large diffs are not rendered by default.

34 changes: 17 additions & 17 deletions llvm/test/CodeGen/RISCV/rvv/vxrm-insert-out-of-loop.ll
Original file line number Diff line number Diff line change
Expand Up @@ -304,27 +304,27 @@ define void @test1(ptr nocapture noundef writeonly %dst, i32 noundef signext %i_
; RV64X60-NEXT: li t1, 0
; RV64X60-NEXT: addi s1, a7, -1
; RV64X60-NEXT: zext.w s1, s1
; RV64X60-NEXT: mul t2, a1, s1
; RV64X60-NEXT: mul t3, a3, s1
; RV64X60-NEXT: mul t4, a5, s1
; RV64X60-NEXT: mul t3, a1, s1
; RV64X60-NEXT: mul t4, a3, s1
; RV64X60-NEXT: mul t5, a5, s1
; RV64X60-NEXT: add s0, a0, a6
; RV64X60-NEXT: add s1, a2, a6
; RV64X60-NEXT: add t5, a4, a6
; RV64X60-NEXT: add s0, s0, t2
; RV64X60-NEXT: csrr t2, vlenb
; RV64X60-NEXT: add t3, t3, s1
; RV64X60-NEXT: add s1, a2, a6
; RV64X60-NEXT: add t3, t3, s0
; RV64X60-NEXT: add s0, a4, a6
; RV64X60-NEXT: add t4, t4, s1
; RV64X60-NEXT: li t6, 32
; RV64X60-NEXT: add t4, t4, t5
; RV64X60-NEXT: sltu t3, a0, t3
; RV64X60-NEXT: sltu s1, a2, s0
; RV64X60-NEXT: and t3, t3, s1
; RV64X60-NEXT: or t5, a1, a3
; RV64X60-NEXT: sltu s1, a0, t4
; RV64X60-NEXT: sltu s0, a4, s0
; RV64X60-NEXT: slti t4, t5, 0
; RV64X60-NEXT: add t5, t5, s0
; RV64X60-NEXT: sltu s0, a0, t4
; RV64X60-NEXT: sltu s1, a2, t3
; RV64X60-NEXT: and t4, s0, s1
; RV64X60-NEXT: or s2, a1, a3
; RV64X60-NEXT: sltu s0, a0, t5
; RV64X60-NEXT: sltu s1, a4, t3
; RV64X60-NEXT: slti t3, s2, 0
; RV64X60-NEXT: and s0, s0, s1
; RV64X60-NEXT: or s1, a1, a5
; RV64X60-NEXT: or t4, t3, t4
; RV64X60-NEXT: or t4, t4, t3
; RV64X60-NEXT: slli t3, t2, 1
; RV64X60-NEXT: slti s1, s1, 0
; RV64X60-NEXT: or s0, s0, s1
Expand Down Expand Up @@ -366,8 +366,8 @@ define void @test1(ptr nocapture noundef writeonly %dst, i32 noundef signext %i_
; RV64X60-NEXT: # => This Inner Loop Header: Depth=2
; RV64X60-NEXT: vl2r.v v8, (s2)
; RV64X60-NEXT: vl2r.v v10, (s3)
; RV64X60-NEXT: sub s1, s1, t3
; RV64X60-NEXT: vaaddu.vv v8, v8, v10
; RV64X60-NEXT: sub s1, s1, t3
; RV64X60-NEXT: vs2r.v v8, (s4)
; RV64X60-NEXT: add s4, s4, t3
; RV64X60-NEXT: add s3, s3, t3
Expand Down
188 changes: 97 additions & 91 deletions llvm/test/tools/llvm-mca/RISCV/SpacemitX60/atomic.s
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ amomaxu.d.aqrl s5, s4, (s3)
# CHECK-NEXT: [2] - SMX60_IEUA:1
# CHECK-NEXT: [3] - SMX60_IEUB:1
# CHECK-NEXT: [4] - SMX60_LS:2
# CHECK-NEXT: [5] - SMX60_VFP:1
# CHECK-NEXT: [6] - SMX60_VIEU:1
# CHECK-NEXT: [7] - SMX60_VLS:1

# CHECK: Instruction Info:
# CHECK-NEXT: [1]: #uOps
Expand Down Expand Up @@ -215,98 +218,101 @@ amomaxu.d.aqrl s5, s4, (s3)
# CHECK-NEXT: [2] - SMX60_IEUB
# CHECK-NEXT: [3.0] - SMX60_LS
# CHECK-NEXT: [3.1] - SMX60_LS
# CHECK-NEXT: [4] - SMX60_VFP
# CHECK-NEXT: [5] - SMX60_VIEU
# CHECK-NEXT: [6] - SMX60_VLS

# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3.0] [3.1]
# CHECK-NEXT: - - - 44.00 44.00
# CHECK-NEXT: [0] [1] [2] [3.0] [3.1] [4] [5] [6]
# CHECK-NEXT: - - - 44.00 44.00 - - -

# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3.0] [3.1] Instructions:
# CHECK-NEXT: - - - 0.50 0.50 lr.w t0, (t1)
# CHECK-NEXT: - - - 0.50 0.50 lr.w.aq t1, (t2)
# CHECK-NEXT: - - - 0.50 0.50 lr.w.rl t2, (t3)
# CHECK-NEXT: - - - 0.50 0.50 lr.w.aqrl t3, (t4)
# CHECK-NEXT: - - - 0.50 0.50 sc.w t6, t5, (t4)
# CHECK-NEXT: - - - 0.50 0.50 sc.w.aq t5, t4, (t3)
# CHECK-NEXT: - - - 0.50 0.50 sc.w.rl t4, t3, (t2)
# CHECK-NEXT: - - - 0.50 0.50 sc.w.aqrl t3, t2, (t1)
# CHECK-NEXT: - - - 0.50 0.50 lr.d t0, (t1)
# CHECK-NEXT: - - - 0.50 0.50 lr.d.aq t1, (t2)
# CHECK-NEXT: - - - 0.50 0.50 lr.d.rl t2, (t3)
# CHECK-NEXT: - - - 0.50 0.50 lr.d.aqrl t3, (t4)
# CHECK-NEXT: - - - 0.50 0.50 sc.d t6, t5, (t4)
# CHECK-NEXT: - - - 0.50 0.50 sc.d.aq t5, t4, (t3)
# CHECK-NEXT: - - - 0.50 0.50 sc.d.rl t4, t3, (t2)
# CHECK-NEXT: - - - 0.50 0.50 sc.d.aqrl t3, t2, (t1)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.w a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.w a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.w a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.w a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.w a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.w a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.w s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.w s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.w s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.w.aq a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.w.aq a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.w.aq a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.w.aq a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.w.aq a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.w.aq a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.w.aq s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.w.aq s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.w.aq s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.w.rl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.w.rl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.w.rl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.w.rl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.w.rl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.w.rl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.w.rl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.w.rl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.w.rl s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.w.aqrl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.w.aqrl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.w.aqrl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.w.aqrl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.w.aqrl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.w.aqrl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.w.aqrl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.w.aqrl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.w.aqrl s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.d a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.d a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.d a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.d a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.d a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.d a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.d s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.d s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.d s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.d.aq a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.d.aq a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.d.aq a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.d.aq a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.d.aq a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.d.aq a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.d.aq s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.d.aq s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.d.aq s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.d.rl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.d.rl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.d.rl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.d.rl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.d.rl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.d.rl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.d.rl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.d.rl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.d.rl s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 amoswap.d.aqrl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 amoadd.d.aqrl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 amoxor.d.aqrl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 amoand.d.aqrl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 amoor.d.aqrl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 amomin.d.aqrl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 amomax.d.aqrl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 amominu.d.aqrl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 amomaxu.d.aqrl s5, s4, (s3)
# CHECK-NEXT: [0] [1] [2] [3.0] [3.1] [4] [5] [6] Instructions:
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.w t0, (t1)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.w.aq t1, (t2)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.w.rl t2, (t3)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.w.aqrl t3, (t4)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.w t6, t5, (t4)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.w.aq t5, t4, (t3)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.w.rl t4, t3, (t2)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.w.aqrl t3, t2, (t1)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.d t0, (t1)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.d.aq t1, (t2)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.d.rl t2, (t3)
# CHECK-NEXT: - - - 0.50 0.50 - - - lr.d.aqrl t3, (t4)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.d t6, t5, (t4)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.d.aq t5, t4, (t3)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.d.rl t4, t3, (t2)
# CHECK-NEXT: - - - 0.50 0.50 - - - sc.d.aqrl t3, t2, (t1)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.w a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.w a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.w a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.w a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.w a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.w a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.w s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.w s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.w s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.w.aq a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.w.aq a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.w.aq a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.w.aq a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.w.aq a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.w.aq a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.w.aq s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.w.aq s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.w.aq s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.w.rl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.w.rl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.w.rl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.w.rl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.w.rl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.w.rl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.w.rl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.w.rl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.w.rl s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.w.aqrl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.w.aqrl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.w.aqrl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.w.aqrl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.w.aqrl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.w.aqrl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.w.aqrl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.w.aqrl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.w.aqrl s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.d a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.d a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.d a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.d a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.d a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.d a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.d s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.d s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.d s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.d.aq a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.d.aq a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.d.aq a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.d.aq a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.d.aq a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.d.aq a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.d.aq s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.d.aq s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.d.aq s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.d.rl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.d.rl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.d.rl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.d.rl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.d.rl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.d.rl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.d.rl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.d.rl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.d.rl s5, s4, (s3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoswap.d.aqrl a4, ra, (s0)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoadd.d.aqrl a1, a2, (a3)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoxor.d.aqrl a2, a3, (a4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoand.d.aqrl a3, a4, (a5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amoor.d.aqrl a4, a5, (a6)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomin.d.aqrl a5, a6, (a7)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomax.d.aqrl s7, s6, (s5)
# CHECK-NEXT: - - - 0.50 0.50 - - - amominu.d.aqrl s6, s5, (s4)
# CHECK-NEXT: - - - 0.50 0.50 - - - amomaxu.d.aqrl s5, s4, (s3)
Loading