Displaying 3 results from an estimated 3 matches for "shamt_virtreg".
2006 May 30
0
[LLVMdev] [RFC, ARM] expanding RET to CopyToReg;BRIND
...t like this:
...
R3 = outval_virtreg
...
blr
So the copy and blr are flagged together.
Another case where flags are useful are for things like the X86 variable
shift instruction. There the shift amount is required to be in the CL
register, so we generate code like this:
CL = shamt_virtreg
X = shl Y, CL
We don't want the copy and shift to wander apart from each other (e.g. we
don't want another shift to get scheduled in between them), so we flag
them together. In practice, these copies usually get coallesced away.
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
2006 May 30
2
[LLVMdev] [RFC, ARM] expanding RET to CopyToReg;BRIND
I have changed the way in which the ARM backend generates a function
return. Instead of expanding a RET to a CopyToReg;RETFLAG, it now
expands into a CopyToReg;BRIND. I haven't commit it yet, but the patch
is attached.
In my opinion the resulting code is easier to understand, but I have
some questions:
Why all backends use RETFLAG?
Why it is named RETFLAG?
Why the Copy that places the
2006 May 31
2
[LLVMdev] [RFC, ARM] expanding RET to CopyToReg;BRIND
......
> blr
>
> So the copy and blr are flagged together.
>
> Another case where flags are useful are for things like the X86 variable
> shift instruction. There the shift amount is required to be in the CL
> register, so we generate code like this:
>
>
> CL = shamt_virtreg
> X = shl Y, CL
>
> We don't want the copy and shift to wander apart from each other (e.g. we
> don't want another shift to get scheduled in between them), so we flag
> them together. In practice, these copies usually get coallesced away.
In the second case shl explicitl...