167 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=atomic-expand %s | FileCheck %s3 4define 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 void9;10 store atomic float %val, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !011 ret void12}13 14define 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 void19;20 store atomic float %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !021 ret void22}23 24define 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 void29;30 store atomic float %val, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !031 ret void32}33 34define 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 void39;40 store atomic float %val, ptr %ptr seq_cst, align 4, !some.unknown.md !041 ret void42}43 44define 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 void49;50 store atomic half %val, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !051 ret void52}53 54define 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 void59;60 store atomic half %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !061 ret void62}63 64define 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 void69;70 store atomic half %val, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !071 ret void72}73 74define 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 void79;80 store atomic half %val, ptr %ptr seq_cst, align 4, !some.unknown.md !081 ret void82}83 84define 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 void89;90 store atomic bfloat %val, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !091 ret void92}93 94define 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 void99;100 store atomic bfloat %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !0101 ret void102}103 104define 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 void109;110 store atomic bfloat %val, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !0111 ret void112}113 114define 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 void119;120 store atomic bfloat %val, ptr %ptr seq_cst, align 4, !some.unknown.md !0121 ret void122}123define 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 void128;129 store atomic double %val, ptr addrspace(1) %ptr seq_cst, align 8, !some.unknown.md !0130 ret void131}132 133define 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 void138;139 store atomic double %val, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 8, !some.unknown.md !0140 ret void141}142 143define 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 void148;149 store atomic double %val, ptr addrspace(3) %ptr seq_cst, align 8, !some.unknown.md !0150 ret void151}152 153define 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 void158;159 store atomic double %val, ptr %ptr seq_cst, align 8, !some.unknown.md !0160 ret void161}162 163!0 = !{}164;.165; CHECK: [[META0]] = !{}166;.167