search for: targetlibraryinfoimpl

Displaying 20 results from an estimated 28 matches for "targetlibraryinfoimpl".

2016 Feb 19
3
target triple in 3.8
...ing this now llvm::legacy::FunctionPassManager *functionPassManager = new llvm::legacy::FunctionPassManager(Mod); llvm::PassRegistry &registry = *llvm::PassRegistry::getPassRegistry(); initializeScalarOpts(registry); functionPassManager->add( new llvm::TargetLibraryInfoWrapperPass(llvm::TargetLibraryInfoImpl(targetMachine->getTargetTriple())) ); still, LV: The Widest register is: 32 bits. so, unfortunately no change. If I dump the Module, it starts with: ; ModuleID = 'module' target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" Does this datalayout look good for x8...
2020 Sep 01
2
Vectorization of math function failed?
I've tried to do: clang++ -O3 -march=native -mtune=native \ -Rpass=loop-vectorize,slp-vectorize -Rpass-missed=loop-vectorize,slp-vectorize -Rpass-analysis=loop-vectorize,slp-vectorize \ -ffast-math -ffp-model=fast -ffp-exception-behavior=ignore -ffp-contract=fast \ -c -o vec.o vec.cc But I've got no feedback. -- Alexandre Bique
2016 Feb 19
2
target triple in 3.8
I have some trouble making the SIMD vector length visible to the passes. My application is basically on the level of 'opt'. What I did in version 3.6 was functionPassManager->add(new llvm::TargetLibraryInfo(llvm::Triple(Mod->getTargetTriple()))); functionPassManager->add(new llvm::DataLayoutPass()); and then the -basicaa and -loop-vectorizer were able to vectorize the input
2018 Nov 27
2
ScalarEvolution class returns no valid loop exit count
...Loop> LIB; LIB.releaseMemory(); LIB.analyze(DT); for(auto&bb :*func){ Loop * L = LIB.getLoopFor(&bb); if(L != nullptr){ AssumptionCache AC = AssumptionCache(*bb.getParent()); Triple MT(llvm::sys::getDefaultTargetTriple()); TargetLibraryInfoImpl TLII(MT); TargetLibraryInfoWrapperPass TLI = TargetLibraryInfoWrapperPass(TLII); LoopInfo LI = LoopInfo(DT); LI.analyze(DT); *ScalarEvolution SE = ScalarEvolution(*func, TLI.getTLI(),AC, DT, LI);* BasicBlock * exitingblock = L->getUni...
2016 Dec 12
0
[RFC] Enable "#pragma omp declare simd" in the LoopVectorizer
On 12 December 2016 at 16:49, Francesco Petrogalli <Francesco.Petrogalli at arm.com> wrote: > I am not sure I understand here. In my patch, all I am doing is “vector > symbol awareness generation”. There are no globals that are generated in > the final object file, it is just the TargetLibraryInfoImpl that is being > populated with the info needed by the vectorizer. The information needs to be serialised into IR, so that a multi-step compilation (clang->llc) picks up the details. Otherwise, we'd be vectorising when coming from Clang and not when passing through opt/llc. Admittedly, o...
2016 Dec 12
2
[RFC] Enable "#pragma omp declare simd" in the LoopVectorizer
...ing multiple global functions defined >(something like weak linkage?), I don't have a better idea right now. I am not sure I understand here. In my patch, all I am doing is “vector symbol awareness generation”. There are no globals that are generated in the final object file, it is just the TargetLibraryInfoImpl that is being populated with the info needed by the vectorizer.
2016 Mar 23
2
Help with pass manager
...!"); if (FloatABIForCalls != FloatABI::Default) targetopts.FloatABIType = FloatABIForCalls; std::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); if (!objoutstream) return 1; legacy::PassManager passmanager; TargetLibraryInfoImpl TLII(moduletriple); TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); passmanager.add(tliwp); module->setDataLayout(tmachine->createDataLayout()); setFunctionAttributes(cpuname, ftrlist, *module); if (RelaxAll.getNumOccu...
2016 Mar 24
2
Help with pass manager
...pts.FloatABIType = FloatABIForCalls; >> >> >> std::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); >> if (!objoutstream) return 1; >> >> legacy::PassManager passmanager; >> >> TargetLibraryInfoImpl TLII(moduletriple); >> >> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >> >> passmanager.add(tliwp); >> >> module->setDataLayout(tmachine->createDataLayout()); >> >> setFunctio...
2016 Mar 24
0
Help with pass manager
...I::Default) > targetopts.FloatABIType = FloatABIForCalls; > > > std::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); > if (!objoutstream) return 1; > > legacy::PassManager passmanager; > > TargetLibraryInfoImpl TLII(moduletriple); > > TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); > > passmanager.add(tliwp); > > module->setDataLayout(tmachine->createDataLayout()); > > setFunctionAttributes(cpuname, ftrlist, *m...
2016 Mar 24
2
Help with pass manager
...gt;>> >>>> std::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); >>>> if (!objoutstream) return 1; >>>> >>>> legacy::PassManager passmanager; >>>> >>>> TargetLibraryInfoImpl TLII(moduletriple); >>>> >>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>> >>>> passmanager.add(tliwp); >>>> >>>> module->setDataLayout(tmachine->createData...
2016 Mar 24
0
Help with pass manager
...lls; >>> >>> >>> std::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); >>> if (!objoutstream) return 1; >>> >>> legacy::PassManager passmanager; >>> >>> TargetLibraryInfoImpl TLII(moduletriple); >>> >>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>> >>> passmanager.add(tliwp); >>> >>> module->setDataLayout(tmachine->createDataLayout()); >>>...
2016 Mar 24
2
Help with pass manager
...d::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); >>>>>> if (!objoutstream) return 1; >>>>>> >>>>>> legacy::PassManager passmanager; >>>>>> >>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>> >>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>> >>>>>> passmanager.add(tliwp); >>>>>> >>>>>>...
2016 Mar 24
0
Help with pass manager
...;>>> std::unique_ptr<tool_output_file> objoutstream = getOutputFileStream(module, srcname); >>>>> if (!objoutstream) return 1; >>>>> >>>>> legacy::PassManager passmanager; >>>>> >>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>> >>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>> >>>>> passmanager.add(tliwp); >>>>> >>>>> module->setDataLayout...
2016 Mar 24
2
Help with pass manager
...joutstream = getOutputFileStream(module, srcname); >>>>>>>> if (!objoutstream) return 1; >>>>>>>> >>>>>>>> legacy::PassManager passmanager; >>>>>>>> >>>>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>>>> >>>>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>>>> >>>>>>>> passmanager.add(tliwp); >>>>>>&gt...
2016 Mar 24
0
Help with pass manager
...l_output_file> objoutstream = getOutputFileStream(module, srcname); >>>>>>> if (!objoutstream) return 1; >>>>>>> >>>>>>> legacy::PassManager passmanager; >>>>>>> >>>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>>> >>>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>>> >>>>>>> passmanager.add(tliwp); >>>>>>> >>&...
2017 May 03
5
[SPIR-V] SPIR-V in LLVM
...therefore need to be able to register intrinsics and I believe this is impossible without a target (and even if it is, it makes less sense than a target that doesn’t use ISel/MC). Not being able to use intrinsics is a complete deal breaker. *Basic optimisations (basic CSE,DCE,inlining): requires a TargetLibraryInfoImpl(?) which I believe requires a target. While not strictly necessary it would improve the readability of the resulting IR/SPIRV. All of the more complex optimisations would be done “post ingestion” of the SPIRV and with a different target triple so are unaffected by any decision made. See my reply to...
2016 Mar 24
0
Help with pass manager
...utFileStream(module, srcname); >>>>>>>>> if (!objoutstream) return 1; >>>>>>>>> >>>>>>>>> legacy::PassManager passmanager; >>>>>>>>> >>>>>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>>>>> >>>>>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>>>>> >>>>>>>>> passmanager.add(tliwp); >>&gt...
2016 Mar 24
2
Help with pass manager
...srcname); >>>>>>>>>> if (!objoutstream) return 1; >>>>>>>>>> >>>>>>>>>> legacy::PassManager passmanager; >>>>>>>>>> >>>>>>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>>>>>> >>>>>>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>>>>>> >>>>>>>>>> passmanager.add(tli...
2016 Mar 24
0
Help with pass manager
...gt;>>>>>>>> if (!objoutstream) return 1; >>>>>>>>>>> >>>>>>>>>>> legacy::PassManager passmanager; >>>>>>>>>>> >>>>>>>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>>>>>>> >>>>>>>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>>>>>>> >>>>>>>>>>> pas...
2016 Mar 30
1
Help with pass manager
...gt;>>>> if (!objoutstream) return 1; >>>>>>>>>>>> >>>>>>>>>>>> legacy::PassManager passmanager; >>>>>>>>>>>> >>>>>>>>>>>> TargetLibraryInfoImpl TLII(moduletriple); >>>>>>>>>>>> >>>>>>>>>>>> TargetLibraryInfoWrapperPass *tliwp = new TargetLibraryInfoWrapperPass(TLII); >>>>>>>>>>>> >>>>>>>>>>...