[AMDGPU][MC][GFX10] Enabled dlc for FLAT and GLOBAL atomics
authorDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>
Tue, 21 Sep 2021 13:21:44 +0000 (16:21 +0300)
committerDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>
Tue, 21 Sep 2021 13:23:20 +0000 (16:23 +0300)
Differential Revision: https://reviews.llvm.org/D109614

llvm/lib/Target/AMDGPU/FLATInstructions.td
llvm/test/MC/AMDGPU/gfx10_asm_flat.s
llvm/test/MC/Disassembler/AMDGPU/flat_gfx10.txt

index cc126d1..e132edb 100644 (file)
@@ -352,8 +352,6 @@ class FLAT_AtomicNoRet_Pseudo<string opName, dag outs, dag ins,
     let mayStore = 1;
     let has_glc  = 0;
     let glcValue = 0;
-    let has_dlc  = 0;
-    let dlcValue = 0;
     let has_vdst = 0;
     let has_sccb  = 1;
     let sccbValue = 0;
@@ -367,7 +365,6 @@ class FLAT_AtomicRet_Pseudo<string opName, dag outs, dag ins,
   let hasPostISelHook = 1;
   let has_vdst = 1;
   let glcValue = 1;
-  let dlcValue = 0;
   let sccbValue = 0;
   let IsAtomicNoRet = 0;
   let IsAtomicRet = 1;
index 10becc0..3883272 100644 (file)
@@ -125,4 +125,200 @@ flat_atomic_inc_x2 v[1:2], v[2:3]
 flat_atomic_dec_x2 v[1:2], v[2:3]
 // GFX10: encoding: [0x00,0x00,0x74,0xdd,0x01,0x02,0x7d,0x00]
 
+//===----------------------------------------------------------------------===//
+// ENC_FLAT: dlc support for atomics.
+//===----------------------------------------------------------------------===//
+
+flat_atomic_add v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xc8,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_add_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x48,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_and v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xe4,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_and_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x64,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_cmpswap v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0xc4,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_cmpswap_x2 v[1:2], v[2:5] dlc
+// GFX10: [0x00,0x10,0x44,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_dec v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xf4,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_dec_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x74,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_fcmpswap v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0xf8,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_fcmpswap_x2 v[1:2], v[2:5] dlc
+// GFX10: [0x00,0x10,0x78,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_fmax v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0x00,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_fmax_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x80,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_fmin v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xfc,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_fmin_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x7c,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_inc v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xf0,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_inc_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x70,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_or v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xe8,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_or_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x68,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_smax v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xdc,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_smax_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x5c,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_smin v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xd4,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_smin_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x54,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_sub v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xcc,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_sub_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x4c,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_swap v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xc0,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_swap_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x40,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_umax v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xe0,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_umax_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x60,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_umin v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xd8,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_umin_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x58,0xdd,0x01,0x02,0x7d,0x00]
+
+flat_atomic_xor v[1:2], v2 dlc
+// GFX10: [0x00,0x10,0xec,0xdc,0x01,0x02,0x7d,0x00]
+
+flat_atomic_xor_x2 v[1:2], v[2:3] dlc
+// GFX10: [0x00,0x10,0x6c,0xdd,0x01,0x02,0x7d,0x00]
+
+//===----------------------------------------------------------------------===//
+// ENC_FLAT_GLOBAL: dlc support for atomics.
+//===----------------------------------------------------------------------===//
+
+global_atomic_add v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xc8,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_add_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x48,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_and v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xe4,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_and_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x64,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_cmpswap v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0xc4,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_cmpswap_x2 v[1:2], v[2:5], off dlc
+// GFX10: [0x00,0x90,0x44,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_dec v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xf4,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_dec_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x74,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_fmax v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0x00,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_fmax_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x80,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_fmin v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xfc,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_fmin_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x7c,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_inc v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xf0,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_inc_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x70,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_or v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xe8,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_or_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x68,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_smax v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xdc,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_smax_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x5c,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_smin v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xd4,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_smin_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x54,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_sub v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xcc,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_sub_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x4c,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_swap v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xc0,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_swap_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x40,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_umax v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xe0,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_umax_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x60,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_umin v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xd8,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_umin_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x58,0xdd,0x01,0x02,0x7d,0x00]
+
+global_atomic_xor v[1:2], v2, off dlc
+// GFX10: [0x00,0x90,0xec,0xdc,0x01,0x02,0x7d,0x00]
+
+global_atomic_xor_x2 v[1:2], v[2:3], off dlc
+// GFX10: [0x00,0x90,0x6c,0xdd,0x01,0x02,0x7d,0x00]
+
+//===----------------------------------------------------------------------===//
 // Also see flat-gfx10.s, flat-global.s, flat-scratch-instructions.s.
