<div dir="ltr">Thank You so much</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 12, 2017 at 11:08 AM, Craig Topper <span dir="ltr"><<a href="mailto:craig.topper@gmail.com" target="_blank">craig.topper@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't know of any direct way to do it. The register allocator just sees the register class that is defined for each operand as part of the instruction. I think you'd have to create different instructions with different classes. You can give them the same encoding if you mark one set as CodeGenOnly.<div><br></div><div>I'm not even sure there's any guarantee that it would always allocate in a specific order once you break the v2048i32 apart.</div></div><div class="gmail_extra"><span class="HOEnZb"><font color="#888888"><br clear="all"><div><div class="m_-2882551047662771958gmail_signature" data-smartmail="gmail_signature">~Craig</div></div></font></span><div><div class="h5">
<br><div class="gmail_quote">On Tue, Jul 11, 2017 at 10:04 PM, hameeza ahmed <span dir="ltr"><<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I would be very grateful if you specify whether there is some way to allocate registers (different order) / from different register sets to the same instruction based on the vector width/ no of iterations.<div><br></div><div>I have tried several alternatives but could not succeed.</div><div><br></div><div>Also I have asked this question many times but no one responds.</div><div><br></div><div>Is there something wrong with this??</div><div><br></div><div>Kindly guide me.</div><div><br></div><div>Thank You</div></div><div class="m_-2882551047662771958HOEnZb"><div class="m_-2882551047662771958h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 12, 2017 at 12:56 AM, hameeza ahmed <span dir="ltr"><<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">here by the ********my backend supports v64i32 i mean my hardware.</div><div class="m_-2882551047662771958m_-3906775754084762771HOEnZb"><div class="m_-2882551047662771958m_-3906775754084762771h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 12, 2017 at 12:49 AM, hameeza ahmed <span dir="ltr"><<a href="mailto:hahmed2305@gmail.com" target="_blank">hahmed2305@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thank you so much. it run fine.<div>Can you please resolve  following issue;<br></div><div><br></div><div>I now have support for v2048i32</div><div>but my backend supports v64i32</div><div>so ultimately v2048i32 needs to be split into 32 v64i32 instructions. the only difference between 2 is if its orginally v2048i32 i want my registers assignment from REG_A set. if its v64i32 originally, then i want registers from set REG_B.</div><div><br></div><div><br></div><div>How to accomplish this???</div><div><br></div><div>I am really stuck at this point.</div><div><br></div><div>Please guide me.</div><div><br></div><div>Thank You</div><div><br></div></div><div class="m_-2882551047662771958m_-3906775754084762771m_3680886237400105868HOEnZb"><div class="m_-2882551047662771958m_-3906775754084762771m_3680886237400105868h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 11, 2017 at 6:20 PM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
On 07/11/2017 03:22 AM, hameeza ahmed wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello,<br>
<br>
i want to work with these types v32f32, v32f64.... in llvm which are undefined in the backend?<br>
But v32i32, v32i64 are already defined so i am able to use these.<br>
<br>
but for other types such as v32f32, v32f64 although i have defined them appropriately in all the files like machinevaluetype.h,  valuetypes.cpp etc. i have checked it many times but still getting the following error when build in debug mode.<br>
<br>
llvm-tblgen: /utils/TableGen/CodeGenDAGPatt<wbr>erns.cpp:57: llvm::EEVT::TypeSet::TypeSet(M<wbr>VT::SimpleValueType, llvm::TreePattern &): Assertion `(VT < MVT::LAST_VALUETYPE || VT == MVT::iPTR || VT == MVT::iPTRAny || VT == MVT::Any) && "Not a concrete type!"' failed.<br>
</blockquote>
<br></span>
Are you sure that you updated all of the enum values correctly, including updating MVT::LAST_VALUETYPE, etc., and also updated utils/TableGen/CodeGenTarget.c<wbr>pp?<br>
<br>
 -Hal<div class="m_-2882551047662771958m_-3906775754084762771m_3680886237400105868m_-1183300903684076268HOEnZb"><div class="m_-2882551047662771958m_-3906775754084762771m_3680886237400105868m_-1183300903684076268h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
What could be the reason?? please guide how to define new types in llvm backend.<br>
<br>
<br>
Thank You<br>
</blockquote>
<br></div></div><span class="m_-2882551047662771958m_-3906775754084762771m_3680886237400105868m_-1183300903684076268HOEnZb"><font color="#888888">
-- <br>
Hal Finkel<br>
Lead, Compiler Technology and Programming Languages<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br></div>