summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
authorJustin Lebar <jlebar@google.com>2018-02-28 23:58:05 +0000
committerJustin Lebar <jlebar@google.com>2018-02-28 23:58:05 +0000
commitfaaf2d298e033bf8cdd130a124bfc2c74fe5f046 (patch)
tree557f3e582e84c6dcab61183f6ff5b5ac7f362e14 /llvm/test/CodeGen
parent5a7de898d236e2b426e050ce51fb72e382eafa28 (diff)
downloadbcm5719-llvm-faaf2d298e033bf8cdd130a124bfc2c74fe5f046.tar.gz
bcm5719-llvm-faaf2d298e033bf8cdd130a124bfc2c74fe5f046.zip
[NVPTX] Lower loads from global constants using ld.global.nc (aka LDG).
Summary: After D43914, loads from global variables in addrspace(1) happen with ld.global. But since they're constants, even better would be to use ld.global.nc, aka ldg. Reviewers: tra Subscribers: jholewinski, sanjoy, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D43915 llvm-svn: 326390
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/NVPTX/read-global-variable-constant.ll29
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/NVPTX/read-global-variable-constant.ll b/llvm/test/CodeGen/NVPTX/read-global-variable-constant.ll
new file mode 100644
index 00000000000..cb9e6dc3a45
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/read-global-variable-constant.ll
@@ -0,0 +1,29 @@
+; RUN: llc < %s -march=nvptx -mcpu=sm_35 | FileCheck %s
+
+; Check load from constant global variables. These loads should be
+; ld.global.nc (aka ldg).
+
+@gv_float = external constant float
+@gv_float2 = external constant <2 x float>
+@gv_float4 = external constant <4 x float>
+
+; CHECK-LABEL: test_gv_float()
+define float @test_gv_float() {
+; CHECK: ld.global.nc.f32
+ %v = load float, float* @gv_float
+ ret float %v
+}
+
+; CHECK-LABEL: test_gv_float2()
+define <2 x float> @test_gv_float2() {
+; CHECK: ld.global.nc.v2.f32
+ %v = load <2 x float>, <2 x float>* @gv_float2
+ ret <2 x float> %v
+}
+
+; CHECK-LABEL: test_gv_float4()
+define <4 x float> @test_gv_float4() {
+; CHECK: ld.global.nc.v4.f32
+ %v = load <4 x float>, <4 x float>* @gv_float4
+ ret <4 x float> %v
+}
OpenPOWER on IntegriCloud