Displaying 12 results from an estimated 12 matches for "mmo_iterator".
2013 May 09
5
[LLVMdev] [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.
The following code snippet taken from StackColoring::remapInstructions
clears a mem operand if it can't guarantee whether the memoperand's
underlying value aliases with the merged allocas:
// Update the MachineMemOperand to use the new alloca.
522 for (MachineInstr::mmo_iterator MM = I->memoperands_begin(),
....
// Climb up and find the original alloca.
532 V = GetUnderlyingObject(V);
533 // If we did not find one, or if the one that we found is not
in our
534 // map, then move on.
535 if (!V || !isa<AllocaInst>(V)) {...
2013 May 13
0
[LLVMdev] Fwd: [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.
...s.uiuc.edu>
The following code snippet taken from StackColoring::remapInstructions
clears a mem operand if it can't guarantee whether the memoperand's
underlying value aliases with the merged allocas:
// Update the MachineMemOperand to use the new alloca.
522 for (MachineInstr::mmo_iterator MM = I->memoperands_begin(),
....
// Climb up and find the original alloca.
532 V = GetUnderlyingObject(V);
533 // If we did not find one, or if the one that we found is not
in our
534 // map, then move on.
535 if (!V || !isa<AllocaInst>(V)) {...
2013 May 13
0
[LLVMdev] [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.
...owing code snippet taken from StackColoring::remapInstructions clears a
> mem operand if it can't guarantee whether the memoperand's underlying value
> aliases with the merged allocas:
>
> // Update the MachineMemOperand to use the new alloca.
> 522 for (MachineInstr::mmo_iterator MM = I->memoperands_begin(),
> ....
> // Climb up and find the original alloca.
> 532 V = GetUnderlyingObject(V);
> 533 // If we did not find one, or if the one that we found is not in our
> 534 // map, then move on.
> 535 if (!...
2017 Jul 29
2
ISelDAGToDAG breaks node ordering
...;
SDNode* LDW = CurDAG->getMachineNode(AVR::LDWRdPtr, SDLoc(N), VT,
PtrVT, MVT::Other,
LD->getBasePtr(), LD->getChain());
// Honestly, I have no idea what this does, but other memory
// accessing instructions have something similar...
MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
MemOp[0] = cast<MemSDNode>(N)->getMemOperand();
cast<MachineSDNode>(LDW)->setMemRefs(MemOp, MemOp + 1);
// Reshuffle LDW's results so that the first two match LOAD's result
// type
SDValue Unpack[]...
2013 May 13
1
[LLVMdev] [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.
...; The following code snippet taken from StackColoring::remapInstructions clears a mem operand if it can't guarantee whether the memoperand's underlying value aliases with the merged allocas:
>
> // Update the MachineMemOperand to use the new alloca.
> 522 for (MachineInstr::mmo_iterator MM = I->memoperands_begin(),
> ....
> // Climb up and find the original alloca.
> 532 V = GetUnderlyingObject(V);
> 533 // If we did not find one, or if the one that we found is not in our
> 534 // map, then move on.
> 535 if (!V ||...
2013 May 13
1
[LLVMdev] [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.
...ing::**remapInstructions
>> clears a
>> mem operand if it can't guarantee whether the memoperand's underlying
>> value
>> aliases with the merged allocas:
>>
>> // Update the MachineMemOperand to use the new alloca.
>> 522 for (MachineInstr::mmo_iterator MM = I->memoperands_begin(),
>> ....
>> // Climb up and find the original alloca.
>> 532 V = GetUnderlyingObject(V);
>> 533 // If we did not find one, or if the one that we found is
>> not in our
>> 534 // map, then move...
2016 Apr 27
2
[Sparc] builtin setjmp / longjmp - need help to get past last problem
...ck *MBB) const
+ {
+ DebugLoc DL = MI->getDebugLoc();
+ const TargetInstrInfo *TII = Subtarget->getInstrInfo();
+
+ MachineFunction *MF = MBB->getParent();
+ MachineRegisterInfo &MRI = MF->getRegInfo();
+ MachineInstrBuilder MIB;
+
+ // Memory Reference
+ MachineInstr::mmo_iterator MMOBegin = MI->memoperands_begin();
+ MachineInstr::mmo_iterator MMOEnd = MI->memoperands_end();
+
+ MVT PVT = getPointerTy(MF->getDataLayout());
+ unsigned PtrSize = PVT.getStoreSize();
+ assert(PVT == MVT::i32 && "Invalid Pointer Size!");
+
+ unsigned Buf = MI...
2016 Apr 15
3
[Sparc] Load address with SETHI
Hi,
I'm trying to implement __builtin_setjmp / __builtin_longjmp for Sparc processors. I think I'm very close, but I can't work out how to issue BuildMI-type instructions to load the address of the recovery location (set in setjmp) into a register using the SETHI / OR combination. I can't see any equivalent code anywhere else in Sparc.
I imagine this is similar if I try to make a
2011 Jan 04
4
[LLVMdev] Bug in MachineInstr::isIdenticalTo
...// If we have mem operands, make sure that the sizes of the memoperands for each
+ // MI are the same. The values can be different, so lets only check the sizes.
+ // If the sizes between one of the memoperands differ, then the instructions are
+ // not identical.
+ for (MachineInstr::mmo_iterator mb1 = memoperands_begin(), mb2 = Other->memoperands_begin()
+ me = memoperands_end(); mb1 != me; ++mb1, ++mb2) {
+ if (mb1->getSize() != mb2->getSize() ||
+ mb1->getFlags() != mb2->getFlags() ||
+ mb1->getOffset() != mb2->getOffset()) {
+...
2011 Jan 04
0
[LLVMdev] Bug in MachineInstr::isIdenticalTo
...operands, make sure that the sizes of the memoperands for each
> + // MI are the same. The values can be different, so lets only check the sizes.
> + // If the sizes between one of the memoperands differ, then the instructions are
> + // not identical.
> + for (MachineInstr::mmo_iterator mb1 = memoperands_begin(), mb2 = Other->memoperands_begin()
> + me = memoperands_end(); mb1 != me; ++mb1, ++mb2) {
> + if (mb1->getSize() != mb2->getSize() ||
> + mb1->getFlags() != mb2->getFlags() ||
> + mb1->getOffset() != mb2->getO...
2017 Jul 31
0
ISelDAGToDAG breaks node ordering
...rDAG->getMachineNode(AVR::LDWRdPtr, SDLoc(N),
> VT, PtrVT, MVT::Other,
> LD->getBasePtr(), LD->getChain());
>
> // Honestly, I have no idea what this does, but other memory
> // accessing instructions have something similar...
> MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
> MemOp[0] = cast<MemSDNode>(N)->getMemOperand();
> cast<MachineSDNode>(LDW)->setMemRefs(MemOp, MemOp + 1);
>
> // Reshuffle LDW's results so that the first two match LOAD's
> result
> // ty...
2016 Jun 13
2
Is addrspace info available during instruction scheduling?
We'd like to be able to vary the latency of our load instructions based on
what address space is being loaded from. I was thinking I could do this by
overriding getOperandLatency in our target, but I'm wondering if the
addrspace info is available when instructions are scheduled?
For example, I have this in our llvm IR:
%0 = load i32 addrspace(4)* @answer, align 4
store i32 %0, i32*