+//===----------------------------------------------------------------------===//
index 6fc105f..779e39c 100644 (file)
 
 # CHECK: scratch_store_dword off, v2, s3 offset:-1 dlc ; encoding: [0xff,0x5f,0x70,0xdc,0x00,0x02,0x03,0x00]
 0xff,0x5f,0x70,0xdc,0x00,0x02,0x03,0x00
+
+#===------------------------------------------------------------------------===#
+# FLAT opcodes: dlc support for atomics
+#===------------------------------------------------------------------------===#
+
+# CHECK: flat_atomic_add v[1:2], v2 dlc ; encoding: [0x00,0x10,0xc8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xc8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_add_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x48,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x48,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_and v[1:2], v2 dlc ; encoding: [0x00,0x10,0xe4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xe4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_and_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x64,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x64,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_cmpswap v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0xc4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xc4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_cmpswap_x2 v[1:2], v[2:5] dlc ; encoding: [0x00,0x10,0x44,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x44,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_dec v[1:2], v2 dlc ; encoding: [0x00,0x10,0xf4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xf4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_dec_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x74,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x74,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_fcmpswap v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0xf8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xf8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_fcmpswap_x2 v[1:2], v[2:5] dlc ; encoding: [0x00,0x10,0x78,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x78,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_fmax v[1:2], v2 dlc ; encoding: [0x00,0x10,0x00,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x00,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_fmax_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x80,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x80,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_fmin v[1:2], v2 dlc ; encoding: [0x00,0x10,0xfc,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xfc,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_fmin_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x7c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x7c,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_inc v[1:2], v2 dlc ; encoding: [0x00,0x10,0xf0,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xf0,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_inc_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x70,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x70,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_or v[1:2], v2 dlc ; encoding: [0x00,0x10,0xe8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xe8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_or_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x68,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x68,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_smax v[1:2], v2 dlc ; encoding: [0x00,0x10,0xdc,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xdc,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_smax_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x5c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x5c,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_smin v[1:2], v2 dlc ; encoding: [0x00,0x10,0xd4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xd4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_smin_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x54,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x54,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_sub v[1:2], v2 dlc ; encoding: [0x00,0x10,0xcc,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xcc,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_sub_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x4c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x4c,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_swap v[1:2], v2 dlc ; encoding: [0x00,0x10,0xc0,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xc0,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_swap_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x40,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x40,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_umax v[1:2], v2 dlc ; encoding: [0x00,0x10,0xe0,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xe0,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_umax_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x60,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x60,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_umin v[1:2], v2 dlc ; encoding: [0x00,0x10,0xd8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xd8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_umin_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x58,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x58,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_xor v[1:2], v2 dlc ; encoding: [0x00,0x10,0xec,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x10,0xec,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: flat_atomic_xor_x2 v[1:2], v[2:3] dlc ; encoding: [0x00,0x10,0x6c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x10,0x6c,0xdd,0x01,0x02,0x7d,0x00
+
+#===------------------------------------------------------------------------===#
+# FLAT GLOBAL opcodes: dlc support for atomics
+#===------------------------------------------------------------------------===#
+
+# CHECK: global_atomic_add v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xc8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xc8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_add_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x48,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x48,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_and v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xe4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xe4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_and_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x64,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x64,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_cmpswap v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0xc4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xc4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_cmpswap_x2 v[1:2], v[2:5], off dlc ; encoding: [0x00,0x90,0x44,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x44,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_dec v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xf4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xf4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_dec_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x74,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x74,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_fmax v[1:2], v2, off dlc ; encoding: [0x00,0x90,0x00,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x00,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_fmax_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x80,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x80,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_fmin v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xfc,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xfc,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_fmin_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x7c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x7c,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_inc v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xf0,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xf0,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_inc_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x70,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x70,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_or v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xe8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xe8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_or_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x68,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x68,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_smax v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xdc,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xdc,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_smax_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x5c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x5c,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_smin v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xd4,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xd4,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_smin_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x54,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x54,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_sub v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xcc,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xcc,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_sub_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x4c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x4c,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_swap v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xc0,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xc0,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_swap_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x40,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x40,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_umax v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xe0,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xe0,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_umax_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x60,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x60,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_umin v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xd8,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xd8,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_umin_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x58,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x58,0xdd,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_xor v[1:2], v2, off dlc ; encoding: [0x00,0x90,0xec,0xdc,0x01,0x02,0x7d,0x00]
+0x00,0x90,0xec,0xdc,0x01,0x02,0x7d,0x00
+
+# CHECK: global_atomic_xor_x2 v[1:2], v[2:3], off dlc ; encoding: [0x00,0x90,0x6c,0xdd,0x01,0x02,0x7d,0x00]
+0x00,0x90,0x6c,0xdd,0x01,0x02,0x7d,0x00