[llvm] [RISCV] Support isel for Zacas for 2*XLen types. (PR #77814)

James Y Knight via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 17 11:44:36 PST 2024


jyknight wrote:

> And the lowerings in this patch would require that extension be present?

Yeah.

For RV64 128-bit atomics support: require Zacas, V, and that new extension which promises that 128-bit vector load/store are a single memory operation. Then emit vector instructions for 128-bit atomic load/store.

For RV32 64-bit atomics support: require Zacas, D, and a new extension which promises that 64-bit FLD/FSD are a single memory operation. Emit those for 64-bit atomic load/store.

Alternatively to requiring the V or D extensiosn, an extension implementing integer load/store instructions of double-register widths (reusing the encodings of LQ/SQ in RV64 and LD/SD in RV32, which aren't currently supported) could be nice. I see the latter is actually already proposed in https://github.com/riscv/riscv-zilsd/blob/main/zilsd.adoc. But even with that, you'd still need the previously-described extension promising a single memory operation for double-word load/stores.

https://github.com/llvm/llvm-project/pull/77814


More information about the llvm-commits mailing list