Index: lib/Target/AMDGPU/DSInstructions.td =================================================================== --- lib/Target/AMDGPU/DSInstructions.td +++ lib/Target/AMDGPU/DSInstructions.td @@ -219,6 +219,24 @@ let gdsValue = 1; } +class DS_VOID : DS_Pseudo { + let mayLoad = 0; + let mayStore = 0; + let hasSideEffects = 1; + let UseNamedOperandTable = 0; + let AsmMatchConverter = ""; + + let has_vdst = 0; + let has_addr = 0; + let has_data0 = 0; + let has_data1 = 0; + let has_offset = 0; + let has_offset0 = 0; + let has_offset1 = 0; + let has_gds = 0; +} + class DS_1A1D_PERMUTE : DS_Pseudo; } // End mayLoad = 0 +def DS_NOP : DS_VOID<"ds_nop">; } // let SubtargetPredicate = isCIVI @@ -634,6 +652,7 @@ def DS_CMPST_F32_si : DS_Real_si<0x11, DS_CMPST_F32>; def DS_MIN_F32_si : DS_Real_si<0x12, DS_MIN_F32>; def DS_MAX_F32_si : DS_Real_si<0x13, DS_MAX_F32>; +def DS_NOP_si : DS_Real_si<0x14, DS_NOP>; def DS_GWS_INIT_si : DS_Real_si<0x19, DS_GWS_INIT>; def DS_GWS_SEMA_V_si : DS_Real_si<0x1a, DS_GWS_SEMA_V>; def DS_GWS_SEMA_BR_si : DS_Real_si<0x1b, DS_GWS_SEMA_BR>; @@ -802,6 +821,7 @@ def DS_CMPST_F32_vi : DS_Real_vi<0x11, DS_CMPST_F32>; def DS_MIN_F32_vi : DS_Real_vi<0x12, DS_MIN_F32>; def DS_MAX_F32_vi : DS_Real_vi<0x13, DS_MAX_F32>; +def DS_NOP_vi : DS_Real_vi<0x14, DS_NOP>; def DS_ADD_F32_vi : DS_Real_vi<0x15, DS_ADD_F32>; def DS_GWS_INIT_vi : DS_Real_vi<0x19, DS_GWS_INIT>; def DS_GWS_SEMA_V_vi : DS_Real_vi<0x1a, DS_GWS_SEMA_V>; Index: test/MC/AMDGPU/ds.s =================================================================== --- test/MC/AMDGPU/ds.s +++ test/MC/AMDGPU/ds.s @@ -477,3 +477,8 @@ // NOSI: error: instruction not supported on this GPU // CI: ds_write_b128 v2, v[4:7] ; encoding: [0x00,0x00,0x7c,0xdb,0x02,0x04,0x00,0x00] // VI: ds_write_b128 v2, v[4:7] ; encoding: [0x00,0x00,0xbe,0xd9,0x02,0x04,0x00,0x00] + +ds_nop +// NOSI: error: instruction not supported on this GPU +// CI: ds_nop ; encoding: [0x00,0x00,0x50,0xd8,0x00,0x00,0x00,0x00] +// VI: ds_nop ; encoding: [0x00,0x00,0x28,0xd8,0x00,0x00,0x00,0x00]