[llvm] [LLVM][MC][DecoderEmitter] Add support to specialize decoder per bitwidth (PR #154865)

Rahul Joshi via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 29 12:11:34 PDT 2025


================
@@ -700,6 +700,12 @@ static constexpr DecoderListEntry DecoderList32[]{
     {DecoderTableZdinxRV32Only32, {}, "RV32-only Zdinx (Double in Integer)"},
 };
 
+// Define bitwidths for various types used to instantiate the decoder.
+template <> static constexpr uint32_t llvm::MCD::InsnBitWidth<uint16_t> = 16;
+template <> static constexpr uint32_t llvm::MCD::InsnBitWidth<uint32_t> = 32;
+// Use uint64_t to represent 48 bit instructions.
+template <> static constexpr uint32_t llvm::MCD::InsnBitWidth<uint64_t> = 48;
----------------
jurahul wrote:

@topperc yeah, if we have true 64-bit insts in future, then 48-bit insts need to use a different type. It will not break silently though, since `InsnBitWidth` specializations need to be defined at that time and if we have > 1 type with the same `InsnBitWidth` value, we will get compiler warnings about ambiguous templating.  

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


More information about the llvm-commits mailing list