error:Ran out of lanemask bits to represent subregister

Hello,
i am trying to construct a register of size 65536 bit by combining 2 registers of 32768 bits. both the 32768 bit registers are different so i have to use the following method

let SubRegIndices = [sub_32768bit, sub_32768bit_hi], CoveredBySubRegs = 1 in

but i am getting following error…

error:Ran out of lanemask bits to represent subregister sub_32768bit_hi_then_sub_16384bit_hi_then_sub_32bit

now how to increase lanemask bits? what changes are required in IntrinsicEmitter.cpp file??

Please reply.

Hello,
i am trying to construct a register of size 65536 bit by combining 2
registers of 32768 bits. both the 32768 bit registers are different so i
have to use the following method

let SubRegIndices = [sub_32768bit, sub_32768bit_hi], CoveredBySubRegs = 1 in

but i am getting following error..

error:Ran out of lanemask bits to represent subregister
sub_32768bit_hi_then_sub_16384bit_hi_then_sub_32bit

now how to increase lanemask bits? what changes are required
in IntrinsicEmitter.cpp file??

Please reply.

please tell me how to solve this lanemask bits issue?

how to increase lanemask bits?

Your first post was 6 hours ago and you’ve pinged it twice. That’s too frequent, the generally accepted ping rate on llvm lists is once per week.

Tim.

This error indicates that its trying to create a lane mask larger than 32 bits. Without seeing all of your subregister definitions I can’t tell if that’s correct of if there’s something wrong with your register definitions.

If it is correct then you need to change all the associated LaneMask code in CodeGenRegisters.cpp, include/llvm/MC/LaneBitMask.h and probably elsewhere to use a larger type than “unsigned” or “uint32_t”.

Thank you so much. I think there is no issue with my definitions since i have to use larger registers i.e 65536 bit register made from 2 32768 registers.
I have seen your mentioned code files. But it looks difficult what to change.
Could you please specify exactly where to make changes??

Thank You

Do your 32768 registers also have sub registers?

I can’t tell you exactly what to change. I’m not familiar with the code. I would just be running grep or something.

The code file is attached here.

Kindly check it.

CODE.txt (7.62 KB)

I’ve commited r308042 to make it a little easier to change the underlying type in the LaneBitmask class. With that change you might not need to touch CodeGenRegisters.cpp now. But I can’t promise anything.

Thank you so much

still getting the same error:

error:Ran out of lanemask bits to represent subregister sub_32768bit_hi_then_sub_16384bit_hi_then_sub_8192bit_hi_then_sub_4096bit_hi_then_sub_2048bit_hi_then_sub_32bit_hi_then

Can someone please help??