ptx: add ld instruction and test
[oota-llvm.git] / test / CodeGen / PTX / ld.ll
1 ; RUN: llc < %s -march=ptx | FileCheck %s
2
3 ;CHECK: .extern .global .s32 array[];
4 @array = external global [10 x i32]
5
6 define ptx_device i32 @t1(i32* %p) {
7 entry:
8 ;CHECK: ld.global.s32 r0, [r1];
9   %x = load i32* %p
10   ret i32 %x
11 }
12
13 define ptx_device i32 @t2(i32* %p) {
14 entry:
15 ;CHECK: ld.global.s32 r0, [r1+4];
16   %i = getelementptr i32* %p, i32 1
17   %x = load i32* %i
18   ret i32 %x
19 }
20
21 define ptx_device i32 @t3(i32* %p, i32 %q) {
22 entry:
23 ;CHECK: shl.b32 r0, r2, 2;
24 ;CHECK: ld.global.s32 r0, [r1+r0];
25   %i = getelementptr i32* %p, i32 %q
26   %x = load i32* %i
27   ret i32 %x
28 }
29
30 define ptx_device i32 @t4() {
31 entry:
32 ;CHECK: ld.global.s32 r0, [array];
33   %i = getelementptr [10 x i32]* @array, i32 0, i32 0
34   %x = load i32* %i
35   ret i32 %x
36 }
37
38 define ptx_device i32 @t5() {
39 entry:
40 ;CHECK: ld.global.s32 r0, [array+4];
41   %i = getelementptr [10 x i32]* @array, i32 0, i32 1
42   %x = load i32* %i
43   ret i32 %x
44 }