Displaying 13 results from an estimated 13 matches for "constantpoolsdnode".
2008 Sep 13
2
[LLVMdev] Alignment of constant loads
...es alignment 0
> Alignment = getMVTAlignment(VT);
>
> Inside getMVTAlignment, the ABI alignment is retrieved for the given VT.
>
> It appears that constants are already aligned to the preferred
> alignment, given this code in ScheduleDAG::AddOperand():
>
> } else if (ConstantPoolSDNode *CP =
> dyn_cast<ConstantPoolSDNode>(Op)) {
> [...]
> Align = TM.getTargetData()->getPreferredTypeAlignmentShift(Type);
>
> (note there is a curious FIXME there about alignment of vector types
> -- I think this may be a relic since getPreferredTypeAlignmentShif...
2008 Sep 15
0
[LLVMdev] Alignment of constant loads
...alignment parameters to the getLoad/getExtLoad calls.
>
> If you move the handling of Alignment==0 out of ScheduleDAGEmit.cpp
> and into SelectionDAG::getConstantPool, you can then have legalize
> read the alignment from the node, instead of making its own
> decision:
> cast<ConstantPoolSDNode>(CPIdx)->getAlignment()
>
>
I followed your suggestion but I've come across a bit of a snag. If you
get the alignment in LegalizeDAG using:
SDValue CPIdx = DAG.getConstantPool(LLVMC, TLI.getPointerTy());
unsigned Alignment = cast<ConstantPoolSDNode>(CPIdx)->getAlignmen...
2008 Sep 18
2
[LLVMdev] store addrspace qualifier
Mon Ping,
Thanks for the tip, but I can't for the life of me seem to get the
Value from a StoreSDNode. From looking at the SelectionDAGNodes header
file, the only class that has the getValue function call is
SrcValueSDNode that returns a Value type. The only class that has
getType is a ConstantPoolSDNode. I don't think that ConstantPoolSDNode
is what I want and when I try to cast the getBasePtr().Val of the
StoreSDNode to a SrcValueSDNode it asserts on:
Assertion failed: isa<X>(Val) && "cast<Ty>() argument of incompatible
type!"
This is what I'm attempting...
2008 Sep 12
0
[LLVMdev] Alignment of constant loads
...0) // Ensure that codegen never sees alignment 0
Alignment = getMVTAlignment(VT);
Inside getMVTAlignment, the ABI alignment is retrieved for the given VT.
It appears that constants are already aligned to the preferred
alignment, given this code in ScheduleDAG::AddOperand():
} else if (ConstantPoolSDNode *CP =
dyn_cast<ConstantPoolSDNode>(Op)) {
[...]
Align = TM.getTargetData()->getPreferredTypeAlignmentShift(Type);
(note there is a curious FIXME there about alignment of vector types
-- I think this may be a relic since getPreferredTypeAlignmentShift
should not return zer...
2011 Jun 22
1
[LLVMdev] Mips backend -- Incorrect globaladdr/constpool address generation when bit 15 of address is set?
..., %hi($CPI1_0)
// lwc1 $f0, %lo($CPI1_0)($2)
if ((Addr.getOperand(0).getOpcode() == MipsISD::Hi ||
Addr.getOperand(0).getOpcode() == ISD::LOAD) &&
Addr.getOperand(1).getOpcode() == MipsISD::Lo) {
SDValue LoVal = Addr.getOperand(1);
if (dyn_cast<ConstantPoolSDNode>(LoVal.getOperand(0))) {
Base = Addr.getOperand(0);
Offset = LoVal.getOperand(0);
return true;
}
}
}
This optimization folds the low 16 bits of the global address into the
load offset,
rather than generating a separate 'addiu' instruction.
To...
2008 Sep 17
0
[LLVMdev] store addrspace qualifier
The address qualifier is stored in the type of %result. From that
operand, you can get the Value and then call getType. The type for
result should be a PointerType which you cast to a PointerType and
get the getAddressSpace e.g. cast<PointerType>(Ty)->getAddressSpace()
-- Mon Ping
On Sep 17, 2008, at 1:06 PM, Villmow, Micah wrote:
> How do I access the address qualifier
2008 Sep 17
2
[LLVMdev] store addrspace qualifier
How do I access the address qualifier from the store instruction.
Given the following code:
define void @test_unary_op_anegate(float %x, float addrspace(11)*
%result) nounwind {
entry:
%neg = sub float -0.000000e+000, %x ; <float>
[#uses=1]
store float %neg, float addrspace(11)* %result
ret void
}
When I attempt to generate this code, I'm
2011 Feb 20
0
[LLVMdev] ConstantPoolValue lifecycle question
I am investigating the leak in MC/ARM/elf-reloc-01.ll on the valgrind bot. It seems to be leaking two MachineConstantPoolValues. When a ConstantPoolSDNode is created with a ConstantPoolValue, it owns that ConstantPoolValue. In InstrEmitter::AddOperand(), the index of the CPV is taken from a MachineConstantPool, which has two cases:
1) This is a new constant, so a new entry is created. The MachineConstantPoolValue is freed in MachineConstantPool'...
2012 Dec 17
0
[LLVMdev] Query Regarding instruction ordering of passive nodes
...such that they are free to be placed anywhere while generating the instruction sequence. Is this related with above problem of debug location ?
The list of passive nodes are :-
ConstantSDNode
ConstantFPSDNode
RegisterSDNode
RegisterMaskSDNode
GlobalAddressSDNode
BasicBlockSDNode
FrameIndexSDNode
ConstantPoolSDNode
JumpTableSDNode
ExternalSymbolSDNode
BlockAddressSDNode
MDNodeSDNode
Thanks
Karthik
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb11531.s
Type: application/octet-stream
Size: 10377 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-d...
2006 Dec 19
3
[LLVMdev] alias-aware scheduling
...cast<ConstantSDNode>(Base.getOperand(1))) {
+ Base = Base.getOperand(0);
+ Offset += C->getValue();
+ }
+ }
+
+ // If it's any of the following then it can't alias with anything but itself.
+ return isa<FrameIndexSDNode>(Base) ||
+ isa<ConstantPoolSDNode>(Base) ||
+ isa<GlobalAddressSDNode>(Base);
+ }
+
+ /* FIXME: copied from DAGCombiner.cpp */
+ /// isAlias - Return true if there is any possibility that the two addresses
+ /// overlap.
+ bool isAlias(SDOperand Ptr1, int64_t Size1,
+ const Value *SrcValue1, in...
2009 May 21
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On Wed, May 20, 2009 at 4:55 PM, Dan Gohman <gohman at apple.com> wrote:
> Can you explain why you chose the approach of using a new pass?
> I pictured removing LegalizeDAG's type legalization code would
> mostly consist of finding all the places that use TLI.getTypeAction
> and just deleting code for handling its Expand and Promote. Are you
> anticipating something more
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On May 20, 2009, at 1:34 PM, Eli Friedman wrote:
> On Wed, May 20, 2009 at 1:19 PM, Eli Friedman
> <eli.friedman at gmail.com> wrote:
>
>> Per subject, this patch adding an additional pass to handle vector
>>
>> operations; the idea is that this allows removing the code from
>>
>> LegalizeDAG that handles illegal types, which should be a significant
2009 May 21
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...SignSet, Four, Zero);
- uint64_t FF = 0x5f800000ULL;
- if (TLI.isLittleEndian()) FF <<= 32;
- Constant *FudgeFactor = ConstantInt::get(Type::Int64Ty, FF);
-
- SDValue CPIdx = DAG.getConstantPool(FudgeFactor, TLI.getPointerTy());
- unsigned Alignment = cast<ConstantPoolSDNode>(CPIdx)->getAlignment();
- CPIdx = DAG.getNode(ISD::ADD, dl, TLI.getPointerTy(), CPIdx, CstOffset);
- Alignment = std::min(Alignment, 4u);
- SDValue FudgeInReg;
- if (DestTy == MVT::f32)
- FudgeInReg = DAG.getLoad(MVT::f32, dl, DAG.getEntryNode(), CPIdx,
-...