diff options
Diffstat (limited to 'test/CodeGen/NVPTX/ldg-invariant.ll')
-rw-r--r-- | test/CodeGen/NVPTX/ldg-invariant.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/CodeGen/NVPTX/ldg-invariant.ll b/test/CodeGen/NVPTX/ldg-invariant.ll index 40dad1f1769ba..311bea6f41645 100644 --- a/test/CodeGen/NVPTX/ldg-invariant.ll +++ b/test/CodeGen/NVPTX/ldg-invariant.ll @@ -10,6 +10,30 @@ define i32 @ld_global(i32 addrspace(1)* %ptr) { ret i32 %a } +; CHECK-LABEL: @ld_global_v2i32 +define i32 @ld_global_v2i32(<2 x i32> addrspace(1)* %ptr) { +; CHECK: ld.global.nc.v2.{{[a-z]}}32 + %a = load <2 x i32>, <2 x i32> addrspace(1)* %ptr, !invariant.load !0 + %v1 = extractelement <2 x i32> %a, i32 0 + %v2 = extractelement <2 x i32> %a, i32 1 + %sum = add i32 %v1, %v2 + ret i32 %sum +} + +; CHECK-LABEL: @ld_global_v4i32 +define i32 @ld_global_v4i32(<4 x i32> addrspace(1)* %ptr) { +; CHECK: ld.global.nc.v4.{{[a-z]}}32 + %a = load <4 x i32>, <4 x i32> addrspace(1)* %ptr, !invariant.load !0 + %v1 = extractelement <4 x i32> %a, i32 0 + %v2 = extractelement <4 x i32> %a, i32 1 + %v3 = extractelement <4 x i32> %a, i32 2 + %v4 = extractelement <4 x i32> %a, i32 3 + %sum1 = add i32 %v1, %v2 + %sum2 = add i32 %v3, %v4 + %sum3 = add i32 %sum1, %sum2 + ret i32 %sum3 +} + ; CHECK-LABEL: @ld_not_invariant define i32 @ld_not_invariant(i32 addrspace(1)* %ptr) { ; CHECK: ld.global.{{[a-z]}}32 |