Hi,<br><br>I'm working on an LLVM backend for a new target architecture which has some instructions that when executed implicitly produce a result in a particular register after a certain amount of cycles.<br><br>The situation is this :<br>
<br>1: Execute instruction<br>2: Wait for result<br>3: Wait for result<br>4: Wait for result<br>5: Read from register<br><br>The value in the special register needs to be protected until the execution of instruction number 5.<br>
What I would like to do is to make it possible for the backend to schedule instructions that don't mess with this special register in anyway in-between the two Execute Instruction/Read register instructions. <br><br>How can I model this behavior in the LLVM backend? I know of the existence of delay slots and one solution could be of adding delay slots for these instructions and filling them with other instructions that don't mess with this special register manually through a machine pass, but I was wondering if there is another way of doing this that I don't know (I'm pretty new to the backend stuff).<br>
<br>Thank you<br><br>Marcello<br>