Michal Sojka [Fri, 14 Dec 2018 14:32:56 +0000 (15:32 +0100)]
Update HerculesCompiler submodule
* HerculesCompiler d505f4c...304d82e (3):
> Fix for newBackedge when SCEV could not be computed.Added HERCULES_FORCE_COMPATIBLE environment variable to avoid PREMization of certain functions
> Removed CPU lock from GPUguard
> Added option for using GPUguard in libpremnotify-cpu
Michal Sojka [Thu, 13 Dec 2018 11:16:39 +0000 (12:16 +0100)]
Update HerculesCompiler
* HerculesCompiler 2b5f477...d505f4c (16):
> Included backwards compatibility for 3arg hypercall, and ignore IRQ handler time in gguard-hyper
> Added system headers to hypercall-if.h
> Changed hypercall-if.h include to work dir
> Added hypercall interface for gpuguard-hyper
> Added GPUguard for hypervisor
> Better gitignore for gpuguard-legacy
> Better gitignore for gpuguard-lkm
> Safety check in gpuguard-ompif.h for lkm version
> Added old, one-init-one-run version of gpuguard used for early experiments
> Changed label for SoftDMA test from ItBf to SAFE, in cases when
the reason is not Partially Analyzable code
> Extended safety check for SoftDMA to avoid crash on non-unique IVs
per dim (in poly_covariance)
> Added SoftDMA Cache Line optimization. Fixed issue where
cache-based Execute phase would be specialized. Fixed cache line
size to 64B to match TX2 A57. Minor other fixes
> Fixed issue where Intervals would be created within loops instead
of around. Fixed issue where wrong upper bound on range would be
reported when loop IV is initialized from parent IV.
> Moved last HERCULES optimization to later
> Resetting virtual iteratior limit in parent header
> Cleaning up unneccessary instructions after first wave of default optimizations
Michal Sojka [Wed, 28 Nov 2018 05:50:02 +0000 (06:50 +0100)]
Update HerculesCompiler submodule
HerculesCompiler a18ca9f...2b5f477 (7):
> Only insert __prem_channel if entry is main
> Fixed issue with Iterbuffered loops on multiple independent loop nests
> Better support for strange loop nests
> Keep original name for main_dummy after compilation
> Removed white text output for white bg terminals
> Added support for main_dummy_* matching
> Whitelisted NVVM libmath functions
Michal Sojka [Fri, 23 Nov 2018 07:41:39 +0000 (08:41 +0100)]
Add and compile LLVM linker (LLD)
This linker can cross-link for different architecure. Unfortunately, I
haven't found a way how to tell clang to use this linker by default so
one has to link manually by using the ld.lld command.
Michal Sojka [Thu, 22 Nov 2018 22:40:50 +0000 (23:40 +0100)]
Configure clang with LLVM_ENABLE_LLD=ON
This enables the use of LLVM linker rather than using GNU linker.
With LLVM linker it is possible to use the compiler as a
cross-compiler e.g. by using --target=aarch64 switch.
Michal Sojka [Thu, 22 Nov 2018 21:25:00 +0000 (22:25 +0100)]
Update HerculesCompiler and openmp submodules
* HerculesCompiler 9ff0055...a18ca9f (9):
> Fixed issue with participating threads, and lowered throttle thread prio to not block bottom halves of interrupt handlers
> Better error message if a Compatible interval fails to be registered
> Registering Compatible intervals
> Added support for COMPATIBLE in PremRegistry
> Less verbose tiler
> Adjusted output from Mark
> Changed kernel name to function name for non-NVIDIA
> Added possibility to whitelist external functions through HERCULES_EXTERNAL_WHITELIST
> Disable GPUguard by default
* openmp 7716df0...691e996 (1):
> Disable GPUguard by default
Added rule to ignore missing dependency information in shared
libraries. This resolves the following error:
dpkg-shlibdeps: error: no dependency information found for
/usr/lib/aarch64-linux-gnu/tegra/libcuda.so.1 (used by
debian/hercules-compiler/opt/hercules-compiler/lib/libomptarget.rtl.cuda.so)
The error appears when compiling the package on TX2.
* Added trailing / to HERCULES_PASS_ROOT in Makefile to fix path problem during usage of the hercules compiler
* Changed llvm-passes/include/Config/Options.h to solve errors during hercules configuration
- enabled USE_HW_CACHES_INDWRITEBACK_LIBCALL, DONT_SPECIALIZE_EXECUTE and PREFETCH_REPS 1
Michal Sojka [Thu, 10 May 2018 20:42:23 +0000 (22:42 +0200)]
Build native *-tblgen during cross builds
For some reason, LLVM buildsystem does treat our crossbuilds as native
builds. Perhaps because we use qemu-user-static to allow running cross
binaries. To build everything correcly, native tblgen binaries are
needed.
This commit build native tblgen binaries and uses them for the cross
build.