brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.6 KiB · d744703 Raw
200 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 52// RUN: %clang_cc1 -fnative-half-arguments-and-returns -triple amdgcn-amd-amdhsa-gnu -target-cpu gfx900 -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK,SAFE %s3// RUN: %clang_cc1 -fnative-half-arguments-and-returns -triple amdgcn-amd-amdhsa-gnu -target-cpu gfx900 -emit-llvm -munsafe-fp-atomics -o - %s | FileCheck -check-prefixes=CHECK,UNSAFE %s4 5// SAFE-LABEL: define dso_local float @test_float_post_inc(6// SAFE-SAME: ) #[[ATTR0:[0-9]+]] {7// SAFE-NEXT:  [[ENTRY:.*:]]8// SAFE-NEXT:    [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)9// SAFE-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr10// SAFE-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_float_post_inc.n to ptr), float 1.000000e+00 seq_cst, align 4, !amdgpu.no.fine.grained.memory [[META3:![0-9]+]], !amdgpu.no.remote.memory [[META3]]11// SAFE-NEXT:    ret float [[TMP0]]12//13// UNSAFE-LABEL: define dso_local float @test_float_post_inc(14// UNSAFE-SAME: ) #[[ATTR0:[0-9]+]] {15// UNSAFE-NEXT:  [[ENTRY:.*:]]16// UNSAFE-NEXT:    [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)17// UNSAFE-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr18// UNSAFE-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_float_post_inc.n to ptr), float 1.000000e+00 seq_cst, align 4, !amdgpu.no.fine.grained.memory [[META3:![0-9]+]], !amdgpu.no.remote.memory [[META3]], !amdgpu.ignore.denormal.mode [[META3]]19// UNSAFE-NEXT:    ret float [[TMP0]]20//21float test_float_post_inc()22{23    static _Atomic float n;24    return n++;25}26 27// CHECK-LABEL: define dso_local float @test_float_post_dc(28// CHECK-SAME: ) #[[ATTR0:[0-9]+]] {29// CHECK-NEXT:  [[ENTRY:.*:]]30// CHECK-NEXT:    [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)31// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr32// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_float_post_dc.n to ptr), float 1.000000e+00 seq_cst, align 4, !amdgpu.no.fine.grained.memory [[META3:![0-9]+]], !amdgpu.no.remote.memory [[META3]]33// CHECK-NEXT:    ret float [[TMP0]]34//35float test_float_post_dc()36{37    static _Atomic float n;38    return n--;39}40 41// CHECK-LABEL: define dso_local float @test_float_pre_dc(42// CHECK-SAME: ) #[[ATTR0]] {43// CHECK-NEXT:  [[ENTRY:.*:]]44// CHECK-NEXT:    [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)45// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr46// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_float_pre_dc.n to ptr), float 1.000000e+00 seq_cst, align 4, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]47// CHECK-NEXT:    [[TMP1:%.*]] = fsub float [[TMP0]], 1.000000e+0048// CHECK-NEXT:    ret float [[TMP1]]49//50float test_float_pre_dc()51{52    static _Atomic float n;53    return --n;54}55 56// SAFE-LABEL: define dso_local float @test_float_pre_inc(57// SAFE-SAME: ) #[[ATTR0]] {58// SAFE-NEXT:  [[ENTRY:.*:]]59// SAFE-NEXT:    [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)60// SAFE-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr61// SAFE-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_float_pre_inc.n to ptr), float 1.000000e+00 seq_cst, align 4, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]62// SAFE-NEXT:    [[TMP1:%.*]] = fadd float [[TMP0]], 1.000000e+0063// SAFE-NEXT:    ret float [[TMP1]]64//65// UNSAFE-LABEL: define dso_local float @test_float_pre_inc(66// UNSAFE-SAME: ) #[[ATTR0]] {67// UNSAFE-NEXT:  [[ENTRY:.*:]]68// UNSAFE-NEXT:    [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)69// UNSAFE-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr70// UNSAFE-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_float_pre_inc.n to ptr), float 1.000000e+00 seq_cst, align 4, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]], !amdgpu.ignore.denormal.mode [[META3]]71// UNSAFE-NEXT:    [[TMP1:%.*]] = fadd float [[TMP0]], 1.000000e+0072// UNSAFE-NEXT:    ret float [[TMP1]]73//74float test_float_pre_inc()75{76    static _Atomic float n;77    return ++n;78}79 80// CHECK-LABEL: define dso_local double @test_double_post_inc(81// CHECK-SAME: ) #[[ATTR0]] {82// CHECK-NEXT:  [[ENTRY:.*:]]83// CHECK-NEXT:    [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)84// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr85// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_post_inc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]86// CHECK-NEXT:    ret double [[TMP0]]87//88double test_double_post_inc()89{90    static _Atomic double n;91    return n++;92}93 94// CHECK-LABEL: define dso_local double @test_double_post_dc(95// CHECK-SAME: ) #[[ATTR0]] {96// CHECK-NEXT:  [[ENTRY:.*:]]97// CHECK-NEXT:    [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)98// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr99// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_post_dc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]100// CHECK-NEXT:    ret double [[TMP0]]101//102double test_double_post_dc()103{104    static _Atomic double n;105    return n--;106}107 108// CHECK-LABEL: define dso_local double @test_double_pre_dc(109// CHECK-SAME: ) #[[ATTR0]] {110// CHECK-NEXT:  [[ENTRY:.*:]]111// CHECK-NEXT:    [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)112// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr113// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test_double_pre_dc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]114// CHECK-NEXT:    [[TMP1:%.*]] = fsub double [[TMP0]], 1.000000e+00115// CHECK-NEXT:    ret double [[TMP1]]116//117double test_double_pre_dc()118{119    static _Atomic double n;120    return --n;121}122 123// CHECK-LABEL: define dso_local double @test_double_pre_inc(124// CHECK-SAME: ) #[[ATTR0]] {125// CHECK-NEXT:  [[ENTRY:.*:]]126// CHECK-NEXT:    [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)127// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr128// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test_double_pre_inc.n to ptr), double 1.000000e+00 seq_cst, align 8, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]129// CHECK-NEXT:    [[TMP1:%.*]] = fadd double [[TMP0]], 1.000000e+00130// CHECK-NEXT:    ret double [[TMP1]]131//132double test_double_pre_inc()133{134    static _Atomic double n;135    return ++n;136}137 138// CHECK-LABEL: define dso_local half @test__Float16_post_inc(139// CHECK-SAME: ) #[[ATTR0]] {140// CHECK-NEXT:  [[ENTRY:.*:]]141// CHECK-NEXT:    [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)142// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr143// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_post_inc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]144// CHECK-NEXT:    ret half [[TMP0]]145//146_Float16 test__Float16_post_inc()147{148    static _Atomic _Float16 n;149    return n++;150}151 152// CHECK-LABEL: define dso_local half @test__Float16_post_dc(153// CHECK-SAME: ) #[[ATTR0]] {154// CHECK-NEXT:  [[ENTRY:.*:]]155// CHECK-NEXT:    [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)156// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr157// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_post_dc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]158// CHECK-NEXT:    ret half [[TMP0]]159//160_Float16 test__Float16_post_dc()161{162    static _Atomic _Float16 n;163    return n--;164}165 166// CHECK-LABEL: define dso_local half @test__Float16_pre_dc(167// CHECK-SAME: ) #[[ATTR0]] {168// CHECK-NEXT:  [[ENTRY:.*:]]169// CHECK-NEXT:    [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)170// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr171// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fsub ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_dc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]172// CHECK-NEXT:    [[TMP1:%.*]] = fsub half [[TMP0]], 0xH3C00173// CHECK-NEXT:    ret half [[TMP1]]174//175_Float16 test__Float16_pre_dc()176{177    static _Atomic _Float16 n;178    return --n;179}180 181// CHECK-LABEL: define dso_local half @test__Float16_pre_inc(182// CHECK-SAME: ) #[[ATTR0]] {183// CHECK-NEXT:  [[ENTRY:.*:]]184// CHECK-NEXT:    [[RETVAL:%.*]] = alloca half, align 2, addrspace(5)185// CHECK-NEXT:    [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr186// CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw fadd ptr addrspacecast (ptr addrspace(1) @test__Float16_pre_inc.n to ptr), half 0xH3C00 seq_cst, align 2, !amdgpu.no.fine.grained.memory [[META3]], !amdgpu.no.remote.memory [[META3]]187// CHECK-NEXT:    [[TMP1:%.*]] = fadd half [[TMP0]], 0xH3C00188// CHECK-NEXT:    ret half [[TMP1]]189//190_Float16 test__Float16_pre_inc()191{192    static _Atomic _Float16 n;193    return ++n;194}195//.196// SAFE: [[META3]] = !{}197//.198// UNSAFE: [[META3]] = !{}199//.200