[clang] [llvm] [RISCV][MC] Support experimental Zilx extension (PR #209419)
Alexander Richardson via cfe-commits
cfe-commits at lists.llvm.org
Sat Jul 25 22:42:07 PDT 2026
================
@@ -0,0 +1,34 @@
+# RUN: not llvm-mc -triple=riscv32 --mattr=+experimental-zilx %s 2>&1 \
+# RUN: | FileCheck %s --check-prefixes=CHECK-ERROR,CHECK-RV32-ERROR
+# RUN: not llvm-mc -triple=riscv64 --mattr=+experimental-zilx %s 2>&1 \
+# RUN: | FileCheck %s --check-prefix=CHECK-ERROR
+
+# Zilx loads take three registers; the memory-operand syntax is not accepted.
----------------
arichardson wrote:
> Ok, I'm actually dropping my aversion to `<reg>(<reg>)`, for the unscaled version because we need to be clear about which is the base (a pointer) and which is the offset (an integer) for RVY.
>
> I still think it's weird for the scaled version, because the integer gets multiplied by something.
One other option could be to just have something like `lw a0, a1(a2)` expand to the zilx load and for scaled maybe it would need to be something like `4*<reg>(<reg>)` (although that could be awkward to parse).
I guess it's probably best to defer that until pre/post-increment has been defined, and just use the `(reg), reg` syntax.
https://github.com/llvm/llvm-project/pull/209419
More information about the cfe-commits
mailing list