riscv64: Initial SIMD Vector Implementation (#6240)
* riscv64: Remove unused code * riscv64: Add vector types * riscv64: Initial Vector ABI Load/Stores * riscv64: Vector Loads/Stores * riscv64: Fix `vsetvli` encoding error * riscv64: Add SIMD `iadd` runtests * riscv64: Rename `VecSew` The SEW name is correct, but only for VType. We also use this type in loads/stores as the Efective Element Width, so the name isn't quite correct in that case. * ci: Add V extension to RISC-V QEMU * riscv64: Misc Cleanups * riscv64: Check V extension in `load`/`store` for SIMD * riscv64: Fix `sumop` doc comment * cranelift: Fix comment typo * riscv64: Add convert for VType and VecElementWidth * riscv64: Remove VecElementWidth converter
This commit is contained in:
@@ -329,6 +329,31 @@
|
||||
(guard_size u32)
|
||||
(probe_count u32)
|
||||
(tmp WritableReg))
|
||||
|
||||
(VecAluRRR
|
||||
(op VecAluOpRRR)
|
||||
(vd WritableReg)
|
||||
(vs1 Reg)
|
||||
(vs2 Reg)
|
||||
(vstate VState))
|
||||
|
||||
(VecSetState
|
||||
(rd WritableReg)
|
||||
(vstate VState))
|
||||
|
||||
(VecLoad
|
||||
(eew VecElementWidth)
|
||||
(to WritableReg)
|
||||
(from VecAMode)
|
||||
(flags MemFlags)
|
||||
(vstate VState))
|
||||
|
||||
(VecStore
|
||||
(eew VecElementWidth)
|
||||
(to VecAMode)
|
||||
(from Reg)
|
||||
(flags MemFlags)
|
||||
(vstate VState))
|
||||
))
|
||||
|
||||
|
||||
@@ -711,6 +736,9 @@
|
||||
|
||||
;; ISA Extension helpers
|
||||
|
||||
(decl pure has_v () bool)
|
||||
(extern constructor has_v has_v)
|
||||
|
||||
(decl pure has_zbkb () bool)
|
||||
(extern constructor has_zbkb has_zbkb)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user