search for: expandpseudo

Displaying 5 results from an estimated 5 matches for "expandpseudo".

2012 Oct 06
2
[LLVMdev] Pairing Registers on a Target Similar to Mips?
...SDTCisVT<1, f64>]>; def MipsCopyF64 : SDNode<"MIPSISD::CopyF64", SDT_MIPSCopyF64>; I also changed CPU64Regs to CPU64PRegs ( My 64 bit paired register class) in the DMFC1 rule for testing. Next, I added the code in ExpandPseudo to use the following pseudo instruction expansion: void MipsExpandPseudo::ExpandCopyF64(MachineBasicBlock& MBB, MachineBasicBlock::iterator I) { unsigned DstReg = I->getOperand(0).getReg(); unsigned SrcReg = I->getOperand(1)....
2012 Mar 08
1
[LLVMdev] "Machine LICM" for Constants?
...instruction *is* rematerializable (since it defines the entire register), even though either of the two half-register instructions by themselves cannot be. This is one way my target and Mips could hack around the problem, but for my target at least it has the disadvantage of having to add an ExpandPseudo pass to my backend and put logic in C++ that seems (IMO) to belong in TableGen. -Matt On 03/07/2012 02:45 PM, Evan Cheng wrote: > Yes machine-licm can and should hoist constant materialization instructions out of the loop. If it's not doing that, it's probably because the target is no...
2012 Oct 09
0
[LLVMdev] Pairing Registers on a Target Similar to Mips?
...>]>; > > def MipsCopyF64 : SDNode<"MIPSISD::CopyF64", > SDT_MIPSCopyF64>; > > I also changed CPU64Regs to CPU64PRegs ( My 64 bit paired register class) > in the DMFC1 rule for testing. > > Next, I added the code in ExpandPseudo to use the following pseudo > instruction expansion: > > void MipsExpandPseudo::ExpandCopyF64(MachineBasicBlock& MBB, > MachineBasicBlock::iterator > I) { > unsigned DstReg = I->getOperand(0).getReg(); > unsi...
2012 Mar 07
0
[LLVMdev] "Machine LICM" for Constants?
Yes machine-licm can and should hoist constant materialization instructions out of the loop. If it's not doing that, it's probably because the target is not modeling the instruction correctly. I would walk through MachineLICM::IsLoopInvariantInst() in the debugger to figure it out. You can also try compiling the same bitcode for a target like ARM or X86 as a comparison. Evan On Mar 7,
2012 Mar 07
2
[LLVMdev] "Machine LICM" for Constants?
Hi All, I work on a backend for a target similar to Mips, where large immediates are loaded into registers with 2 instructions, 1 to load the MSBits and 1 to load the LSBits. I've noticed a recurring pattern where, despite low register pressure, these constants will be rematerialized in every iteration of a loop, rather than being hoisted. Here's an example using the