[AMDGPU][MC][GFX10] Enabled dlc for FLAT and GLOBAL atomics

Differential Revision: https://reviews.llvm.org/D109614
This commit is contained in:
Dmitry Preobrazhensky 2021-09-21 16:21:44 +03:00
parent 043733d677
commit b8e7f53208
3 changed files with 390 additions and 3 deletions

View 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;

View 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.
//===----------------------------------------------------------------------===//

View File

@ -73,3 +73,197 @@
# 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