[PATCH] D23566: [RISCV 8/10] Add support for all RV32I instructions

Alex Bradbury via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 8 01:18:35 PDT 2016


asb added inline comments.


================
Comment at: lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp:162
+    return (isConstantImm() && isInt<13>(getConstantImm()) &&
+            getConstantImm() % 2 == 0);
+  }
----------------
theraven wrote:
> This probably wants to be `SImmScaled<12,1>(getConstantImm())`.
> 
> It would also be nice to use the same terminology (scaled immediate) as other back ends and the generic code, rather than simm-mask.
MIPS uses the SImmScaled functions, but naming is of the form `simm19_lsl2`. Both the lsl naming and the {U,I}ImmScaled functions are unique to MIPS currently so there's not broad consensus here - though I agree unifying terminology is useful.

I feel the naming is perhaps slightly confusing in that the decision to describe a transformation from the encoded to the 'actual' value seems arbitrary vs describing the transformation from 'actual' value to encoded value. The options I considered were:

* `simm20_lsl1:$imm20` (describes how to go from encoded value to logical value. Matches MIPS)
* `simm21_asr1:$imm20` (describes going from logical value to encoded value)
* `simm21_mask1:$imm20` (current approach, describes the constraints on the encoded value)

Are you suggesting `simm20_scaled1:$imm20`? Or perhaps `simm21_scaled1:$imm20`?


https://reviews.llvm.org/D23566





More information about the llvm-commits mailing list