brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · b1497ae Raw
182 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 4; Make sure atomic loads are not bitcasted and lose metadata5 6define float @load_atomic_f32_global_system(ptr addrspace(1) %ptr) {7; CHECK-LABEL: define float @load_atomic_f32_global_system(8; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {9; CHECK-NEXT:    [[TMP2:%.*]] = load atomic float, ptr addrspace(1) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0:![0-9]+]]10; CHECK-NEXT:    ret float [[TMP2]]11;12  %ld = load atomic float, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !013  ret float %ld14}15 16define float @load_atomic_f32_global_agent(ptr addrspace(1) %ptr) {17; CHECK-LABEL: define float @load_atomic_f32_global_agent(18; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {19; CHECK-NEXT:    [[TMP2:%.*]] = load atomic float, ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 4, !some.unknown.md [[META0]]20; CHECK-NEXT:    ret float [[TMP2]]21;22  %ld = load atomic float, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !023  ret float %ld24}25 26define float @load_atomic_f32_local(ptr addrspace(3) %ptr) {27; CHECK-LABEL: define float @load_atomic_f32_local(28; CHECK-SAME: ptr addrspace(3) [[PTR:%.*]]) {29; CHECK-NEXT:    [[TMP2:%.*]] = load atomic float, ptr addrspace(3) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]30; CHECK-NEXT:    ret float [[TMP2]]31;32  %ld = load atomic float, ptr addrspace(3) %ptr seq_cst, align 4, !some.unknown.md !033  ret float %ld34}35 36define float @load_atomic_f32_flat_system(ptr %ptr) {37; CHECK-LABEL: define float @load_atomic_f32_flat_system(38; CHECK-SAME: ptr [[PTR:%.*]]) {39; CHECK-NEXT:    [[TMP2:%.*]] = load atomic float, ptr [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]40; CHECK-NEXT:    ret float [[TMP2]]41;42  %ld = load atomic float, ptr %ptr seq_cst, align 4, !some.unknown.md !043  ret float %ld44}45 46define float @load_atomic_f32_flat_agent(ptr %ptr) {47; CHECK-LABEL: define float @load_atomic_f32_flat_agent(48; CHECK-SAME: ptr [[PTR:%.*]]) {49; CHECK-NEXT:    [[TMP2:%.*]] = load atomic float, ptr [[PTR]] syncscope("agent") seq_cst, align 4, !some.unknown.md [[META0]]50; CHECK-NEXT:    ret float [[TMP2]]51;52  %ld = load atomic float, ptr %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !053  ret float %ld54}55 56define half @load_atomic_f16_global_system(ptr addrspace(1) %ptr) {57; CHECK-LABEL: define half @load_atomic_f16_global_system(58; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {59; CHECK-NEXT:    [[TMP2:%.*]] = load atomic half, ptr addrspace(1) [[PTR]] seq_cst, align 4, !some.unknown.md [[META0]]60; CHECK-NEXT:    ret half [[TMP2]]61;62  %ld = load atomic half, ptr addrspace(1) %ptr seq_cst, align 4, !some.unknown.md !063  ret half %ld64}65 66define half @load_atomic_f16_global_agent(ptr addrspace(1) %ptr) {67; CHECK-LABEL: define half @load_atomic_f16_global_agent(68; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {69; CHECK-NEXT:    [[TMP2:%.*]] = load atomic half, ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 4, !some.unknown.md [[META0]]70; CHECK-NEXT:    ret half [[TMP2]]71;72  %ld = load atomic half, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 4, !some.unknown.md !073  ret half %ld74}75 76define half @load_atomic_f16_local(ptr addrspace(3) %ptr) {77; CHECK-LABEL: define half @load_atomic_f16_local(78; CHECK-SAME: ptr addrspace(3) [[PTR:%.*]]) {79; CHECK-NEXT:    [[TMP2:%.*]] = load atomic half, ptr addrspace(3) [[PTR]] seq_cst, align 2, !some.unknown.md [[META0]]80; CHECK-NEXT:    ret half [[TMP2]]81;82  %ld = load atomic half, ptr addrspace(3) %ptr seq_cst, align 2, !some.unknown.md !083  ret half %ld84}85 86define bfloat @load_atomic_bf16_global_system(ptr addrspace(1) %ptr) {87; CHECK-LABEL: define bfloat @load_atomic_bf16_global_system(88; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {89; CHECK-NEXT:    [[TMP2:%.*]] = load atomic bfloat, ptr addrspace(1) [[PTR]] seq_cst, align 2, !some.unknown.md [[META0]]90; CHECK-NEXT:    ret bfloat [[TMP2]]91;92  %ld = load atomic bfloat, ptr addrspace(1) %ptr seq_cst, align 2, !some.unknown.md !093  ret bfloat %ld94}95 96define bfloat @load_atomic_bf16_global_agent(ptr addrspace(1) %ptr) {97; CHECK-LABEL: define bfloat @load_atomic_bf16_global_agent(98; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {99; CHECK-NEXT:    [[TMP2:%.*]] = load atomic bfloat, ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 2, !some.unknown.md [[META0]]100; CHECK-NEXT:    ret bfloat [[TMP2]]101;102  %ld = load atomic bfloat, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 2, !some.unknown.md !0103  ret bfloat %ld104}105 106define bfloat @load_atomic_bf16_local(ptr addrspace(3) %ptr) {107; CHECK-LABEL: define bfloat @load_atomic_bf16_local(108; CHECK-SAME: ptr addrspace(3) [[PTR:%.*]]) {109; CHECK-NEXT:    [[TMP2:%.*]] = load atomic bfloat, ptr addrspace(3) [[PTR]] seq_cst, align 2, !some.unknown.md [[META0]]110; CHECK-NEXT:    ret bfloat [[TMP2]]111;112  %ld = load atomic bfloat, ptr addrspace(3) %ptr seq_cst, align 2, !some.unknown.md !0113  ret bfloat %ld114}115 116define bfloat @load_atomic_bf16_flat(ptr %ptr) {117; CHECK-LABEL: define bfloat @load_atomic_bf16_flat(118; CHECK-SAME: ptr [[PTR:%.*]]) {119; CHECK-NEXT:    [[TMP2:%.*]] = load atomic bfloat, ptr [[PTR]] seq_cst, align 2, !some.unknown.md [[META0]]120; CHECK-NEXT:    ret bfloat [[TMP2]]121;122  %ld = load atomic bfloat, ptr %ptr seq_cst, align 2, !some.unknown.md !0123  ret bfloat %ld124}125 126define double @load_atomic_f64_global_system(ptr addrspace(1) %ptr) {127; CHECK-LABEL: define double @load_atomic_f64_global_system(128; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {129; CHECK-NEXT:    [[TMP2:%.*]] = load atomic double, ptr addrspace(1) [[PTR]] seq_cst, align 8, !some.unknown.md [[META0]]130; CHECK-NEXT:    ret double [[TMP2]]131;132  %ld = load atomic double, ptr addrspace(1) %ptr seq_cst, align 8, !some.unknown.md !0133  ret double %ld134}135 136define double @load_atomic_f64_global_agent(ptr addrspace(1) %ptr) {137; CHECK-LABEL: define double @load_atomic_f64_global_agent(138; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {139; CHECK-NEXT:    [[TMP2:%.*]] = load atomic double, ptr addrspace(1) [[PTR]] syncscope("agent") seq_cst, align 8, !some.unknown.md [[META0]]140; CHECK-NEXT:    ret double [[TMP2]]141;142  %ld = load atomic double, ptr addrspace(1) %ptr syncscope("agent") seq_cst, align 8, !some.unknown.md !0143  ret double %ld144}145 146define double @load_atomic_f64_local(ptr addrspace(3) %ptr) {147; CHECK-LABEL: define double @load_atomic_f64_local(148; CHECK-SAME: ptr addrspace(3) [[PTR:%.*]]) {149; CHECK-NEXT:    [[TMP2:%.*]] = load atomic double, ptr addrspace(3) [[PTR]] seq_cst, align 8, !some.unknown.md [[META0]]150; CHECK-NEXT:    ret double [[TMP2]]151;152  %ld = load atomic double, ptr addrspace(3) %ptr seq_cst, align 8, !some.unknown.md !0153  ret double %ld154}155 156define double @load_atomic_f64_flat_system(ptr %ptr) {157; CHECK-LABEL: define double @load_atomic_f64_flat_system(158; CHECK-SAME: ptr [[PTR:%.*]]) {159; CHECK-NEXT:    [[TMP2:%.*]] = load atomic double, ptr [[PTR]] seq_cst, align 8, !some.unknown.md [[META0]]160; CHECK-NEXT:    ret double [[TMP2]]161;162  %ld = load atomic double, ptr %ptr seq_cst, align 8, !some.unknown.md !0163  ret double %ld164}165 166define double @load_atomic_f64_flat_agent(ptr %ptr) {167; CHECK-LABEL: define double @load_atomic_f64_flat_agent(168; CHECK-SAME: ptr [[PTR:%.*]]) {169; CHECK-NEXT:    [[TMP2:%.*]] = load atomic double, ptr [[PTR]] syncscope("agent") seq_cst, align 8, !some.unknown.md [[META0]]170; CHECK-NEXT:    ret double [[TMP2]]171;172  %ld = load atomic double, ptr %ptr syncscope("agent") seq_cst, align 8, !some.unknown.md !0173  ret double %ld174}175 176!0 = !{}177 178 179;.180; CHECK: [[META0]] = !{}181;.182