// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip -split-input-file %s | FileCheck %s spirv.module Logical GLSL450 requires #spirv.vce { // CHECK-LABEL: @test_int_atomics spirv.func @test_int_atomics(%ptr: !spirv.ptr, %value: i32, %comparator: i32) -> i32 "None" { // CHECK: spirv.AtomicCompareExchangeWeak %{{.*}}, %{{.*}}, %{{.*}} : !spirv.ptr %0 = spirv.AtomicCompareExchangeWeak %ptr, %value, %comparator: !spirv.ptr // CHECK: spirv.AtomicAnd %{{.*}}, %{{.*}} : !spirv.ptr %1 = spirv.AtomicAnd %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicIAdd %{{.*}}, %{{.*}} : !spirv.ptr %2 = spirv.AtomicIAdd %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicIDecrement %{{.*}} : !spirv.ptr %3 = spirv.AtomicIDecrement %ptr : !spirv.ptr // CHECK: spirv.AtomicIIncrement %{{.*}} : !spirv.ptr %4 = spirv.AtomicIIncrement %ptr : !spirv.ptr // CHECK: spirv.AtomicISub %{{.*}}, %{{.*}} : !spirv.ptr %5 = spirv.AtomicISub %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicOr %{{.*}}, %{{.*}} : !spirv.ptr %6 = spirv.AtomicOr %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicSMax %{{.*}}, %{{.*}} : !spirv.ptr %7 = spirv.AtomicSMax %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicSMin %{{.*}}, %{{.*}} : !spirv.ptr %8 = spirv.AtomicSMin %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicUMax %{{.*}}, %{{.*}} : !spirv.ptr %9 = spirv.AtomicUMax %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicUMin %{{.*}}, %{{.*}} : !spirv.ptr %10 = spirv.AtomicUMin %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicXor %{{.*}}, %{{.*}} : !spirv.ptr %11 = spirv.AtomicXor %ptr, %value : !spirv.ptr // CHECK: spirv.AtomicCompareExchange %{{.*}}, %{{.*}}, %{{.*}} : !spirv.ptr %12 = spirv.AtomicCompareExchange %ptr, %value, %comparator: !spirv.ptr // CHECK: spirv.AtomicExchange %{{.*}}, %{{.*}} : !spirv.ptr %13 = spirv.AtomicExchange %ptr, %value: !spirv.ptr spirv.ReturnValue %0: i32 } // CHECK-LABEL: @test_float_atomics spirv.func @test_float_atomics(%ptr: !spirv.ptr, %value: f32) -> f32 "None" { // CHECK: spirv.EXT.AtomicFAdd %{{.*}}, %{{.*}} : !spirv.ptr %0 = spirv.EXT.AtomicFAdd %ptr, %value : !spirv.ptr spirv.ReturnValue %0: f32 } }