<div dir="ltr">Hi,<div><br></div><div>I'm working on project which involves writing a backend for a hypothetical architecture. I am currently trying to figure out the best way to translate for loops to use a specialized "loop" instruction the architecture supports. The instruction is similar X86's loop instruction, where a register is automatically decremented and the condition is automatically checked to see if loop execution should continue. </div><div><br></div><div>I was wondering what is the best way to go about implementing this. I tried looking to see how X86 implemented their loop instruction, but couldn't really find where the IR instructions were being lowered to the loop instruction. </div><div><br></div><div>It seems like there is no way to really express this loop instruction in a pattern, since the loop instruction depends on a set of instructions that occur in different locations (induction variable initialization, the condition calculation, and the branch). </div><div><br></div><div>Right now, I thought of using the loop pass to somehow mark the instructions that should be lowered to a loop instruction, and translating them in the selection phase, but I'm not entirely sure how to do that or if that is even the right strategy. </div><div><br></div><div>Thanks,</div><div>-Dilan Manatunga</div><div><br></div></div>