[Beignet] [PATCH] GBE: avoid one optimization pass to generate wide integer.
Gong, Zhigang
zhigang.gong at intel.com
Fri Sep 5 01:38:14 PDT 2014
Thanks for testing with LLVM 3.3, just pushed with the fix.
> -----Original Message-----
> From: Yang, Rong R
> Sent: Friday, September 5, 2014 4:14 PM
> To: Gong, Zhigang; beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: RE: [Beignet] [PATCH] GBE: avoid one optimization pass to generate
> wide integer.
>
> Compiler error in llvm3.3:
> /home/champson/source/beignet/backend/src/llvm/llvm_to_gen.cpp: In
> function 'void gbe::runFuntionPass(llvm::Module&, llvm::TargetLibraryInfo*,
> const llvm::DataLayout&)':
> /home/champson/source/beignet/backend/src/llvm/llvm_to_gen.cpp:86:16:
> error: invalid conversion from 'const llvm::Pass*' to 'llvm::Pass*'
> [-fpermissive]
> FPM.add(&DL);
>
>
> void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo, const
> DataLayout &DL) should be void runFuntionPass(Module &mod,
> TargetLibraryInfo *libraryInfo, DataLayout &DL)
>
> and
> void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, const
> DataLayout &DL, int optLevel) should be void runModulePass(Module &mod,
> TargetLibraryInfo *libraryInfo, DataLayout &DL, int optLevel)
>
>
> Others LGTM.
>
> > -----Original Message-----
> > From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> > Zhigang Gong
> > Sent: Friday, September 05, 2014 2:50 PM
> > To: beignet at lists.freedesktop.org
> > Cc: Gong, Zhigang
> > Subject: [Beignet] [PATCH] GBE: avoid one optimization pass to generate wide
> > integer.
> >
> > Integer type wider than 64 bit is hard to handle on Gen.
> > Let's try to prevent ScalarReplAggregates pass to generate such type of
> > integer.
> >
> > Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> > ---
> > backend/src/llvm/llvm_to_gen.cpp | 23 ++++++++++++-----------
> > 1 file changed, 12 insertions(+), 11 deletions(-)
> >
> > diff --git a/backend/src/llvm/llvm_to_gen.cpp
> > b/backend/src/llvm/llvm_to_gen.cpp
> > index 758ea48..21aa4c6 100644
> > --- a/backend/src/llvm/llvm_to_gen.cpp
> > +++ b/backend/src/llvm/llvm_to_gen.cpp
> > @@ -76,14 +76,14 @@ namespace gbe
> > BVAR(OCL_OUTPUT_LLVM_BEFORE_EXTRA_PASS, false);
> > using namespace llvm;
> >
> > - void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo)
> > + void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo,
> > + const DataLayout &DL)
> > {
> > FunctionPassManager FPM(&mod);
> >
> > #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5
> > - FPM.add(new DataLayoutPass(&mod));
> > + FPM.add(new DataLayoutPass(DL));
> > #else
> > - FPM.add(new DataLayout(&mod));
> > + FPM.add(&DL);
> > #endif
> >
> > #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 @@
> > -107,14 +107,14 @@ namespace gbe
> > FPM.doFinalization();
> > }
> >
> > - void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, int
> > optLevel)
> > + void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, const
> > + DataLayout &DL, int optLevel)
> > {
> > llvm::PassManager MPM;
> >
> > #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5
> > - MPM.add(new DataLayoutPass(&mod));
> > + MPM.add(new DataLayoutPass(DL));
> > #else
> > - MPM.add(new DataLayout(&mod));
> > + MPM.add(&DL);
> > #endif
> > MPM.add(new TargetLibraryInfo(*libraryInfo));
> > MPM.add(createTypeBasedAliasAnalysisPass());
> > @@ -192,19 +192,20 @@ namespace gbe
> > if (M.get() == 0) return false;
> > }
> > Module &mod = (module!=NULL)?*(llvm::Module*)module:*M.get();
> > + DataLayout DL(&mod);
> >
> > Triple TargetTriple(mod.getTargetTriple());
> > TargetLibraryInfo *libraryInfo = new TargetLibraryInfo(TargetTriple);
> > libraryInfo->disableAllFunctions();
> >
> > - runFuntionPass(mod, libraryInfo);
> > - runModulePass(mod, libraryInfo, optLevel);
> > + runFuntionPass(mod, libraryInfo, DL);
> > + runModulePass(mod, libraryInfo, DL, optLevel);
> >
> > llvm::PassManager passes;
> > #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5
> > - passes.add(new DataLayoutPass(&mod));
> > + passes.add(new DataLayoutPass(DL));
> > #else
> > - passes.add(new DataLayout(&mod));
> > + passes.add(&DL);
> > #endif
> > // Print the code before further optimizations
> > if (OCL_OUTPUT_LLVM_BEFORE_EXTRA_PASS)
> > @@ -215,7 +216,7 @@ namespace gbe
> > #endif
> > passes.add(createIntrinsicLoweringPass());
> > passes.add(createFunctionInliningPass(200000));
> > - passes.add(createScalarReplAggregatesPass()); // Break up allocas
> > + passes.add(createScalarReplAggregatesPass(64, true, -1, -1, 64));
> > passes.add(createLoadStoreOptimizationPass());
> > passes.add(createRemoveGEPPass(unit));
> > passes.add(createConstantPropagationPass());
> > --
> > 1.8.3.2
> >
> > _______________________________________________
> > Beignet mailing list
> > Beignet at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list