Displaying 10 results from an estimated 10 matches for "readsreg".
2014 Aug 15
2
[LLVMdev] Help with definition of subregisters; spill, rematerialization and implicit uses
...rewrite: 5056r Reg5:lo16<def> = mv_nimm6_ar16 0
So it inserts a reload of the full Reg5 prior to the setting of
Reg5:lo16, because it thinks there is an implicit use of Reg5 when
writing the low part??? This seems very weird to me.
The decision is based on the fact that MachineOperand::readsReg()
returns true:
/// readsReg - Returns true if this operand reads the previous value
of its
/// register. A use operand with the <undef> flag set doesn't read its
/// register. A sub-register def implicitly reads the other parts
of the
/// register being redefined unle...
2014 Aug 22
2
[LLVMdev] Help with definition of subregisters; spill, rematerialization and implicit uses
...node isn't one we're interested in, advance to
one that
// we are interested in.
if (op) {
if ((!ReturnUses && op->isUse()) ||
- (!ReturnDefs && op->isDef()) ||
+ (!ReturnDefs && op->isDef() && !op->readsReg()) ||
(SkipDebug && op->isDebug()))
advance();
}
}
friend class MachineRegisterInfo;
@@ -907,11 +907,11 @@ public:
else
assert(!Op->isDebug() && "Can't have debug defs");
}...
2013 Mar 25
2
[LLVMdev] About the partial update clearence / dependency breaking mechanism
...g the
partial update clearance / dependency breaking mechanism
for some ARM cores.
It seems that the ARM specific code for this will always
return a clearance of 0 for VLD1LNd32 because of the following
code in getPartialRegUpdateClearance:
> if (UseOp != -1 && MI->getOperand(UseOp).readsReg())
> return 0;
so essentially VLD1LNd32 (and potentially other instruction)
will never be affected by this. Was this intended or is there
a bug here?
I'm confused why the dependency breaking code is correct.
Why would the dependency breaking mechanism apply only
when the register is de...
2014 Aug 19
2
[LLVMdev] Help with definition of subregisters; spill, rematerialization and implicit uses
...eg19:lo16<def,read-undef> = COPY %vreg73
is redefining the whole vreg19, not only the lo16 part, and since this
instruction has read-undef, it thinks no part of vreg19, not even hi16
is live over instruction 880.
>>
>> isUndef() will return false and getSubReg() true, and thus readsReg()
>> true and the reload is inserted.
>>
>> Then we get
>>
>> *** Bad machine code: Instruction loads from dead spill slot ***
>>
>> because the spill slot has not been written.
>
> This is weird. Any chance you could share a test case?
Unfortunately...
2013 Mar 25
0
[LLVMdev] About the partial update clearence / dependency breaking mechanism
...ependency breaking mechanism
> for some ARM cores.
>
> It seems that the ARM specific code for this will always
> return a clearance of 0 for VLD1LNd32 because of the following
> code in getPartialRegUpdateClearance:
>
>> if (UseOp != -1 && MI->getOperand(UseOp).readsReg())
>> return 0;
>
> so essentially VLD1LNd32 (and potentially other instruction)
> will never be affected by this. Was this intended or is there
> a bug here?
>
> I'm confused why the dependency breaking code is correct.
> Why would the dependency breaking mechan...
2012 Jul 05
2
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
...ion relates to the undef flag in the context of sub-register def
operands.
1) Firstly, the documentation (comments in the source code) says that in a
sub-register def operand, the "IsUndef" flag refers to the part of the
register that is not written.
2) Further, the documentation about readsReg() states that a sub-register
def implicitly reads the other parts of the register being redefined unless
the <undef> flag is set.
Now, I am writing a pass the splits the following sequence of MIs
MI1:: A<def> = 0xFFFFFFFF ; A is a 64bit super reg.
MI2:: B<def> = C & A...
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...ter updates versus full register updates.
>> <snip>
>
> MachineOperand handles this. You just need to create the machine instrs.
>
> Interesting. I couldn't find how to do it. It would be great if somebody helps me on this.
I was thinking of APIs like MachineOperand::readsReg().
I guess if you’re only asking whether an instruction zeros the upper part of the register, that information *should* be available from MCInstr/MCRegisterInfo, but I’m not very familiar with the API.
Matthias?
-Andy
> 1) Partial register updates versus full register updates.
>
> On...
2016 Nov 27
5
Extending Register Rematerialization
...aterializablePossible(*DefMI, aa))
return false;
DEBUG(dbgs() << " ComplexRemat MI: " << *DefMI);
for (unsigned i = 0, e = DefMI->getNumOperands(); i != e; ++i) {
const MachineOperand &MO = DefMI->getOperand(i);
if (!MO.isReg() || !MO.getReg() || !MO.readsReg())
continue;
if (TargetRegisterInfo::isPhysicalRegister(MO.getReg())) {
if (MRI.isConstantPhysReg(MO.getReg(),
*DefMI->getParent()->getParent()))
continue;
//If not constant then check its def
if(depth > 6)
return false;
LiveInterval &...
2012 Jul 05
0
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
...in the context of sub-register def
> operands.
>
> 1) Firstly, the documentation (comments in the source code) says that in a
> sub-register def operand, the "IsUndef" flag refers to the part of the
> register that is not written.
> 2) Further, the documentation about readsReg() states that a sub-register
> def implicitly reads the other parts of the register being redefined unless
> the <undef> flag is set.
>
> Now, I am writing a pass the splits the following sequence of MIs
>
> MI1:: A<def> = 0xFFFFFFFF ; A is a 64bit super reg.
>...
2018 Mar 02
5
[RFC] llvm-mca: a static performance analysis tool
Hi Andrew,
Thanks for the feedback!
On Fri, Mar 2, 2018 at 1:16 AM, Andrew Trick <atrick at apple.com> wrote:
>
> On Mar 1, 2018, at 9:22 AM, Andrea Di Biagio <andrea.dibiagio at gmail.com>
> wrote:
>
> Hi all,
>
> At Sony we developed an LLVM based performance analysis tool named
> llvm-mca. We
> currently use it internally to statically measure the