search for: numdefs

Displaying 12 results from an estimated 12 matches for "numdefs".

2019 Nov 19
2
Question about physical registers in ISel
...that when the number of outputs of a MachineSDNode is greater than the number of defs in the corresponding MCInstrDesc, the outputs in the difference will be placed into physical registers as opposed to virtual registers. The specific line in question is: bool HasPhysRegOuts = NumResults > NumDefs && II.getImplicitDefs()!=nullptr; Where NumResults is the number of outputs in the MachineSDNode and NumDefs comes from the MCInstrDesc and ultimately the TableGen definition of the instruction. I do not know why this assumption is made or what code depends on it, but it is over 12 years o...
2019 Nov 19
2
Question about physical registers in ISel
...outputs of a MachineSDNode is greater than the number of defs > in the corresponding MCInstrDesc, the outputs in the difference will be > placed into physical registers as opposed to virtual registers. > > The specific line in question is: > bool HasPhysRegOuts = NumResults > NumDefs && > II.getImplicitDefs()!=nullptr; > > Where NumResults is the number of outputs in the MachineSDNode and NumDefs > comes from the MCInstrDesc and ultimately the TableGen definition of the > instruction. I do not know why this assumption is made or what code depends > on...
2019 Nov 19
2
Question about physical registers in ISel
...eSDNode is greater than the number of defs >> in the corresponding MCInstrDesc, the outputs in the difference will be >> placed into physical registers as opposed to virtual registers. >> >> The specific line in question is: >> bool HasPhysRegOuts = NumResults > NumDefs && >> II.getImplicitDefs()!=nullptr; >> >> Where NumResults is the number of outputs in the MachineSDNode and >> NumDefs comes from the MCInstrDesc and ultimately the TableGen definition >> of the instruction. I do not know why this assumption is made or what c...
2017 Feb 14
2
Adding FP environment register modeling for constrained FP nodes
...al. I just wasn’t sure that was entirely possible. I’ll try adding implicit defs in the way you’ve suggested, but I’m concerned that there may be code that relies on the TII for that kind of thing -- for instance, InstrEmitter::EmitMachineNode() does this: bool HasPhysRegOuts = NumResults > NumDefs && II.getImplicitDefs()!=nullptr; where “NumDefs” comes from TII and “NumResults” comes from the node. Obviously we can fix that up as needed, but it seems like a weak point in the design. Perhaps it is still better than trying to maintain a duplicate set of opcodes though. I’m still tr...
2019 Nov 20
2
Question about physical registers in ISel
...han the number of defs >>> in the corresponding MCInstrDesc, the outputs in the difference will be >>> placed into physical registers as opposed to virtual registers. >>> >>> The specific line in question is: >>> bool HasPhysRegOuts = NumResults > NumDefs && >>> II.getImplicitDefs()!=nullptr; >>> >>> Where NumResults is the number of outputs in the MachineSDNode and >>> NumDefs comes from the MCInstrDesc and ultimately the TableGen definition >>> of the instruction. I do not know why this assumpti...
2017 Feb 11
2
Specify special cases of delay slots in the back end
Hello. Hal, the problem I have is that it doesn't advance at the next available instruction - it always gets the same store. This might be because I did not specify in a file like [Target]Schedule.td the functional units, processor and instruction itineraries. Regarding the Stalls argument to my method [Target]DispatchGroupSBHazardRecognizer::getHazardType() I always get the
2020 Jun 08
2
Nested instruction patterns rejected by GlobalISel when having registers in Defs
...most part it's just read into CodeGenInstruction::ImplicitDefs and then GlobalISel gathers and adds them all at the end. I think I do see the code Gabriel is referring to though. GetNumNodeResults() has: if (InstInfo.HasOneImplicitDefWithKnownVT(CDP.getTargetInfo()) !=MVT::Other) ++NumDefsToAdd; and ultimately this VT gets into Types via UpdateNodeType(). I have no idea why this code does this as I don't really see why the VT matters to how you treat an implicit def. This code dates back to 2010 (r99726) and that commit called it 'funky logic' so it's unlikely that w...
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...f MachineInstr > objects. Essentially, MCInstrDesc is not meant to be used to describe MCInst > objects. To be more specific, MCInstrDesc objects are automatically generated > via tablegen from the instruction set description in the target .td files. For > example, field `MCInstrDesc::NumDefs' is always equal to the cardinality of the > `(outs)` set from the tablegen instruction definition. > > By construction, register definitions always appear at the beginning of the > MachineOperands list in MachineInstr. Basically, the (outs) are the first > operands of a Machine...
2018 Mar 01
9
[RFC] llvm-mca: a static performance analysis tool
...erties and operands of MachineInstr objects. Essentially, MCInstrDesc is not meant to be used to describe MCInst objects. To be more specific, MCInstrDesc objects are automatically generated via tablegen from the instruction set description in the target .td files. For example, field `MCInstrDesc::NumDefs' is always equal to the cardinality of the `(outs)` set from the tablegen instruction definition. By construction, register definitions always appear at the beginning of the MachineOperands list in MachineInstr. Basically, the (outs) are the first operands of a MachineInstr, and the (ins) will...
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...; objects. Essentially, MCInstrDesc is not meant to be used to describe > MCInst > objects.  To be more specific, MCInstrDesc objects are automatically > generated > via tablegen from the instruction set description in the target .td > files.  For > example, field `MCInstrDesc::NumDefs' is always equal to the > cardinality of the > `(outs)` set from the tablegen instruction definition. > > By construction, register definitions always appear at the beginning > of the > MachineOperands list in MachineInstr. Basically, the (outs) are the first > operands o...
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...> objects. Essentially, MCInstrDesc is not meant to be used to describe > MCInst > objects. To be more specific, MCInstrDesc objects are automatically > generated > via tablegen from the instruction set description in the target .td > files. For > example, field `MCInstrDesc::NumDefs' is always equal to the cardinality > of the > `(outs)` set from the tablegen instruction definition. > > By construction, register definitions always appear at the beginning of the > MachineOperands list in MachineInstr. Basically, the (outs) are the first > operands of a Mac...
2018 Mar 02
5
[RFC] llvm-mca: a static performance analysis tool
...> objects. Essentially, MCInstrDesc is not meant to be used to describe > MCInst > objects. To be more specific, MCInstrDesc objects are automatically > generated > via tablegen from the instruction set description in the target .td > files. For > example, field `MCInstrDesc::NumDefs' is always equal to the cardinality > of the > `(outs)` set from the tablegen instruction definition. > > By construction, register definitions always appear at the beginning of the > MachineOperands list in MachineInstr. Basically, the (outs) are the first > operands of a Mac...