Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / Transforms / AtomicExpand / AMDGPU / no-expand-atomic-store.ll
blob9159393ab887e206651366f9a92561e58da27e6d
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2 ; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=atomic-expand %s | FileCheck %s
4 define void @store_atomic_f32_global_system(float %val, ptr addrspace(1) %ptr) {
5 ; CHECK-LABEL: define void @store_atomic_f32_global_system(
6 ; CHECK-SAME: float [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
7 ; CHECK-NEXT:    store atomic float [[VAL]], ptr addrspace(1) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0:![0-9]+]]
8 ; CHECK-NEXT:    ret void
10   store atomic float %val, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !0
11   ret void
14 define void @store_atomic_f32_global_agent(float %val, ptr addrspace(1) %ptr) {
15 ; CHECK-LABEL: define void @store_atomic_f32_global_agent(
16 ; CHECK-SAME: float [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
17 ; CHECK-NEXT:    store atomic float [[VAL]], ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 4, !some.unknown.md [[META0]]
18 ; CHECK-NEXT:    ret void
20   store atomic float %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !0
21   ret void
24 define void @store_atomic_f32_local(float %val, ptr addrspace(3) %ptr) {
25 ; CHECK-LABEL: define void @store_atomic_f32_local(
26 ; CHECK-SAME: float [[VAL:%.*]], ptr addrspace(3) [[PTR:%.*]]) {
27 ; CHECK-NEXT:    store atomic float [[VAL]], ptr addrspace(3) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
28 ; CHECK-NEXT:    ret void
30   store atomic float %val, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !0
31   ret void
34 define void @store_atomic_f32_flat(float %val, ptr %ptr) {
35 ; CHECK-LABEL: define void @store_atomic_f32_flat(
36 ; CHECK-SAME: float [[VAL:%.*]], ptr [[PTR:%.*]]) {
37 ; CHECK-NEXT:    store atomic float [[VAL]], ptr [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
38 ; CHECK-NEXT:    ret void
40   store atomic float %val, ptr %ptr seq_cst, align 4, !some.unknown.md !0
41   ret void
44 define void @store_atomic_f16_global_system(half %val, ptr addrspace(1) %ptr) {
45 ; CHECK-LABEL: define void @store_atomic_f16_global_system(
46 ; CHECK-SAME: half [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
47 ; CHECK-NEXT:    store atomic half [[VAL]], ptr addrspace(1) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
48 ; CHECK-NEXT:    ret void
50   store atomic half %val, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !0
51   ret void
54 define void @store_atomic_f16_global_agent(half %val, ptr addrspace(1) %ptr) {
55 ; CHECK-LABEL: define void @store_atomic_f16_global_agent(
56 ; CHECK-SAME: half [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
57 ; CHECK-NEXT:    store atomic half [[VAL]], ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 4, !some.unknown.md [[META0]]
58 ; CHECK-NEXT:    ret void
60   store atomic half %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !0
61   ret void
64 define void @store_atomic_f16_local(half %val, ptr addrspace(3) %ptr) {
65 ; CHECK-LABEL: define void @store_atomic_f16_local(
66 ; CHECK-SAME: half [[VAL:%.*]], ptr addrspace(3) [[PTR:%.*]]) {
67 ; CHECK-NEXT:    store atomic half [[VAL]], ptr addrspace(3) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
68 ; CHECK-NEXT:    ret void
70   store atomic half %val, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !0
71   ret void
74 define void @store_atomic_f16_flat(half %val, ptr %ptr) {
75 ; CHECK-LABEL: define void @store_atomic_f16_flat(
76 ; CHECK-SAME: half [[VAL:%.*]], ptr [[PTR:%.*]]) {
77 ; CHECK-NEXT:    store atomic half [[VAL]], ptr [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
78 ; CHECK-NEXT:    ret void
80   store atomic half %val, ptr %ptr seq_cst, align 4, !some.unknown.md !0
81   ret void
84 define void @store_atomic_bf16_global_system(bfloat %val, ptr addrspace(1) %ptr) {
85 ; CHECK-LABEL: define void @store_atomic_bf16_global_system(
86 ; CHECK-SAME: bfloat [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
87 ; CHECK-NEXT:    store atomic bfloat [[VAL]], ptr addrspace(1) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
88 ; CHECK-NEXT:    ret void
90   store atomic bfloat %val, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !0
91   ret void
94 define void @store_atomic_bf16_global_agent(bfloat %val, ptr addrspace(1) %ptr) {
95 ; CHECK-LABEL: define void @store_atomic_bf16_global_agent(
96 ; CHECK-SAME: bfloat [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
97 ; CHECK-NEXT:    store atomic bfloat [[VAL]], ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 4, !some.unknown.md [[META0]]
98 ; CHECK-NEXT:    ret void
100   store atomic bfloat %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !0
101   ret void
104 define void @store_atomic_bf16_local(bfloat %val, ptr addrspace(3) %ptr) {
105 ; CHECK-LABEL: define void @store_atomic_bf16_local(
106 ; CHECK-SAME: bfloat [[VAL:%.*]], ptr addrspace(3) [[PTR:%.*]]) {
107 ; CHECK-NEXT:    store atomic bfloat [[VAL]], ptr addrspace(3) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
108 ; CHECK-NEXT:    ret void
110   store atomic bfloat %val, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !0
111   ret void
114 define void @store_atomic_bf16_flat(bfloat %val, ptr %ptr) {
115 ; CHECK-LABEL: define void @store_atomic_bf16_flat(
116 ; CHECK-SAME: bfloat [[VAL:%.*]], ptr [[PTR:%.*]]) {
117 ; CHECK-NEXT:    store atomic bfloat [[VAL]], ptr [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]
118 ; CHECK-NEXT:    ret void
120   store atomic bfloat %val, ptr %ptr seq_cst, align 4, !some.unknown.md !0
121   ret void
123 define void @store_atomic_f64_global_system(double %val, ptr addrspace(1) %ptr) {
124 ; CHECK-LABEL: define void @store_atomic_f64_global_system(
125 ; CHECK-SAME: double [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
126 ; CHECK-NEXT:    store atomic double [[VAL]], ptr addrspace(1) [[PTR]] seq_cst, align 8, !some.unknown.md [[META0]]
127 ; CHECK-NEXT:    ret void
129   store atomic double %val, ptr addrspace(1) %ptr seq_cst, align 8, !some.unknown.md !0
130   ret void
133 define void @store_atomic_f64_global_agent(double %val, ptr addrspace(1) %ptr) {
134 ; CHECK-LABEL: define void @store_atomic_f64_global_agent(
135 ; CHECK-SAME: double [[VAL:%.*]], ptr addrspace(1) [[PTR:%.*]]) {
136 ; CHECK-NEXT:    store atomic double [[VAL]], ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 8, !some.unknown.md [[META0]]
137 ; CHECK-NEXT:    ret void
139   store atomic double %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 8, !some.unknown.md !0
140   ret void
143 define void @store_atomic_f64_local(double %val, ptr addrspace(3) %ptr) {
144 ; CHECK-LABEL: define void @store_atomic_f64_local(
145 ; CHECK-SAME: double [[VAL:%.*]], ptr addrspace(3) [[PTR:%.*]]) {
146 ; CHECK-NEXT:    store atomic double [[VAL]], ptr addrspace(3) [[PTR]] seq_cst, align 8, !some.unknown.md [[META0]]
147 ; CHECK-NEXT:    ret void
149   store atomic double %val, ptr addrspace(3) %ptr seq_cst, align 8, !some.unknown.md !0
150   ret void
153 define void @store_atomic_f64_flat(double %val, ptr %ptr) {
154 ; CHECK-LABEL: define void @store_atomic_f64_flat(
155 ; CHECK-SAME: double [[VAL:%.*]], ptr [[PTR:%.*]]) {
156 ; CHECK-NEXT:    store atomic double [[VAL]], ptr [[PTR]] seq_cst, align 8, !some.unknown.md [[META0]]
157 ; CHECK-NEXT:    ret void
159   store atomic double %val, ptr %ptr seq_cst, align 8, !some.unknown.md !0
160   ret void
163 !0 = !{}
165 ; CHECK: [[META0]] = !{}