[llvm-dev] Conditional Register Assignment based on the no of loop iterations

hameeza ahmed via llvm-dev llvm-dev at lists.llvm.org
Sun Jul 9 21:17:47 PDT 2017


hello,

i have a situation where i have to assign the registers to instructions
based on the loop iterations.

for eg..
the registers are:
R_0_V_0, R_0_V_1, R_0_V_2, R_0_V_3,
R_1_V_0, R_1_V_1, R_1_V_2, R_1_V_3,
R_2_V_0, R_2_V_1, R_2_V_2, R_2_V_3.
These registers defined in object Reg_A

These are total 12 registers. will use them contiguously, here i  define it
in above mentioned order i.e changing V first then R.


for eg;
if no of iterations>=4.
1st load will take place in R_0_V_0
2nd load will take place in R_0_V_1
3rd load will take place in R_0_V_2
4th load will take place in R_0_V_3
I am getting this required behavior for iterations>=4. I want this to
happen only if there are 4 or above iterations in loop.


But if my iterations are less than 4 like 3
again it will do the same thing;
1st load will take place in R_0_V_0
2nd load will take place in R_0_V_1
3rd load will take place in R_0_V_2

Here i dont want the above to happen rather it should increment R instead
of V in this case.
It should do something as follows:
1st load to take place in R_0_V_0
2nd load to take place in R_1_V_0
3rd load to take place in R_2_V_0

Now, how to achieve this?

Can i mention some condition in instructioninfo.td file?
and in registerinfo.td file instead of 1 object Reg_A, there will be 2
objects Reg_A and Reg_B
where Reg_B defines same registers but in different order.

Reg_B;

R_0_V_0, R_1_V_0, R_2_V_0,  //here R changes
R_0_V_1, R_1_V_1, R_2_V_1,
R_0_V_2, R_1_V_2, R_2_V_2,
R_0_V_3, R_1_V_3, R_2_V_3.

So that in instructioninfo.td file it will be something like;

if (no of iterations>=4)

load ................$Reg_A      ; here all register operands will come
from Reg_A instance.

if (no of iterations<4)

load ................$Reg_B      ; here all register operands will come
from Reg_B instance.


Is the above approach possible??? if yes then how can we acquire the no of
iterations in instructioninfo.td file??

or can you suggest some better way?

Looking forward to response

Thank You.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170710/d538b322/attachment.html>


More information about the llvm-dev mailing list