[NVPTX] Add GenericToNVVM IR converter to better handle idiomatic LLVM IR inputs
authorJustin Holewinski <jholewinski@nvidia.com>
Mon, 20 May 2013 12:13:32 +0000 (12:13 +0000)
committerJustin Holewinski <jholewinski@nvidia.com>
Mon, 20 May 2013 12:13:32 +0000 (12:13 +0000)
commit7536ecf2916a6a986f0d328069e3a210f34d5ea7
tree79ef3cd2c6624df66348936aa9d21dea21228202
parent55fdf5362954a58b7e1bda34ff5c7e1246bfb991
[NVPTX] Add GenericToNVVM IR converter to better handle idiomatic LLVM IR inputs

This converter currently only handles global variables in address space 0. For
these variables, they are promoted to address space 1 (global memory), and all
uses are updated to point to the result of a cvta.global instruction on the new
variable.

The motivation for this is address space 0 global variables are illegal since we
cannot declare variables in the generic address space.  Instead, we place the
variables in address space 1 and explicitly convert the pointer to address
space 0. This is primarily intended to help new users who expect to be able to
place global variables in the default address space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182254 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/NVPTX/CMakeLists.txt
lib/Target/NVPTX/NVPTX.h
lib/Target/NVPTX/NVPTXAsmPrinter.cpp
lib/Target/NVPTX/NVPTXAsmPrinter.h
lib/Target/NVPTX/NVPTXGenericToNVVM.cpp [new file with mode: 0644]
lib/Target/NVPTX/NVPTXIntrinsics.td
lib/Target/NVPTX/NVPTXTargetMachine.cpp
test/CodeGen/NVPTX/generic-to-nvvm.ll [new file with mode: 0644]