|
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