Displaying 12 results from an estimated 12 matches for "getpointerinfo".
2013 Mar 04
1
[LLVMdev] Custom Lowering of ARM zero-extending loads
...DEBUG(errs() << "ZEXTLOAD\n");
SDValue Chain = LD->getChain();
SDValue Ptr = LD->getBasePtr();
DebugLoc dl = Op.getNode()->getDebugLoc();
SDValue LdResult = DAG.getExtLoad(ISD::EXTLOAD, dl, MVT::i32,
Chain, Ptr, LD->getPointerInfo(),
MVT::i32,
LD->isVolatile(), LD->isNonTemporal(),
LD->getAlignment());
Chain = LdResult.getValue(1);
SDValue Mask = DAG.getConstant(0x1, MVT::i32);
DAG.ReplaceAllUsesOfValueWith(SDValue(LD, 0), LdR...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...gt;getOperand(OpNo);
> LoadSDNode *dupNode = (LoadSDNode*) dupVal.getNode();
>
> SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(), dupVal.getDebugLoc(),
> dupVal.getOperand(0), dupVal.getOperand(1),
> dupNode->getPointerInfo(),
> dupNode->isVolatile(), dupNode->isNonTemporal(),
> dupNode->isInvariant(), dupNode->getAlignment(),
> dupNode->getTBAAInfo(), dupNode->getRanges());
> However, my problem...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...lue dupVal = consumer->getOperand(OpNo);
LoadSDNode *dupNode = (LoadSDNode*) dupVal.getNode();
SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(),
dupVal.getDebugLoc(),
dupVal.getOperand(0), dupVal.getOperand(1),
dupNode->getPointerInfo(),
dupNode->isVolatile(),
dupNode->isNonTemporal(),
dupNode->isInvariant(),
dupNode->getAlignment(),
dupNode->getTBAAInfo(),
dupNode->getRanges());
However, my problem now is that it will...
2012 Dec 01
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
Hi, I am writing an llvm target and I need both loads for isel reasons, but
I am struggling to find the right way. I have been trying to
use DAG.getLoad() to make a copy, then just change the operand in the
consumers, but I cannot seem to get all of the arguments needed for that
function in order to make the copy. Any help would be great, thanks!
-Joe
-------------- next part --------------
An
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...SDNode *dupNode = (LoadSDNode*) dupVal.getNode();
> >
> > SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(),
> dupVal.getDebugLoc(),
> > dupVal.getOperand(0),
> dupVal.getOperand(1),
> > dupNode->getPointerInfo(),
> > dupNode->isVolatile(),
> dupNode->isNonTemporal(),
> > dupNode->isInvariant(),
> dupNode->getAlignment(),
> > dupNode->getTBAAInfo(),
> dupNode->getRanges...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...pVal.getNode();
>> >
>> > SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(),
>> > dupVal.getDebugLoc(),
>> > dupVal.getOperand(0),
>> > dupVal.getOperand(1),
>> > dupNode->getPointerInfo(),
>> > dupNode->isVolatile(),
>> > dupNode->isNonTemporal(),
>> > dupNode->isInvariant(),
>> > dupNode->getAlignment(),
>> > dupNode->getTBAAInfo...
2012 Feb 10
1
[LLVMdev] Prevent DAG combiner from changing "store ConstFP, addr" to integer store
...TLI.isOperationLegalOrCustom(ISD::STORE, MVT::i32)) {
Tmp = DAG.getConstant((uint32_t)CFP->getValueAPF().
bitcastToAPInt().getZExtValue(), MVT::i32);
return DAG.getStore(Chain, N->getDebugLoc(), Tmp,
Ptr, ST->getPointerInfo(), ST->isVolatile(),
ST->isNonTemporal(), ST->getAlignment());
}
break;
-------------
What would be the proper way to inhibit this change? In my target (a custom
b/e) MVT::i32 is a legal type, and I have a "store MVT::i32" instructio...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...t; > SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(),
>> >> > dupVal.getDebugLoc(),
>> >> > dupVal.getOperand(0),
>> >> > dupVal.getOperand(1),
>> >> > dupNode->getPointerInfo(),
>> >> > dupNode->isVolatile(),
>> >> > dupNode->isNonTemporal(),
>> >> > dupNode->isInvariant(),
>> >> > dupNode->getAlignment(),
>> >> >...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...>
> >> > SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(),
> >> > dupVal.getDebugLoc(),
> >> > dupVal.getOperand(0),
> >> > dupVal.getOperand(1),
> >> > dupNode->getPointerInfo(),
> >> > dupNode->isVolatile(),
> >> > dupNode->isNonTemporal(),
> >> > dupNode->isInvariant(),
> >> > dupNode->getAlignment(),
> >> >...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...oad = CurDAG->getLoad(dupVal.getValueType(),
> >> >> > dupVal.getDebugLoc(),
> >> >> > dupVal.getOperand(0),
> >> >> > dupVal.getOperand(1),
> >> >> > dupNode->getPointerInfo(),
> >> >> > dupNode->isVolatile(),
> >> >> > dupNode->isNonTemporal(),
> >> >> > dupNode->isInvariant(),
> >> >> > dupNode->getAlignment(),
> >>...
2012 Nov 06
0
[LLVMdev] Compiling for several operand memories
Have not gotten much further on this, I can so far only use one memory with
(for example)
def LDr1 : F1< (outs GenRegs:$dst), (ins GenRegs:$addr),
"ld*0* $dst, ($addr)",
[(set GenRegs:$dst, (load GenRegs:$addr))],IIGenLoad>;
and
def LDrr : F1< (outs GenRegs:$dst), (ins MEMrr:$addr),
"ld*0* $dst, ($addr)",
2012 Oct 05
2
[LLVMdev] Compiling for several operand memories
Hello,
My target has two data memories, each with its own load/store instructions but also has some instructions using both memories. I want to be able to access both memories in C-programs through the address space attribute.
I have two ideas so far:
Either: use two sets of addressing modes in InstrInfo.td:
def ADDRrr_A : ComplexPattern<i16, 2, “SelectADDRrr_A", [], []>;
def ADDRri :