[llvm-dev] Addressing TableGen's error "Ran out of lanemask bits" in order to use more than 32 subregisters per register
Alex Susu via llvm-dev
llvm-dev at lists.llvm.org
Thu Sep 8 06:37:02 PDT 2016
Hello.
In my TableGen back end description I need to use more than 32 (e.g., 128, 1024, etc)
subregisters per register for my research SIMD processor. I have used so far with success
32 subregisters.
However, when using 128 subregisters when I now give the command:
llvm-tblgen -gen-register-info Connex.td
I get an error message "error:Ran out of lanemask bits to represent subregister
sub_16_033".
To handle this limitation, I started editing the files where this error comes from:
llvm/utils/TableGen/CodeGenRegisters.h
llvm/utils/TableGen/CodeGenRegisters.cpp
More exactly, the error comes from the fact the member LaneMask of the classes
CodeGenSubRegIndex and CodeGenRegister is unsigned (i.e., 32 bits). So for every
lane/subregister we require a bit from the type LaneMask.
I plan to use type long (or even type int1024_t from the boost library, header
cpp_int.hpp) for LaneMask and change accordingly the methods handing the type.
Is there are any limitation I am not aware of (maybe in LLVMV's register allocator)
that would prevent me from using more than 32 lanes/subregisters?
Thank you very much,
Alex
More information about the llvm-dev
mailing list