search for: visitstore

Displaying 17 results from an estimated 17 matches for "visitstore".

2006 Dec 20
1
[LLVMdev] alias-aware scheduling
...const Value *SV, int SVOffset, bool isVolatile=false); SDOperand getStore(SDOperand Chain, SDOperand Val, SDOperand Ptr, const Value *SV, int SVOffset, bool isVolatile=false); In SelectionDAGISel.cpp in SelectionDAGLowering::getLoadFrom and SelectionDAGLowering::visitStore they are called like this: L = DAG.getLoad(TLI.getValueType(Ty), Root, Ptr, SV, isVolatile); DAG.setRoot(DAG.getStore(getRoot(), Src, Ptr, I.getOperand(1), I.isVolatile())); The isVolatile arguments are being passed to the SVOffset parameters. Dan -- Dan Gohma...
2008 Apr 24
0
[LLVMdev] FoldingSetNodeID operations inefficiency
...on't quite understand the TFs, how TFs are formed and which rules they should obey to. For example now: > PendingLoads created by the SelectionDAGLowering::getLoadFrom and then copied into the > TokenFactor node by SelectionDAGLowering::getRoot called from the > SelectionDAGLowering::visitStore So, if I now detect in the getRoot that there are more than let's say 64 nodes in the PendingLoads queue, what should I do? - Can I take only 64 of them and forget about the rest by ignoring them? - Or should I produces a series of TFs connected to each other, each with max 64 operands? If...
2009 Feb 19
3
[LLVMdev] Possible DAGCombiner or TargetData Bug
I got bit by this in LLVM 2.4 DagCombiner.cpp and it's still in trunk: SDValue DAGCombiner::visitSTORE(SDNode *N) { [...] // If this is a store of a bit convert, store the input value if the // resultant store does not need a higher alignment than the original. if (Value.getOpcode() == ISD::BIT_CONVERT && !ST->isTruncatingStore() && ST->isUnindexed()) { unsign...
2008 Apr 23
1
[LLVMdev] FoldingSetNodeID operations inefficiency
...B with tens of thousends of instructions, there is a TokenFactor node N that has ... 3200 operands! (These operands are PendingLoads created by the SelectionDAGLowering::getLoadFrom and then copied into the TokenFactor node by SelectionDAGLowering::getRoot called from the SelectionDAGLowering::visitStore). During the code selection phase, the SelectionDAG::ReplaceAllUsesWith is called many times and in many cases it tried to update this node, by replacing some of its 3200 operands by a different operand. After each such operand replacement, this snippen of code is typically executed (see Selec...
2010 Jul 09
0
[LLVMdev] types in load/store
...ooked into the interpreter, where I found the target information is defined in TargetData class, and aggregate types (like struct and array) compute the correct padding and alignment from TargetData first before memory access. But I still run into one question, according to the code, the visitLoad/visitStore functions used by the interpreter does not allow accessing aggregate types, only simple types are legal. On the other hand, the GenericValue used by interpreter to store values in memory only considers simple types (int, float, typ*) too, and each 'getOperandValue' also takes aggregate con...
2010 Jul 09
2
[LLVMdev] types in load/store
Hi Jianzhou, > I misunderstood C99 ISO, such behaviors are defined not when types > have the same sizes, but when they are same (compatible) types with > signed or qualified extension (this is much stronger than being of > same sizes), or reading char by char: > > 7 An object shall have its stored value accessed only by an lvalue > expression that has one of > the
2008 Apr 28
1
[LLVMdev] FoldingSetNodeID operations inefficiency
...on't quite understand the TFs, how TFs are formed and which rules they should obey to. For example now: > PendingLoads created by the SelectionDAGLowering::getLoadFrom and then copied into the > TokenFactor node by SelectionDAGLowering::getRoot called from the > SelectionDAGLowering::visitStore So, if I now detect in the getRoot that there are more than let's say 64 nodes in the PendingLoads queue, what should I do? - Can I take only 64 of them and forget about the rest by ignoring them? - Or should I produces a series of TFs connected to each other, each with max 64 operands? If...
2009 Feb 19
0
[LLVMdev] Possible DAGCombiner or TargetData Bug
...(Align <= OrigAlign && ((!LegalOperations && !ST->isVolatile()) || Does that look right to you? Dan On Wed, February 18, 2009 4:49 pm, David Greene wrote: > I got bit by this in LLVM 2.4 DagCombiner.cpp and it's still in trunk: > > SDValue DAGCombiner::visitSTORE(SDNode *N) { > > [...] > > // If this is a store of a bit convert, store the input value if the > // resultant store does not need a higher alignment than the original. > if (Value.getOpcode() == ISD::BIT_CONVERT && !ST->isTruncatingStore() && > S...
2006 Dec 19
3
[LLVMdev] alias-aware scheduling
...SV)); + DAG.getSrcValue(PtrV)); } else { - L = DAG.getLoad(TLI.getValueType(Ty), Root, Ptr, SV, isVolatile); + L = DAG.getLoad(TLI.getValueType(Ty), Root, Ptr, PtrV, Offset, isVolatile); } if (isVolatile) @@ -1848,13 +1996,37 @@ void SelectionDAGLowering::visitStore(StoreInst &I) { - Value *SrcV = I.getOperand(0); - SDOperand Src = getValue(SrcV); + SDOperand Src = getValue(I.getOperand(0)); SDOperand Ptr = getValue(I.getOperand(1)); - DAG.setRoot(DAG.getStore(getRoot(), Src, Ptr, I.getOperand(1), - I.isVolatile())); + + g...
2006 Dec 19
0
[LLVMdev] alias-aware scheduling
On Dec 19, 2006, at 12:13 PM, Dan Gohman wrote: > Hello, > > I did a little experiment modifying LLVM to be able to use alias- > analysis > information in scheduling so that independent memory operations may be > reordered. I am not sure if it is a good idea to do this at scheduling time. LLVM explicitly models control flows dependencies as chain operands. This eliminated
2017 Aug 25
9
[5.0.0 Release] Release Candidate 3 tagged
Dear testers, 5.0.0-rc3 was just tagged. This is a release candidate in the real sense: if nothing bad comes up in testing, this is what the release is going to look like. Please build, test and upload binaries to the sftp (use the /data/testers-uploads/ directory) and let me know what issues remain. I know we're a little bit behind schedule, but hopefully we can get to 'final'
2020 Jan 03
3
Interpreter crash due to an "Unknown constant pointer type!"
...const*) /home/al/llvm-9.0.0.src/lib/ExecutionEngine/ExecutionEngine.cpp:1013:0 #9 0x0000564bacfeb873 llvm::Interpreter::getOperandValue(llvm::Value*, llvm::ExecutionContext&) /home/al/llvm-9.0.0.src/lib/ExecutionEngine/Interpreter/Execution.cpp:2108:0 #10 0x0000564bacfe548a llvm::Interpreter::visitStoreInst(llvm::StoreInst&) /home/al/llvm-9.0.0.src/lib/ExecutionEngine/Interpreter/Execution.cpp:1105:0 #11 0x0000564bacfee32f llvm::InstVisitor<llvm::Interpreter, void>::visitStore(llvm::StoreInst&) /home/al/llvm-9.0.0.src/include/llvm/IR/Instruction.def:173:0 #12 0x0000564bacfed18d llvm:...
2020 Feb 10
2
Interpreter crash due to an "Unknown constant pointer type!"
...nEngine/ExecutionEngine.cpp:1013:0 >> #9 0x0000564bacfeb873 llvm::Interpreter::getOperandValue(llvm::Value*, >> llvm::ExecutionContext&) >> /home/al/llvm-9.0.0.src/lib/ExecutionEngine/Interpreter/Execution.cpp:2108:0 >> #10 0x0000564bacfe548a >> llvm::Interpreter::visitStoreInst(llvm::StoreInst&) >> /home/al/llvm-9.0.0.src/lib/ExecutionEngine/Interpreter/Execution.cpp:1105:0 >> #11 0x0000564bacfee32f llvm::InstVisitor<llvm::Interpreter, >> void>::visitStore(llvm::StoreInst&) >> /home/al/llvm-9.0.0.src/include/llvm/IR/Instruction.de...
2020 Feb 01
0
Interpreter crash due to an "Unknown constant pointer type!"
...ine.cpp:1013:0 >>> #9 0x0000564bacfeb873 llvm::Interpreter::getOperandValue(llvm::Value*, >>> llvm::ExecutionContext&) >>> /home/al/llvm-9.0.0.src/lib/ExecutionEngine/Interpreter/Execution.cpp:2108:0 >>> #10 0x0000564bacfe548a >>> llvm::Interpreter::visitStoreInst(llvm::StoreInst&) >>> /home/al/llvm-9.0.0.src/lib/ExecutionEngine/Interpreter/Execution.cpp:1105:0 >>> #11 0x0000564bacfee32f llvm::InstVisitor<llvm::Interpreter, >>> void>::visitStore(llvm::StoreInst&) >>> /home/al/llvm-9.0.0.src/include/llvm/I...
2019 Oct 04
2
Opportunity to split store of shuffled vector.
Canonicalizing to a masked store intrinsic is possible, but we might have to expand back to the load/shuffle/store sequence for targets that don't support masked store. And then you'd likely have to do the store splitting that I think is being requested for the original pattern anyway. But I'd like to step back to the premise - "LLVM seems to always generate vector instructions
2019 Dec 24
2
Interpreter crash due to an "Unknown constant pointer type!"
Hi David, In pretty sure that the crash is due to the instruction I have shared in my first email. In order to run pngpixel you just need libpng and zlib.. honest I thought that the .bc had Al the necessary. I'm happy to help you to reproduce it. As a curiosity, why do you think you cannot reproduce it? Unfortunately I won't be able to modify the interpreter soon.. anyway, I'll try to
2011 May 06
0
[LLVMdev] Question about linking llvm-mc when porting a new backend
...ner::visitEXTRACT_VECTOR_ELT(llvm::SDNode*) in libLLVMSelectionDAG.a(DAGCombiner.cpp.o) (anonymous namespace)::DAGCombiner::visitBIT_CONVERT(llvm::SDNode*) in libLLVMSelectionDAG.a(DAGCombiner.cpp.o) (anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*) in libLLVMSelectionDAG.a(DAGCombiner.cpp.o) llvm::TargetData::getTypeAllocSize(llvm::Type const*) constin libLLVMSelectionDAG.a(DAGCombiner.cpp.o) llvm::TargetData::getTypeAllocSize(llvm::Type const*) constin libLLVMCodeGen.a(Analysis.cpp.o)...