search for: getvr

Displaying 13 results from an estimated 13 matches for "getvr".

Did you mean: gettr
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
AddRegisterOperand calls getVR and yes, I think an IMPLICIT_DEF is being generated. On Tue, Aug 25, 2015 at 2:40 PM, Quentin Colombet <qcolombet at apple.com> wrote: > > On Aug 25, 2015, at 11:05 AM, Ryan Taylor <ryta1203 at gmail.com> wrote: > > I have not tried 3.5, it's a significant amount of wo...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...Colombet <qcolombet at apple.com> wrote: > Oh, could you paste the MIs you get right after ISel (the whole def use > chain of the interesting vregs)? > > Q. > > On Aug 25, 2015, at 12:00 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > > AddRegisterOperand calls getVR and yes, I think an IMPLICIT_DEF is being > generated. > > On Tue, Aug 25, 2015 at 2:40 PM, Quentin Colombet <qcolombet at apple.com> > wrote: > >> >> On Aug 25, 2015, at 11:05 AM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> >> I have not tried 3...
2007 Oct 18
0
[LLVMdev] The one remaining bug keeping CellSPU from release...
Sorry, still not enough information. I am guessing it's asserting in getVR() called from EmitNode()? The node is CopyToReg and it's trying to find the virtual register of operand 2? From the schedule, I don't see the definition of the operand. Can you do DAG.viewGraph()? That should gives us a better idea. Evan On Oct 16, 2007, at 9:06 PM, Scott Michel wrot...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
I have not tried 3.5, it's a significant amount of work to port from one version to the next though, I did not personally do the 3.4 to 3.6 porting. I agree though, it was very strange that it suddenly just changed behavior. It looks like to me that InstrEmitter.cpp:getVR is the one assigning the virtual register no? Though this code in CreateVirtualRegisters: const TargetRegisterClass *RC = TRI->getAllocatableClass(TII->getRegClass(II, i, TRI, *MF)); That returns GPRBaseRegs for RC, but it then decides to constrain it based on type: if (i < NumR...
2007 Oct 17
2
[LLVMdev] The one remaining bug keeping CellSPU from release...
Evan: What you requested was in the debug output (sans offending Node), but here it is, outside of the attachment. The offending node is highlighted: SU(0): 0xa908760: ch = EntryToken SU(1): 0xa907600: i32,ch,flag = CopyFromReg 0xa9095d0, 0xa9070e0, 0xa9095d0:1 0xa906e30: ch,flag = CopyToReg 0xa908760, 0xa9070e0, 0xa9071f0 <<--<<--<<--<<--<< Node
2013 Dec 21
0
[LLVMdev] Order of glued nodes during scheduling
...0015671d80: ch = CopyToReg 0x100156463c8, 0x10015677c70, 0x100156749c0 [ORD=49] [ID=1] SU(0): 0x100156762d0: ch = TokenFactor 0x10015678c80, 0x10015679180, 0x10015671d80 [ORD=50] [ID=0] which then asserts: llvm-trunk/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:292: unsigned int llvm::InstrEmitter::getVR(llvm::SDValue, llvm::DenseMap<llvm::SDValue, unsigned int, llvm::DenseMapInfo<llvm::SDValue> >&): Assertion `I != VRBaseMap.end() && "Node emitted out of order - late"' failed. What's gone wrong here? Is the order in the SU wrong, or should the scheduler i...
2015 Aug 25
4
[LLVMdev] TableGen Register Class not matching for MI in 3.6
Hi Ryan, > On Aug 24, 2015, at 6:49 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > > Quentin, > > I apologize for the spamming here but in getVR (where VReg is assigned an RC), it calls: > > const TargetRegisterClass *RC = TLI->getRegClassFor(Op.getSimpleValueType()); > VReg = MRI->createVirtualRegister(RC); > > My question is why is it using the SimpleValueType to define the register class instead of the actual regis...
2017 Jul 29
2
ISelDAGToDAG breaks node ordering
...t10: i16,ch,i16 = merge_values t9, t9:2, t9:1 t8: ch = RET Register:i16 %R25R24, t7, t7:1 As you can see, even though the edges are correct, t7 should be after t10. This trips up LLVM further downstream: lib/CodeGen/SelectionDAG/InstrEmitter.cpp:303: unsigned int llvm::InstrEmitter::getVR(llvm::SDValue, llvm::DenseMap<llvm::SDValue, unsigned int>&): Assertion `I != VRBaseMap.end() && "Node emitted out of order - late"' failed. Any idea what might be causing this? Where does the order of nodes come from anyway? Thanks, Gergo
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...gt;> //Op.dump(); >> assert(Op.getValueType() != MVT::Other && >> Op.getValueType() != MVT::Glue && >> "Chain and glue operands should occur at end of operand list!"); >> // Get/emit the operand. >> unsigned VReg = getVR(Op, VRBaseMap); >> assert(TargetRegisterInfo::isVirtualRegister(VReg) && "Not a vreg?"); >> const MCInstrDesc &MCID = MIB->getDesc(); >> bool isOptDef = IIOpNum < MCID.getNumOperands() && >> MCID.OpInfo[IIOpNum].isOptionalDef();...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...t;>>> >>>>> Hi Ryan, >>>>> >>>>> On Aug 24, 2015, at 6:49 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >>>>> >>>>> Quentin, >>>>> >>>>> I apologize for the spamming here but in getVR (where VReg is >>>>> assigned an RC), it calls: >>>>> >>>>> const TargetRegisterClass *RC = >>>>> TLI->getRegClassFor(Op.getSimpleValueType()); >>>>> VReg = MRI->createVirtualRegister(RC); >>>>> >>...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...e.com> >>> wrote: >>> >>>> Hi Ryan, >>>> >>>> On Aug 24, 2015, at 6:49 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >>>> >>>> Quentin, >>>> >>>> I apologize for the spamming here but in getVR (where VReg is assigned >>>> an RC), it calls: >>>> >>>> const TargetRegisterClass *RC = >>>> TLI->getRegClassFor(Op.getSimpleValueType()); >>>> VReg = MRI->createVirtualRegister(RC); >>>> >>>> My question is...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...lt; "Op = "; > //Op.dump(); > assert(Op.getValueType() != MVT::Other && > Op.getValueType() != MVT::Glue && > "Chain and glue operands should occur at end of operand list!"); > // Get/emit the operand. > unsigned VReg = getVR(Op, VRBaseMap); > assert(TargetRegisterInfo::isVirtualRegister(VReg) && "Not a vreg?"); > const MCInstrDesc &MCID = MIB->getDesc(); > bool isOptDef = IIOpNum < MCID.getNumOperands() && > MCID.OpInfo[IIOpNum].isOptionalDef(); > // If the...
2015 Aug 24
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
> On Aug 24, 2015, at 1:30 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > > I'm trying to do something like this: > > // Dst = NewVReg's reg class > // *II = MCInstrDesc > // IIOpNum = II Operand Num > > if (TRI->getCommonSubClass(DstRC, TRI->getRegClass(II->OpInfo[IIOpNum].RegClass)) == DstRC) > MRI->setRegClass(VReg, DstRC); >