llvm-project/llvm/lib
Tom Stellard e190cd2834 Triple: Add opencl environment type
Summary:
For AMDGPU, we have been using the operating system component of the triple
for specifying the low-level runtime that is being used.  The rationale for
this is that the host operating system (e.g. Linux) is irrelevant for GPU code,
since its execution enviroment will be mostly controled by the low-level runtime
being used to execute the code.

In most cases, higher level languages have their own runtime which is
implemented on top of the low-level runtime.  The kernel ABIs of each
language mostly depend on the low-level runtime, but there may be some
slight differences between languages.  OpenCL for example, may append
additional arguments to the kernel in order to pass values like global
offsets or buffers for printf.  OpenMP, HCC, or other languages may want
to add their own values which differ from OpenCL.

The reason for adding a new opencl environment type is to make it possible for the backend
to distinguish between the ABIs of the higher-level languages and handle them correctly.
It seems cleaner to use the enviroment component for this rather than creating a new
OS type for every combination of low-level runtime / high-level language.

Reviewers: Anastasia, chandlerc

Subscribers: whchung, pekka.jaaskelainen, wdng, yaxunl, llvm-commits

Differential Revision: https://reviews.llvm.org/D24735

llvm-svn: 282218
2016-09-23 00:42:56 +00:00
..
Analysis [LV] When reporting about a specific instruction without debug location use loop's 2016-09-21 03:14:20 +00:00
AsmParser [AsmParser] Remove unused partial template specialization. 2016-09-22 22:02:59 +00:00
Bitcode [ThinLTO] Always emit a summary when compiling in ThinLTO mode 2016-09-20 23:07:17 +00:00
CodeGen [RegisterBankInfo] Check that the mapping covers the interesting bits. 2016-09-23 00:14:34 +00:00
DebugInfo [pdb] Write the IPI stream. 2016-09-15 18:22:31 +00:00
Demangle Avoid using alignas and constexpr. 2016-09-06 20:36:24 +00:00
ExecutionEngine [MCJIT] Fix some inconsistent handling of name mangling inside MCJIT. 2016-09-12 17:19:24 +00:00
Fuzzer [libFuzzer] change ValueBitMap to remember the number of bits in it 2016-09-23 00:22:46 +00:00
IR [Profile] code refactoring: make getStep a method in base class 2016-09-20 19:07:22 +00:00
IRReader
LTO [ThinLTO] Emit files for distributed builds for all modules 2016-09-21 19:12:05 +00:00
LibDriver Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
LineEditor Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes. 2016-03-28 17:40:08 +00:00
Linker DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
MC [MC] Support skip and count for .incbin directive 2016-09-23 00:41:06 +00:00
Object Next set of additional error checks for invalid Mach-O files for bad LC_UUID 2016-09-21 20:03:09 +00:00
ObjectYAML [macho2yaml] Don't write empty linkedit data 2016-08-17 21:46:04 +00:00
Option Replace "fallthrough" comments with LLVM_FALLTHROUGH 2016-08-17 05:10:15 +00:00
Passes Fix test after renaming -name-anon-functions pass to -name-anon-globals 2016-09-16 17:18:16 +00:00
ProfileData [Coverage] Make sorting criteria for CounterMappingRegions local. 2016-08-31 07:01:17 +00:00
Support Triple: Add opencl environment type 2016-09-23 00:42:56 +00:00
TableGen Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
Target [AArch64][RegisterBankInfo] Switch to TableGen'ed like PartialMapping. 2016-09-23 00:14:36 +00:00
Transforms [InstCombine] fold X urem C -> X < C ? X : X - C when C is big (PR28672) 2016-09-22 22:36:26 +00:00
CMakeLists.txt Try to fix a circular dependency in the modules build. 2016-09-06 20:16:19 +00:00
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00