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.