search for: externalsymbolsdnode

Displaying 10 results from an estimated 10 matches for "externalsymbolsdnode".

2006 Nov 15
2
[LLVMdev] LowerCALL (TargetLowering)
...and Callee = Op.getOperand(4); MVT::ValueType RetVT= Op.Val->getValueType(0); unsigned NumOps = (Op.getNumOperands() - 5) / 2; std::string Name; if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) Name = G->getGlobal()->getName(); else if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee)) Name = S->getSymbol(); unsigned opcode = funcname_to_opc[Name]; assert(opcode != 0 && "Unknown function call."); std::vector<MVT::ValueType> Tys; std::vector<SDOperand> Ops; for (unsigned i =...
2006 Nov 15
0
[LLVMdev] LowerCALL (TargetLowering)
...MVT::ValueType RetVT= Op.Val->getValueType(0); > unsigned NumOps = (Op.getNumOperands() - 5) / 2; > > std::string Name; > if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode> > (Callee)) > Name = G->getGlobal()->getName(); > else if (ExternalSymbolSDNode *S = > dyn_cast<ExternalSymbolSDNode>(Callee)) > Name = S->getSymbol(); > > unsigned opcode = funcname_to_opc[Name]; > assert(opcode != 0 && "Unknown function call."); > > std::vector<MVT::ValueType> Tys; > std::vector<S...
2013 Jul 02
1
[LLVMdev] Problem selecting the correct registers for a calling convention
...ointer you can then do: for (Function::const_arg_iterator I = F->arg_begin(), E = F->arg_end();I != E; ++I) { unsigned Bytes = TD->getTypeSizeInBits(I->getType()) / 8; // do stuff here } 2) The second case is when the dyn_cast above fails because the Callee SDValue is a ExternalSymbolSDNode. In this case you have to manually analyze the arguments using PartOffset. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130702/719fc65c/attachment.html>
2013 Mar 13
5
[LLVMdev] Problems with 64-bit register operands of inline asm on ARM
...ther words, we should probably do something like this (untested): --- a/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -3457,19 +3457,6 @@ SDNode *ARMDAGToDAGISel::SelectInlineAsm(SDNode *N){ bool Changed = false; unsigned NumOps = N->getNumOperands(); - ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>( - N->getOperand(InlineAsm::Op_AsmString)); - StringRef AsmString = StringRef(S->getSymbol()); - - // Normally, i64 data is bounded to two arbitrary GRPs for "%r" constraint. - // However, some instrstions (e.g. ldrexd/strexd in ARM...
2006 Nov 15
1
[LLVMdev] LowerCALL (TargetLowering)
...getValueType(0); > > unsigned NumOps = (Op.getNumOperands() - 5) / 2; > > > > std::string Name; > > if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode> > > (Callee)) > > Name = G->getGlobal()->getName(); > > else if (ExternalSymbolSDNode *S = > > dyn_cast<ExternalSymbolSDNode>(Callee)) > > Name = S->getSymbol(); > > > > unsigned opcode = funcname_to_opc[Name]; > > assert(opcode != 0 && "Unknown function call."); > > > > std::vector<MVT::ValueType...
2013 Mar 13
0
[LLVMdev] Problems with 64-bit register operands of inline asm on ARM
...ther words, we should probably do something like this (untested): --- a/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -3457,19 +3457,6 @@ SDNode *ARMDAGToDAGISel::SelectInlineAsm(SDNode *N){ bool Changed = false; unsigned NumOps = N->getNumOperands(); - ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>( - N->getOperand(InlineAsm::Op_AsmString)); - StringRef AsmString = StringRef(S->getSymbol()); - - // Normally, i64 data is bounded to two arbitrary GRPs for "%r" constraint. - // However, some instrstions (e.g. ldrexd/strexd in ARM...
2011 Apr 02
0
[LLVMdev] Callee prototype info in LowerCall()
Hello, I'm having trouble getting the function prototype of an ExternalSymbolSDNode inside TargetLowering::LowerCall(), this way i could get the original argument sizes before they're legalized into smaller parts. I need this sort of information because depending on the originaltypes of the arguments i need to use some regs or others. I tried using the isSplit flag in ArgFlags...
2012 Mar 16
0
[LLVMdev] Lowering formal pointer arguments
...implementing this for my backend. In LowerCall you can get the callee prototype info when the Callee SDValue is a GlobalAddressSDNode doing cast<Function>(G->getGlobal()) (where G is GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)), but this won't work when it is a ExternalSymbolSDNode, for that case i had to add additional info into the ISD::OutputArg struct to know the real size of the splitted argument. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120316/b55df694/attachment.html>
2012 Dec 17
0
[LLVMdev] Query Regarding instruction ordering of passive nodes
...ed 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-dev/attachments/20121217/5b876d39/atta...
2015 Jan 11
3
[LLVMdev] [RFC] [PATCH] add tail call optimization to thumb1-only targets
...r = DAG.getNode(ARMISD::Wrapper, dl, MVT::i32, CPAddr); + Callee = DAG.getLoad(getPointerTy(), dl, DAG.getEntryNode(), CPAddr, MachinePointerInfo::getConstantPool(), false, false, false, 0); + } else if (ExternalSymbolSDNode *S=dyn_cast<ExternalSymbolSDNode>(Callee)) { const char *Sym = S->getSymbol(); @@ -1785,6 +1810,12 @@ } } + if (CallAdressShallBeForcedToHardRegR12) { + Chain = DAG.getCopyToReg(Chain, dl, ARM::R12, + Callee,Chain.getValue(1)); + Callee...