[llvm-dev] error:Ran out of lanemask bits to represent subregisterr

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Wed Jul 19 13:36:52 PDT 2017


LaneBitmask should be self-contained.  If 64 bits aren't enough, there 
is no point in using uint64_t, you need something wider.

-Krzysztof

On 7/19/2017 3:25 PM, hameeza ahmed wrote:
> You are right. Regarding lanes i can comment only when the other things 
> run fine.
> 
> Here I am stuck with unsigned vs uint64_t. it looks as if i need to 
> replace each occurrence of unsigned with uint64_t.
> Should i do it for complete llvm folder or codegen only??
> 
> i am continuously getting such errors which require changing unsigned 
> with uint64_t.
> 
> What to do now???
> 
> On Thu, Jul 20, 2017 at 1:03 AM, Krzysztof Parzyszek 
> <kparzysz at codeaurora.org <mailto:kparzysz at codeaurora.org>> wrote:
> 
>     It is possible that you have more than 64 lanes. In such case you
>     would need to reimplement LaneBitmask with a larger underlying type.
>     Most of the functionality is already localized to the header file,
>     the only exception may be the "getAsInteger" function. It shouldn't
>     be too hard to fix up the uses to deal with a different underlying type.
> 
>     -Krzysztof
> 
> 
>     On 7/19/2017 2:56 PM, hameeza ahmed wrote:
> 
>         As you mentioned i changed 32 to 64 but now some new errors come
>         which require to change unsigned to uint64_t in mentioned files.
>         i have changed in mentioned files but still errors come to
>         change in other files..
> 
>         What to do?
> 
>         On Thu, Jul 20, 2017 at 12:08 AM, Craig Topper
>         <craig.topper at gmail.com <mailto:craig.topper at gmail.com>
>         <mailto:craig.topper at gmail.com <mailto:craig.topper at gmail.com>>>
>         wrote:
> 
>              Did you change the hardcoded 32 right before the line that
>         prints
>              that error in CodeGenRegisters.cpp to 64?
> 
>              ~Craig
> 
>              On Wed, Jul 19, 2017 at 11:38 AM, hameeza ahmed
>              <hahmed2305 at gmail.com <mailto:hahmed2305 at gmail.com>
>         <mailto:hahmed2305 at gmail.com <mailto:hahmed2305 at gmail.com>>> wrote:
> 
>                  Thank You.
> 
>                  I have replaced all the occurrences of unsigned with
>         uint64_t in
>                  Lanemask.h and in all other related files like
>                  codegenregisters.cpp, codegenregisters.h, MIParser.cpp
>         etc...
>                  Also i changed Log2_32 to Log2_64 and replaced 4 with 8 in
>                    codegenregisters.cpp, but 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
> 
>                  Now what to do?
> 
>                  Please help.
> 
> 
>                  On Wed, Jul 19, 2017 at 5:57 PM, Krzysztof Parzyszek
>                  <kparzysz at codeaurora.org
>         <mailto:kparzysz at codeaurora.org> <mailto:kparzysz at codeaurora.org
>         <mailto:kparzysz at codeaurora.org>>> wrote:
> 
>                      Hi,
>                      The LaneBitmask is implemented in
>                      include/llvm/MC/LaneBitmask.h.  You will need to
>         change the
>                      underlying type and the associated member functions.
>                      If you have a large number of lanes, you will need to
>                      replace it with a type that can contain as many
>         independent
>                      bits as you need (BitVector would be an ultimate
>         solution).             You may run into some problems with the
>         uses of the member
>                      function "getAsInteger", but you can change those to
>                      something equivalent according to the type you use.
> 
>                      -Krzysztof
> 
> 
>                      On 7/19/2017 3:51 AM, hameeza ahmed wrote:
> 
>                          Hello,
>                          Mr. krzysztof I have seen similar question
>         asked by you
>                          on llvm group. Could you please help me here to
>         address
>                          this issue.
> 
>                          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_8192bit_hi_then_sub_4096bit_hi_then_sub_2048bit_hi_then_sub_32bit_hi_then
> 
>                          now how to increase lanemask bits? what changes are
>                          required??
> 
> 
>                          Kindly help.
> 
> 
> 
> 
> 
>                      --             Qualcomm Innovation Center, Inc. is
>         a member of Code Aurora
>                      Forum, hosted by The Linux Foundation
> 
> 
> 
> 
> 
>     -- 
>     Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
>     hosted by The Linux Foundation
> 
> 

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation


More information about the llvm-dev mailing list