|
1 |
| -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 5 |
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
2 | 2 | ; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -passes=amdgpu-attributor < %s | FileCheck -check-prefixes=GFX9 %s
|
3 | 3 | ; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -passes=amdgpu-attributor < %s | FileCheck -check-prefixes=GFX10 %s
|
4 | 4 |
|
|
10 | 10 | ;; tests of addrspacecast
|
11 | 11 |
|
12 | 12 | define void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) #0 {
|
13 |
| -; GFX9-LABEL: define void @with_private_to_flat_addrspacecast( |
14 |
| -; GFX9-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0:[0-9]+]] { |
15 |
| -; GFX9-NEXT: [[STOF:%.*]] = addrspacecast ptr addrspace(5) [[PTR]] to ptr |
16 |
| -; GFX9-NEXT: store volatile i32 0, ptr [[STOF]], align 4 |
17 |
| -; GFX9-NEXT: ret void |
18 |
| -; |
19 |
| -; GFX10-LABEL: define void @with_private_to_flat_addrspacecast( |
20 |
| -; GFX10-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0:[0-9]+]] { |
21 |
| -; GFX10-NEXT: [[STOF:%.*]] = addrspacecast ptr addrspace(5) [[PTR]] to ptr |
22 |
| -; GFX10-NEXT: store volatile i32 0, ptr [[STOF]], align 4 |
23 |
| -; GFX10-NEXT: ret void |
24 |
| -; |
25 | 13 | %stof = addrspacecast ptr addrspace(5) %ptr to ptr
|
26 | 14 | store volatile i32 0, ptr %stof
|
27 | 15 | ret void
|
28 | 16 | }
|
29 | 17 |
|
30 | 18 | define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) #0 {
|
31 |
| -; GFX9-LABEL: define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel( |
32 |
| -; GFX9-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0]] { |
33 |
| -; GFX9-NEXT: [[STOF:%.*]] = addrspacecast ptr addrspace(5) [[PTR]] to ptr |
34 |
| -; GFX9-NEXT: store volatile i32 0, ptr [[STOF]], align 4 |
35 |
| -; GFX9-NEXT: ret void |
36 |
| -; |
37 |
| -; GFX10-LABEL: define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel( |
38 |
| -; GFX10-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0]] { |
39 |
| -; GFX10-NEXT: [[STOF:%.*]] = addrspacecast ptr addrspace(5) [[PTR]] to ptr |
40 |
| -; GFX10-NEXT: store volatile i32 0, ptr [[STOF]], align 4 |
41 |
| -; GFX10-NEXT: ret void |
42 |
| -; |
43 | 19 | %stof = addrspacecast ptr addrspace(5) %ptr to ptr
|
44 | 20 | store volatile i32 0, ptr %stof
|
45 | 21 | ret void
|
46 | 22 | }
|
47 | 23 |
|
48 | 24 | define void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) #0 {
|
49 |
| -; GFX9-LABEL: define void @call_with_private_to_flat_addrspacecast( |
50 |
| -; GFX9-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0]] { |
51 |
| -; GFX9-NEXT: call void @with_private_to_flat_addrspacecast(ptr addrspace(5) [[PTR]]) |
52 |
| -; GFX9-NEXT: ret void |
53 |
| -; |
54 |
| -; GFX10-LABEL: define void @call_with_private_to_flat_addrspacecast( |
55 |
| -; GFX10-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0]] { |
56 |
| -; GFX10-NEXT: call void @with_private_to_flat_addrspacecast(ptr addrspace(5) [[PTR]]) |
57 |
| -; GFX10-NEXT: ret void |
58 |
| -; |
59 | 25 | call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
|
60 | 26 | ret void
|
61 | 27 | }
|
62 | 28 |
|
63 | 29 | define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) #0 {
|
64 |
| -; GFX9-LABEL: define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel( |
65 |
| -; GFX9-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0]] { |
66 |
| -; GFX9-NEXT: call void @with_private_to_flat_addrspacecast(ptr addrspace(5) [[PTR]]) |
67 |
| -; GFX9-NEXT: ret void |
68 |
| -; |
69 |
| -; GFX10-LABEL: define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel( |
70 |
| -; GFX10-SAME: ptr addrspace(5) [[PTR:%.*]]) #[[ATTR0]] { |
71 |
| -; GFX10-NEXT: call void @with_private_to_flat_addrspacecast(ptr addrspace(5) [[PTR]]) |
72 |
| -; GFX10-NEXT: ret void |
73 |
| -; |
74 | 30 | call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
|
75 | 31 | ret void
|
76 | 32 | }
|
77 | 33 |
|
78 | 34 | ;; tests of addrspacecast in a constant
|
79 | 35 |
|
80 | 36 | define amdgpu_kernel void @private_constant_expression_use(ptr addrspace(1) nocapture %out) #0 {
|
81 |
| -; GFX9-LABEL: define amdgpu_kernel void @private_constant_expression_use( |
82 |
| -; GFX9-SAME: ptr addrspace(1) captures(none) [[OUT:%.*]]) #[[ATTR0]] { |
83 |
| -; GFX9-NEXT: store volatile ptr addrspacecast (ptr addrspace(5) inttoptr (i32 123 to ptr addrspace(5)) to ptr), ptr addrspace(1) [[OUT]], align 8 |
84 |
| -; GFX9-NEXT: ret void |
85 |
| -; |
86 |
| -; GFX10-LABEL: define amdgpu_kernel void @private_constant_expression_use( |
87 |
| -; GFX10-SAME: ptr addrspace(1) captures(none) [[OUT:%.*]]) #[[ATTR0]] { |
88 |
| -; GFX10-NEXT: store volatile ptr addrspacecast (ptr addrspace(5) inttoptr (i32 123 to ptr addrspace(5)) to ptr), ptr addrspace(1) [[OUT]], align 8 |
89 |
| -; GFX10-NEXT: ret void |
90 |
| -; |
91 | 37 | store volatile ptr addrspacecast (ptr addrspace(5) inttoptr (i32 123 to ptr addrspace(5)) to ptr), ptr addrspace(1) %out, align 8
|
92 | 38 | ret void
|
93 | 39 | }
|
94 | 40 |
|
95 | 41 | ;; tests of intrinsics
|
96 | 42 |
|
97 | 43 | define amdgpu_kernel void @calls_intrin_ascast_cc_kernel(ptr addrspace(3) %ptr) #0 {
|
98 |
| -; GFX9-LABEL: define amdgpu_kernel void @calls_intrin_ascast_cc_kernel( |
99 |
| -; GFX9-SAME: ptr addrspace(3) [[PTR:%.*]]) #[[ATTR0]] { |
100 |
| -; GFX9-NEXT: [[TMP1:%.*]] = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) [[PTR]]) |
101 |
| -; GFX9-NEXT: store volatile i32 7, ptr [[TMP1]], align 4 |
102 |
| -; GFX9-NEXT: ret void |
103 |
| -; |
104 |
| -; GFX10-LABEL: define amdgpu_kernel void @calls_intrin_ascast_cc_kernel( |
105 |
| -; GFX10-SAME: ptr addrspace(3) [[PTR:%.*]]) #[[ATTR0]] { |
106 |
| -; GFX10-NEXT: [[TMP1:%.*]] = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) [[PTR]]) |
107 |
| -; GFX10-NEXT: store volatile i32 7, ptr [[TMP1]], align 4 |
108 |
| -; GFX10-NEXT: ret void |
109 |
| -; |
110 | 44 | %1 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) %ptr)
|
111 | 45 | store volatile i32 7, ptr %1, align 4
|
112 | 46 | ret void
|
113 | 47 | }
|
114 | 48 |
|
115 | 49 | define void @calls_intrin_ascast(ptr addrspace(3) %ptr) #0 {
|
116 |
| -; GFX9-LABEL: define void @calls_intrin_ascast( |
117 |
| -; GFX9-SAME: ptr addrspace(3) [[PTR:%.*]]) #[[ATTR0]] { |
118 |
| -; GFX9-NEXT: [[TMP1:%.*]] = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) [[PTR]]) |
119 |
| -; GFX9-NEXT: store volatile i32 7, ptr [[TMP1]], align 4 |
120 |
| -; GFX9-NEXT: ret void |
121 |
| -; |
122 |
| -; GFX10-LABEL: define void @calls_intrin_ascast( |
123 |
| -; GFX10-SAME: ptr addrspace(3) [[PTR:%.*]]) #[[ATTR0]] { |
124 |
| -; GFX10-NEXT: [[TMP1:%.*]] = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) [[PTR]]) |
125 |
| -; GFX10-NEXT: store volatile i32 7, ptr [[TMP1]], align 4 |
126 |
| -; GFX10-NEXT: ret void |
127 |
| -; |
128 | 50 | %1 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) %ptr)
|
129 | 51 | store volatile i32 7, ptr %1, align 4
|
130 | 52 | ret void
|
131 | 53 | }
|
132 | 54 |
|
133 | 55 | define amdgpu_kernel void @call_calls_intrin_ascast_cc_kernel(ptr addrspace(3) %ptr) #0 {
|
134 |
| -; GFX9-LABEL: define amdgpu_kernel void @call_calls_intrin_ascast_cc_kernel( |
135 |
| -; GFX9-SAME: ptr addrspace(3) [[PTR:%.*]]) #[[ATTR0]] { |
136 |
| -; GFX9-NEXT: call void @calls_intrin_ascast(ptr addrspace(3) [[PTR]]) |
137 |
| -; GFX9-NEXT: ret void |
138 |
| -; |
139 |
| -; GFX10-LABEL: define amdgpu_kernel void @call_calls_intrin_ascast_cc_kernel( |
140 |
| -; GFX10-SAME: ptr addrspace(3) [[PTR:%.*]]) #[[ATTR0]] { |
141 |
| -; GFX10-NEXT: call void @calls_intrin_ascast(ptr addrspace(3) [[PTR]]) |
142 |
| -; GFX10-NEXT: ret void |
143 |
| -; |
144 | 56 | call void @calls_intrin_ascast(ptr addrspace(3) %ptr)
|
145 | 57 | ret void
|
146 | 58 | }
|
147 | 59 |
|
148 | 60 | attributes #0 = { "amdgpu-no-flat-scratch-init" }
|
149 |
| -;. |
150 |
| -; GFX9: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="4,10" "target-cpu"="gfx900" "uniform-work-group-size"="false" } |
151 |
| -; GFX9: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx900" } |
152 |
| -;. |
153 |
| -; GFX10: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="8,20" "target-cpu"="gfx1010" "uniform-work-group-size"="false" } |
154 |
| -; GFX10: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx1010" } |
155 |
| -;. |
| 61 | + |
| 62 | +; GFX9: attributes #0 = { "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" } |
| 63 | +; GFX10: attributes #0 = { "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" } |
0 commit comments