<div><div dir="auto">LaneMask isn't as self contained as it should be. 64 bits is enough here. The problem is accidental leaking of the current size.</div><div dir="auto"><br></div><div dir="auto">For example there was a hard coded compare with 32 in tablegen until I fixed it recently.</div><br><div class="gmail_quote"><div>On Wed, Jul 19, 2017 at 1:36 PM Krzysztof Parzyszek <<a href="mailto:kparzysz@codeaurora.org">kparzysz@codeaurora.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">LaneBitmask should be self-contained.  If 64 bits aren't enough, there<br>
is no point in using uint64_t, you need something wider.<br>
<br>
-Krzysztof<br>
<br>
On 7/19/2017 3:25 PM, hameeza ahmed wrote:<br>
> You are right. Regarding lanes i can comment only when the other things<br>
> run fine.<br>
><br>
> Here I am stuck with unsigned vs uint64_t. it looks as if i need to<br>
> replace each occurrence of unsigned with uint64_t.<br>
> Should i do it for complete llvm folder or codegen only??<br>
><br>
> i am continuously getting such errors which require changing unsigned<br>
> with uint64_t.<br>
><br>
> What to do now???<br>
><br>
> On Thu, Jul 20, 2017 at 1:03 AM, Krzysztof Parzyszek<br>
> <<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a> <mailto:<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a>>> wrote:<br>
><br>
>     It is possible that you have more than 64 lanes. In such case you<br>
>     would need to reimplement LaneBitmask with a larger underlying type.<br>
>     Most of the functionality is already localized to the header file,<br>
>     the only exception may be the "getAsInteger" function. It shouldn't<br>
>     be too hard to fix up the uses to deal with a different underlying type.<br>
><br>
>     -Krzysztof<br>
><br>
><br>
>     On 7/19/2017 2:56 PM, hameeza ahmed wrote:<br>
><br>
>         As you mentioned i changed 32 to 64 but now some new errors come<br>
>         which require to change unsigned to uint64_t in mentioned files.<br>
>         i have changed in mentioned files but still errors come to<br>
>         change in other files..<br>
><br>
>         What to do?<br>
><br>
>         On Thu, Jul 20, 2017 at 12:08 AM, Craig Topper<br>
>         <<a href="mailto:craig.topper@gmail.com" target="_blank">craig.topper@gmail.com</a> <mailto:<a href="mailto:craig.topper@gmail.com" target="_blank">craig.topper@gmail.com</a>><br>
>         <mailto:<a href="mailto:craig.topper@gmail.com" target="_blank">craig.topper@gmail.com</a> <mailto:<a href="mailto:craig.topper@gmail.com" target="_blank">craig.topper@gmail.com</a>>>><br>
>         wrote:<br>
><br>
>              Did you change the hardcoded 32 right before the line that<br>
>         prints<br>
>              that error in CodeGenRegisters.cpp to 64?<br>
><br>
>              ~Craig<br>
><br>
>              On Wed, Jul 19, 2017 at 11:38 AM, hameeza ahmed<br>
>              <<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a> <mailto:<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a>><br>
>         <mailto:<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a> <mailto:<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a>>>> wrote:<br>
><br>
>                  Thank You.<br>
><br>
>                  I have replaced all the occurrences of unsigned with<br>
>         uint64_t in<br>
>                  Lanemask.h and in all other related files like<br>
>                  codegenregisters.cpp, codegenregisters.h, MIParser.cpp<br>
>         etc...<br>
>                  Also i changed Log2_32 to Log2_64 and replaced 4 with 8 in<br>
>                    codegenregisters.cpp, but still getting the same error:<br>
><br>
><br>
>                  error:Ran out of lanemask bits to represent subregister<br>
><br>
>         sub_32768bit_hi_then_sub_16384bit_hi_then_sub_8192bit_hi_then_sub_4096bit_hi_then_sub_2048bit_hi_then_sub_32bit_hi_then<br>
><br>
>                  Now what to do?<br>
><br>
>                  Please help.<br>
><br>
><br>
>                  On Wed, Jul 19, 2017 at 5:57 PM, Krzysztof Parzyszek<br>
>                  <<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a><br>
>         <mailto:<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a>> <mailto:<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a><br>
>         <mailto:<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a>>>> wrote:<br>
><br>
>                      Hi,<br>
>                      The LaneBitmask is implemented in<br>
>                      include/llvm/MC/LaneBitmask.h.  You will need to<br>
>         change the<br>
>                      underlying type and the associated member functions.<br>
>                      If you have a large number of lanes, you will need to<br>
>                      replace it with a type that can contain as many<br>
>         independent<br>
>                      bits as you need (BitVector would be an ultimate<br>
>         solution).             You may run into some problems with the<br>
>         uses of the member<br>
>                      function "getAsInteger", but you can change those to<br>
>                      something equivalent according to the type you use.<br>
><br>
>                      -Krzysztof<br>
><br>
><br>
>                      On 7/19/2017 3:51 AM, hameeza ahmed wrote:<br>
><br>
>                          Hello,<br>
>                          Mr. krzysztof I have seen similar question<br>
>         asked by you<br>
>                          on llvm group. Could you please help me here to<br>
>         address<br>
>                          this issue.<br>
><br>
>                          i am trying to construct a register of size<br>
>         65536 bit by<br>
>                          combining 2 registers of 32768 bits. both the<br>
>         32768 bit<br>
>                          registers are different so i have to use the<br>
>         following<br>
>                          method<br>
><br>
>                          let SubRegIndices = [sub_32768bit,<br>
>         sub_32768bit_hi],<br>
>                          CoveredBySubRegs = 1 in<br>
><br>
>                          but i am getting following error..<br>
><br>
>                          error:Ran out of lanemask bits to represent<br>
>         subregister<br>
><br>
>         sub_32768bit_hi_then_sub_16384bit_hi_then_sub_8192bit_hi_then_sub_4096bit_hi_then_sub_2048bit_hi_then_sub_32bit_hi_then<br>
><br>
>                          now how to increase lanemask bits? what changes are<br>
>                          required??<br>
><br>
><br>
>                          Kindly help.<br>
><br>
><br>
><br>
><br>
><br>
>                      --             Qualcomm Innovation Center, Inc. is<br>
>         a member of Code Aurora<br>
>                      Forum, hosted by The Linux Foundation<br>
><br>
><br>
><br>
><br>
><br>
>     --<br>
>     Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,<br>
>     hosted by The Linux Foundation<br>
><br>
><br>
<br>
--<br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,<br>
hosted by The Linux Foundation<br>
</blockquote></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature">~Craig</div>