[PowerPC] Recommit r314244 with refactoring and off by default
[llvm-core.git] / test / CodeGen / AMDGPU / r600.work-item-intrinsics.ll
blob9eee9a6effc92cb3ea7b7cf3a9869ff0867ebe9d
1 ; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
3 ; FUNC-LABEL: {{^}}tgid_x:
4 ; EG: MEM_RAT_CACHELESS STORE_RAW T1.X
5 define amdgpu_kernel void @tgid_x(i32 addrspace(1)* %out) {
6 entry:
7   %0 = call i32 @llvm.r600.read.tgid.x() #0
8   store i32 %0, i32 addrspace(1)* %out
9   ret void
12 ; FUNC-LABEL: {{^}}tgid_y:
13 ; EG: MEM_RAT_CACHELESS STORE_RAW T1.Y
14 define amdgpu_kernel void @tgid_y(i32 addrspace(1)* %out) {
15 entry:
16   %0 = call i32 @llvm.r600.read.tgid.y() #0
17   store i32 %0, i32 addrspace(1)* %out
18   ret void
21 ; FUNC-LABEL: {{^}}tgid_z:
22 ; EG: MEM_RAT_CACHELESS STORE_RAW T1.Z
23 define amdgpu_kernel void @tgid_z(i32 addrspace(1)* %out) {
24 entry:
25   %0 = call i32 @llvm.r600.read.tgid.z() #0
26   store i32 %0, i32 addrspace(1)* %out
27   ret void
30 ; FUNC-LABEL: {{^}}tidig_x:
31 ; EG: MEM_RAT_CACHELESS STORE_RAW T0.X
32 define amdgpu_kernel void @tidig_x(i32 addrspace(1)* %out) {
33 entry:
34   %0 = call i32 @llvm.r600.read.tidig.x() #0
35   store i32 %0, i32 addrspace(1)* %out
36   ret void
39 ; FUNC-LABEL: {{^}}tidig_y:
40 ; EG: MEM_RAT_CACHELESS STORE_RAW T0.Y
41 define amdgpu_kernel void @tidig_y(i32 addrspace(1)* %out) {
42 entry:
43   %0 = call i32 @llvm.r600.read.tidig.y() #0
44   store i32 %0, i32 addrspace(1)* %out
45   ret void
48 ; FUNC-LABEL: {{^}}tidig_z:
49 ; EG: MEM_RAT_CACHELESS STORE_RAW T0.Z
50 define amdgpu_kernel void @tidig_z(i32 addrspace(1)* %out) {
51 entry:
52   %0 = call i32 @llvm.r600.read.tidig.z() #0
53   store i32 %0, i32 addrspace(1)* %out
54   ret void
57 ; FUNC-LABEL: {{^}}test_implicit:
58 ; 36 prepended implicit bytes + 4(out pointer) + 4*4 = 56
59 ; EG: VTX_READ_32 {{T[0-9]+\.[XYZW]}}, {{T[0-9]+\.[XYZW]}}, 56
60 define amdgpu_kernel void @test_implicit(i32 addrspace(1)* %out) #1 {
61   %implicitarg.ptr = call noalias i8 addrspace(7)* @llvm.r600.implicitarg.ptr()
62   %header.ptr = bitcast i8 addrspace(7)* %implicitarg.ptr to i32 addrspace(7)*
63   %gep = getelementptr i32, i32 addrspace(7)* %header.ptr, i32 4
64   %value = load i32, i32 addrspace(7)* %gep
65   store i32 %value, i32 addrspace(1)* %out
66   ret void
69 ; FUNC-LABEL: {{^}}test_implicit_dyn:
70 ; 36 prepended implicit bytes + 8(out pointer + in) = 44
71 ; EG: VTX_READ_32 {{T[0-9]+\.[XYZW]}}, {{T[0-9]+\.[XYZW]}}, 44
72 define amdgpu_kernel void @test_implicit_dyn(i32 addrspace(1)* %out, i32 %in) #1 {
73   %implicitarg.ptr = call noalias i8 addrspace(7)* @llvm.r600.implicitarg.ptr()
74   %header.ptr = bitcast i8 addrspace(7)* %implicitarg.ptr to i32 addrspace(7)*
75   %gep = getelementptr i32, i32 addrspace(7)* %header.ptr, i32 %in
76   %value = load i32, i32 addrspace(7)* %gep
77   store i32 %value, i32 addrspace(1)* %out
78   ret void
81 declare i8 addrspace(7)* @llvm.r600.implicitarg.ptr() #0
83 declare i32 @llvm.r600.read.tgid.x() #0
84 declare i32 @llvm.r600.read.tgid.y() #0
85 declare i32 @llvm.r600.read.tgid.z() #0
87 declare i32 @llvm.r600.read.tidig.x() #0
88 declare i32 @llvm.r600.read.tidig.y() #0
89 declare i32 @llvm.r600.read.tidig.z() #0
91 attributes #0 = { readnone }