Index: llvm/lib/Target/AMDGPU/FLATInstructions.td =================================================================== --- llvm/lib/Target/AMDGPU/FLATInstructions.td +++ llvm/lib/Target/AMDGPU/FLATInstructions.td @@ -353,8 +353,6 @@ 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; @@ -368,7 +366,6 @@ let hasPostISelHook = 1; let has_vdst = 1; let glcValue = 1; - let dlcValue = 0; let sccbValue = 0; let IsAtomicNoRet = 0; let IsAtomicRet = 1; Index: llvm/test/MC/AMDGPU/gfx10_asm_flat.s =================================================================== --- llvm/test/MC/AMDGPU/gfx10_asm_flat.s +++ llvm/test/MC/AMDGPU/gfx10_asm_flat.s @@ -125,4 +125,200 @@ 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: llvm/test/MC/Disassembler/AMDGPU/flat_gfx10.txt =================================================================== --- llvm/test/MC/Disassembler/AMDGPU/flat_gfx10.txt +++ llvm/test/MC/Disassembler/AMDGPU/flat_gfx10.txt @@ -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