104 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=gfx90a --pass-remarks=atomic-expand \2; RUN: %s -o - 2>&1 | FileCheck %s --check-prefix=GFX90A-CAS3 4; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at system memory scope5; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at agent memory scope6; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at workgroup memory scope7; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at wavefront memory scope8; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at singlethread memory scope9; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at one-as memory scope10; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at agent-one-as memory scope11; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at workgroup-one-as memory scope12; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at wavefront-one-as memory scope13; GFX90A-CAS: A compare and swap loop was generated for an atomic fadd operation at singlethread-one-as memory scope14 15; GFX90A-CAS-LABEL: atomic_add_cas:16; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc17; GFX90A-CAS: s_cbranch_execnz18define dso_local void @atomic_add_cas(ptr %p, float %q) {19entry:20 %ret = atomicrmw fadd ptr %p, float %q monotonic, align 421 ret void22}23 24; GFX90A-CAS-LABEL: atomic_add_cas_agent:25; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc26; GFX90A-CAS: s_cbranch_execnz27define dso_local void @atomic_add_cas_agent(ptr %p, float %q) {28entry:29 %ret = atomicrmw fadd ptr %p, float %q syncscope("agent") monotonic, align 430 ret void31}32 33; GFX90A-CAS-LABEL: atomic_add_cas_workgroup:34; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc35; GFX90A-CAS: s_cbranch_execnz36define dso_local void @atomic_add_cas_workgroup(ptr %p, float %q) {37entry:38 %ret = atomicrmw fadd ptr %p, float %q syncscope("workgroup") monotonic, align 439 ret void40}41 42; GFX90A-CAS-LABEL: atomic_add_cas_wavefront:43; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc44; GFX90A-CAS: s_cbranch_execnz45define dso_local void @atomic_add_cas_wavefront(ptr %p, float %q) {46entry:47 %ret = atomicrmw fadd ptr %p, float %q syncscope("wavefront") monotonic, align 448 ret void49}50 51; GFX90A-CAS-LABEL: atomic_add_cas_singlethread:52; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc53; GFX90A-CAS: s_cbranch_execnz54define dso_local void @atomic_add_cas_singlethread(ptr %p, float %q) {55entry:56 %ret = atomicrmw fadd ptr %p, float %q syncscope("singlethread") monotonic, align 457 ret void58}59 60; GFX90A-CAS-LABEL: atomic_add_cas_one_as:61; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc62; GFX90A-CAS: s_cbranch_execnz63define dso_local void @atomic_add_cas_one_as(ptr %p, float %q) {64entry:65 %ret = atomicrmw fadd ptr %p, float %q syncscope("one-as") monotonic, align 466 ret void67}68 69; GFX90A-CAS-LABEL: atomic_add_cas_agent_one_as:70; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc71; GFX90A-CAS: s_cbranch_execnz72define dso_local void @atomic_add_cas_agent_one_as(ptr %p, float %q) {73entry:74 %ret = atomicrmw fadd ptr %p, float %q syncscope("agent-one-as") monotonic, align 475 ret void76}77 78; GFX90A-CAS-LABEL: atomic_add_cas_workgroup_one_as:79; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc80; GFX90A-CAS: s_cbranch_execnz81define dso_local void @atomic_add_cas_workgroup_one_as(ptr %p, float %q) {82entry:83 %ret = atomicrmw fadd ptr %p, float %q syncscope("workgroup-one-as") monotonic, align 484 ret void85}86 87; GFX90A-CAS-LABEL: atomic_add_cas_wavefront_one_as:88; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc89; GFX90A-CAS: s_cbranch_execnz90define dso_local void @atomic_add_cas_wavefront_one_as(ptr %p, float %q) {91entry:92 %ret = atomicrmw fadd ptr %p, float %q syncscope("wavefront-one-as") monotonic, align 493 ret void94}95 96; GFX90A-CAS-LABEL: atomic_add_cas_singlethread_one_as:97; GFX90A-CAS: flat_atomic_cmpswap v3, v[0:1], v[4:5] glc98; GFX90A-CAS: s_cbranch_execnz99define dso_local void @atomic_add_cas_singlethread_one_as(ptr %p, float %q) {100entry:101 %ret = atomicrmw fadd ptr %p, float %q syncscope("singlethread-one-as") monotonic, align 4102 ret void103}104