@@ -8467,24 +8467,27 @@ for (const auto& item : atomics)
8467
8467
}}}}
8468
8468
8469
8469
8470
+ __glsl_version(430 )
8471
+ [ForceInline]
8472
+ [require(glsl_spirv, atomic_glsl)]
8473
+ __intrinsic_op($(kIROp_AtomicAdd ))
8474
+ $(item .name ) atomicAddWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8475
+
8470
8476
__glsl_version(430 )
8471
8477
[ForceInline]
8472
8478
[require(glsl_spirv, atomic_glsl)]
8473
8479
public $(item .name ) atomicAdd(inout $(item .name ) mem, $(item .name ) data)
8474
8480
{
8475
8481
typeRequireChecks_atomic_using_float1_tier< $(item .name )> ();
8476
8482
typeRequireChecks_atomic_using_add< $(item .name )> ();
8477
- __target_switch
8478
- {
8479
- case glsl: __intrinsic_asm " atomicAdd($0, $1)" ;
8480
- case spirv:
8481
- return spirv_asm
8482
- {
8483
- OpAtomic$(item .classType )Add$(item .suffix ) $$$(item .name ) result & mem Device UniformMemory $data
8484
- };
8485
- }
8483
+ return atomicAddWithOrder(mem, data, MemoryOrder::Relaxed);
8486
8484
}
8487
8485
8486
+ __glsl_version(430 )
8487
+ [ForceInline]
8488
+ [require(glsl_spirv, atomic_glsl)]
8489
+ __intrinsic_op($(kIROp_AtomicMin ))
8490
+ $(item .name ) atomicMinWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8488
8491
8489
8492
__glsl_version(430 )
8490
8493
[ForceInline]
@@ -8493,17 +8496,14 @@ public $(item.name) atomicMin(inout $(item.name) mem, $(item.name) data)
8493
8496
{
8494
8497
typeRequireChecks_atomic_using_float2_tier< $(item .name )> ();
8495
8498
typeRequireChecks_atomic_using_MinMax< $(item .name )> ();
8496
- __target_switch
8497
- {
8498
- case glsl: __intrinsic_asm " atomicMin($0, $1)" ;
8499
- case spirv:
8500
- return spirv_asm
8501
- {
8502
- OpAtomic$(item .subclassType )Min$(item .suffix ) $$$(item .name ) result & mem Device UniformMemory $data
8503
- };
8504
- }
8499
+ return atomicMinWithOrder(mem, data, MemoryOrder::Relaxed);
8505
8500
}
8506
8501
8502
+ __glsl_version(430 )
8503
+ [ForceInline]
8504
+ [require(glsl_spirv, atomic_glsl)]
8505
+ __intrinsic_op($(kIROp_AtomicMax ))
8506
+ $(item .name ) atomicMaxWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8507
8507
8508
8508
__glsl_version(430 )
8509
8509
[ForceInline]
@@ -8512,33 +8512,22 @@ public $(item.name) atomicMax(inout $(item.name) mem, $(item.name) data)
8512
8512
{
8513
8513
typeRequireChecks_atomic_using_float2_tier< $(item .name )> ();
8514
8514
typeRequireChecks_atomic_using_MinMax< $(item .name )> ();
8515
- __target_switch
8516
- {
8517
- case glsl: __intrinsic_asm " atomicMax($0, $1)" ;
8518
- case spirv:
8519
- return spirv_asm
8520
- {
8521
- OpAtomic$(item .subclassType )Max$(item .suffix ) $$$(item .name ) result & mem Device UniformMemory $data
8522
- };
8523
- }
8515
+ return atomicMaxWithOrder(mem, data, MemoryOrder::Relaxed);
8524
8516
}
8525
8517
8518
+ __glsl_version(430 )
8519
+ [ForceInline]
8520
+ [require(glsl_spirv, atomic_glsl)]
8521
+ __intrinsic_op($(kIROp_AtomicExchange ))
8522
+ $(item .name ) atomicExchangeWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8526
8523
8527
8524
__glsl_version(430 )
8528
8525
[ForceInline]
8529
8526
[require(glsl_spirv, atomic_glsl)]
8530
8527
public $(item .name ) atomicExchange(inout $(item .name ) mem, $(item .name ) data)
8531
8528
{
8532
8529
typeRequireChecks_atomic_using_float1_tier< $(item .name )> ();
8533
- __target_switch
8534
- {
8535
- case glsl: __intrinsic_asm " atomicExchange($0, $1)" ;
8536
- case spirv:
8537
- return spirv_asm
8538
- {
8539
- OpAtomicExchange $$$(item .name ) result & mem Device UniformMemory $data
8540
- };
8541
- }
8530
+ return atomicExchangeWithOrder(mem, data, MemoryOrder::Relaxed);
8542
8531
}
8543
8532
8544
8533
${{{{
@@ -8547,27 +8536,27 @@ if(item.isFloat)
8547
8536
}}}}
8548
8537
8549
8538
8539
+ __glsl_version(430 )
8540
+ [ForceInline]
8541
+ [require(glsl_spirv, atomic_glsl)]
8542
+ __intrinsic_op($(kIROp_AtomicAnd ))
8543
+ $(item .name ) atomicAndWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8544
+
8550
8545
__glsl_version(430 )
8551
8546
[ForceInline]
8552
8547
[require(glsl_spirv, atomic_glsl)]
8553
8548
public $(item .name ) atomicAnd(inout $(item .name ) mem, $(item .name ) data)
8554
8549
{
8555
8550
typeRequireChecks_atomic_using_float0_tier< $(item .name )> ();
8556
8551
typeRequireChecks_atomic_using_Logical_CAS< $(item .name )> ();
8557
- __target_switch
8558
- {
8559
- case glsl:
8560
- {
8561
- __intrinsic_asm " atomicAnd($0, $1)" ;
8562
- }
8563
- case spirv:
8564
- return spirv_asm
8565
- {
8566
- OpAtomicAnd $$$(item .name ) result & mem Device UniformMemory $data
8567
- };
8568
- }
8552
+ return atomicAndWithOrder(mem, data, MemoryOrder::Relaxed);
8569
8553
}
8570
8554
8555
+ __glsl_version(430 )
8556
+ [ForceInline]
8557
+ [require(glsl_spirv, atomic_glsl)]
8558
+ __intrinsic_op($(kIROp_AtomicOr ))
8559
+ $(item .name ) atomicOrWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8571
8560
8572
8561
__glsl_version(430 )
8573
8562
[ForceInline]
@@ -8576,36 +8565,31 @@ public $(item.name) atomicOr(inout $(item.name) mem, $(item.name) data)
8576
8565
{
8577
8566
typeRequireChecks_atomic_using_float0_tier< $(item .name )> ();
8578
8567
typeRequireChecks_atomic_using_Logical_CAS< $(item .name )> ();
8579
- __target_switch
8580
- {
8581
- case glsl: __intrinsic_asm " atomicOr($0, $1)" ;
8582
- case spirv:
8583
- return spirv_asm
8584
- {
8585
- OpAtomicOr $$$(item .name ) result & mem Device UniformMemory $data
8586
- };
8587
- }
8568
+ return atomicOrWithOrder(mem, data, MemoryOrder::Relaxed);
8588
8569
}
8589
8570
8590
8571
8572
+ __glsl_version(430 )
8573
+ [ForceInline]
8574
+ [require(glsl_spirv, atomic_glsl)]
8575
+ __intrinsic_op($(kIROp_AtomicXor ))
8576
+ $(item .name ) atomicXorWithOrder(inout $(item .name ) mem, $(item .name ) data, MemoryOrder order);
8577
+
8591
8578
__glsl_version(430 )
8592
8579
[ForceInline]
8593
8580
[require(glsl_spirv, atomic_glsl)]
8594
8581
public $(item .name ) atomicXor(inout $(item .name ) mem, $(item .name ) data)
8595
8582
{
8596
8583
typeRequireChecks_atomic_using_float0_tier< $(item .name )> ();
8597
8584
typeRequireChecks_atomic_using_Logical_CAS< $(item .name )> ();
8598
- __target_switch
8599
- {
8600
- case glsl: __intrinsic_asm " atomicXor($0, $1)" ;
8601
- case spirv:
8602
- return spirv_asm
8603
- {
8604
- OpAtomicXor $$$(item .name ) result & mem Device UniformMemory $data
8605
- };
8606
- }
8585
+ return atomicXorWithOrder(mem, data, MemoryOrder::Relaxed);
8607
8586
}
8608
8587
8588
+ __glsl_version(430 )
8589
+ [ForceInline]
8590
+ [require(glsl_spirv, atomic_glsl)]
8591
+ __intrinsic_op($(kIROp_AtomicCompareExchange ))
8592
+ $(item .name ) atomicCompSwapWithOrder(inout $(item .name ) mem, $(item .name ) compare, $(item .name ) data, MemoryOrder successOrder, MemoryOrder failOrder);
8609
8593
8610
8594
__glsl_version(430 )
8611
8595
[ForceInline]
@@ -8614,15 +8598,7 @@ public $(item.name) atomicCompSwap(inout $(item.name) mem, $(item.name) compare,
8614
8598
{
8615
8599
typeRequireChecks_atomic_using_float0_tier< $(item .name )> ();
8616
8600
typeRequireChecks_atomic_using_Logical_CAS< $(item .name )> ();
8617
- __target_switch
8618
- {
8619
- case glsl: __intrinsic_asm " atomicCompSwap($0, $1, $2)" ;
8620
- case spirv:
8621
- return spirv_asm
8622
- {
8623
- result:$$$(item .name ) = OpAtomicCompareExchange & mem Device None None $data $compare
8624
- };
8625
- }
8601
+ return atomicCompSwapWithOrder(mem, compare, data, MemoryOrder::Relaxed, MemoryOrder::Relaxed);
8626
8602
}
8627
8603
8628
8604
${{{{
0 commit comments