288 lines · plain
1# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1200 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefixes=GFX12,GFX1200 %s2# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1200 -mattr=+WavefrontSize64 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefixes=GFX1200 %s3# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1250 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefixes=GFX12,GFX1250 %s4 5# GFX12: s_addk_co_i32 exec_hi, 0x1234 ; encoding: [0x34,0x12,0xff,0xb7]60x34,0x12,0xff,0xb77 8# GFX12: s_addk_co_i32 exec_lo, 0x1234 ; encoding: [0x34,0x12,0xfe,0xb7]90x34,0x12,0xfe,0xb710 11# GFX12: s_addk_co_i32 m0, 0x1234 ; encoding: [0x34,0x12,0xfd,0xb7]120x34,0x12,0xfd,0xb713 14# GFX12: s_addk_co_i32 s0, 0x1234 ; encoding: [0x34,0x12,0x80,0xb7]150x34,0x12,0x80,0xb716 17# GFX12: s_addk_co_i32 s0, 0xc1d1 ; encoding: [0xd1,0xc1,0x80,0xb7]180xd1,0xc1,0x80,0xb719 20# GFX12: s_addk_co_i32 s105, 0x1234 ; encoding: [0x34,0x12,0xe9,0xb7]210x34,0x12,0xe9,0xb722 23# GFX12: s_addk_co_i32 vcc_hi, 0x1234 ; encoding: [0x34,0x12,0xeb,0xb7]240x34,0x12,0xeb,0xb725 26# GFX12: s_addk_co_i32 vcc_lo, 0x1234 ; encoding: [0x34,0x12,0xea,0xb7]270x34,0x12,0xea,0xb728 29# GFX1200: s_call_b64 exec, 4660 ; encoding: [0x34,0x12,0x7e,0xba]30# GFX1250: s_call_i64 exec, 4660 ; encoding: [0x34,0x12,0x7e,0xba]310x34,0x12,0x7e,0xba32 33# GFX1200: s_call_b64 s[0:1], 4660 ; encoding: [0x34,0x12,0x00,0xba]34# GFX1250: s_call_i64 s[0:1], 4660 ; encoding: [0x34,0x12,0x00,0xba]350x34,0x12,0x00,0xba36 37# GFX1200: s_call_b64 s[104:105], 4660 ; encoding: [0x34,0x12,0x68,0xba]38# GFX1250: s_call_i64 s[104:105], 4660 ; encoding: [0x34,0x12,0x68,0xba]390x34,0x12,0x68,0xba40 41# GFX1200: s_call_b64 vcc, 4660 ; encoding: [0x34,0x12,0x6a,0xba]42# GFX1250: s_call_i64 vcc, 4660 ; encoding: [0x34,0x12,0x6a,0xba]430x34,0x12,0x6a,0xba44 45# GFX1200: s_call_b64 null, 4660 ; encoding: [0x34,0x12,0x7c,0xba]46# GFX1250: s_call_i64 null, 4660 ; encoding: [0x34,0x12,0x7c,0xba]470x34,0x12,0x7c,0xba48 49# GFX12: s_cmovk_i32 exec_hi, 0x1234 ; encoding: [0x34,0x12,0x7f,0xb1]500x34,0x12,0x7f,0xb151 52# GFX12: s_cmovk_i32 exec_lo, 0x1234 ; encoding: [0x34,0x12,0x7e,0xb1]530x34,0x12,0x7e,0xb154 55# GFX12: s_cmovk_i32 m0, 0x1234 ; encoding: [0x34,0x12,0x7d,0xb1]560x34,0x12,0x7d,0xb157 58# GFX12: s_cmovk_i32 s0, 0x1234 ; encoding: [0x34,0x12,0x00,0xb1]590x34,0x12,0x00,0xb160 61# GFX12: s_cmovk_i32 s0, 0xc1d1 ; encoding: [0xd1,0xc1,0x00,0xb1]620xd1,0xc1,0x00,0xb163 64# GFX12: s_cmovk_i32 s105, 0x1234 ; encoding: [0x34,0x12,0x69,0xb1]650x34,0x12,0x69,0xb166 67# GFX12: s_cmovk_i32 vcc_hi, 0x1234 ; encoding: [0x34,0x12,0x6b,0xb1]680x34,0x12,0x6b,0xb169 70# GFX12: s_cmovk_i32 vcc_lo, 0x1234 ; encoding: [0x34,0x12,0x6a,0xb1]710x34,0x12,0x6a,0xb172 73# GFX12: s_getreg_b32 exec_hi, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0xff,0xb8]740x34,0x12,0xff,0xb875 76# GFX12: s_getreg_b32 exec_lo, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0xfe,0xb8]770x34,0x12,0xfe,0xb878 79# GFX12: s_getreg_b32 m0, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0xfd,0xb8]800x34,0x12,0xfd,0xb881 82# GFX12: s_getreg_b32 s0, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0x80,0xb8]830x34,0x12,0x80,0xb884 85# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_EXCP_FLAG_PRIV, 7, 25) ; encoding: [0xd1,0xc1,0x80,0xb8]860xd1,0xc1,0x80,0xb887 88# GFX12: s_getreg_b32 s105, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0xe9,0xb8]890x34,0x12,0xe9,0xb890 91# GFX12: s_getreg_b32 vcc_hi, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0xeb,0xb8]920x34,0x12,0xeb,0xb893 94# GFX12: s_getreg_b32 vcc_lo, hwreg(52, 8, 3) ; encoding: [0x34,0x12,0xea,0xb8]950x34,0x12,0xea,0xb896 97# GFX12: s_movk_i32 exec_hi, 0x1234 ; encoding: [0x34,0x12,0x7f,0xb0]980x34,0x12,0x7f,0xb099 100# GFX12: s_movk_i32 exec_lo, 0x1234 ; encoding: [0x34,0x12,0x7e,0xb0]1010x34,0x12,0x7e,0xb0102 103# GFX12: s_movk_i32 m0, 0x1234 ; encoding: [0x34,0x12,0x7d,0xb0]1040x34,0x12,0x7d,0xb0105 106# GFX12: s_movk_i32 s0, 0x1234 ; encoding: [0x34,0x12,0x00,0xb0]1070x34,0x12,0x00,0xb0108 109# GFX12: s_movk_i32 s0, 0xc1d1 ; encoding: [0xd1,0xc1,0x00,0xb0]1100xd1,0xc1,0x00,0xb0111 112# GFX12: s_movk_i32 s105, 0x1234 ; encoding: [0x34,0x12,0x69,0xb0]1130x34,0x12,0x69,0xb0114 115# GFX12: s_movk_i32 vcc_hi, 0x1234 ; encoding: [0x34,0x12,0x6b,0xb0]1160x34,0x12,0x6b,0xb0117 118# GFX12: s_movk_i32 vcc_lo, 0x1234 ; encoding: [0x34,0x12,0x6a,0xb0]1190x34,0x12,0x6a,0xb0120 121# GFX12: s_mulk_i32 exec_hi, 0x1234 ; encoding: [0x34,0x12,0x7f,0xb8]1220x34,0x12,0x7f,0xb8123 124# GFX12: s_mulk_i32 exec_lo, 0x1234 ; encoding: [0x34,0x12,0x7e,0xb8]1250x34,0x12,0x7e,0xb8126 127# GFX12: s_mulk_i32 m0, 0x1234 ; encoding: [0x34,0x12,0x7d,0xb8]1280x34,0x12,0x7d,0xb8129 130# GFX12: s_mulk_i32 s0, 0x1234 ; encoding: [0x34,0x12,0x00,0xb8]1310x34,0x12,0x00,0xb8132 133# GFX12: s_mulk_i32 s0, 0xc1d1 ; encoding: [0xd1,0xc1,0x00,0xb8]1340xd1,0xc1,0x00,0xb8135 136# GFX12: s_mulk_i32 s105, 0x1234 ; encoding: [0x34,0x12,0x69,0xb8]1370x34,0x12,0x69,0xb8138 139# GFX12: s_mulk_i32 vcc_hi, 0x1234 ; encoding: [0x34,0x12,0x6b,0xb8]1400x34,0x12,0x6b,0xb8141 142# GFX12: s_mulk_i32 vcc_lo, 0x1234 ; encoding: [0x34,0x12,0x6a,0xb8]1430x34,0x12,0x6a,0xb8144 145# GFX12: s_setreg_b32 hwreg(52, 8, 3), exec_hi ; encoding: [0x34,0x12,0x7f,0xb9]1460x34,0x12,0x7f,0xb9147 148# GFX12: s_setreg_b32 hwreg(52, 8, 3), exec_lo ; encoding: [0x34,0x12,0x7e,0xb9]1490x34,0x12,0x7e,0xb9150 151# GFX12: s_setreg_b32 hwreg(52, 8, 3), m0 ; encoding: [0x34,0x12,0x7d,0xb9]1520x34,0x12,0x7d,0xb9153 154# GFX12: s_setreg_b32 hwreg(52, 8, 3), s0 ; encoding: [0x34,0x12,0x00,0xb9]1550x34,0x12,0x00,0xb9156 157# GFX12: s_setreg_b32 hwreg(52, 8, 3), s105 ; encoding: [0x34,0x12,0x69,0xb9]1580x34,0x12,0x69,0xb9159 160# GFX12: s_setreg_b32 hwreg(52, 8, 3), vcc_hi ; encoding: [0x34,0x12,0x6b,0xb9]1610x34,0x12,0x6b,0xb9162 163# GFX12: s_setreg_b32 hwreg(52, 8, 3), vcc_lo ; encoding: [0x34,0x12,0x6a,0xb9]1640x34,0x12,0x6a,0xb9165 166# GFX12: s_setreg_b32 hwreg(HW_REG_WAVE_EXCP_FLAG_PRIV, 7, 25), s0 ; encoding: [0xd1,0xc1,0x00,0xb9]1670xd1,0xc1,0x00,0xb9168 169# GFX12: s_version 0x1234 ; encoding: [0x34,0x12,0x80,0xb0]1700x34,0x12,0x80,0xb0171 172# GFX12: s_version 0xc1d1 ; encoding: [0xd1,0xc1,0x80,0xb0]1730xd1,0xc1,0x80,0xb0174 175# GFX12: s_version UC_VERSION_GFX12 ; encoding: [0x09,0x00,0x80,0xb0]1760x09,0x00,0x80,0xb0177 178# GFX12: s_version UC_VERSION_GFX12|UC_VERSION_W32_BIT ; encoding: [0x09,0x40,0x80,0xb0]1790x09,0x40,0x80,0xb0180 181# GFX12: s_version UC_VERSION_GFX12|UC_VERSION_W64_BIT ; encoding: [0x09,0x20,0x80,0xb0]1820x09,0x20,0x80,0xb0183 184# GFX12: s_version UC_VERSION_GFX12|UC_VERSION_MDP_BIT ; encoding: [0x09,0x80,0x80,0xb0]1850x09,0x80,0x80,0xb0186 187# GFX12: s_version ((128|UC_VERSION_W64_BIT)|UC_VERSION_W32_BIT)|UC_VERSION_MDP_BIT ; encoding: [0x80,0xe0,0x80,0xb0]1880x80,0xe0,0x80,0xb0189 190# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE), 0xaf123456 ; encoding: [0x01,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]1910x01,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf192 193# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 31, 1), 0xaf123456 ; encoding: [0xc1,0x07,0x80,0xb9,0x56,0x34,0x12,0xaf]1940xc1,0x07,0x80,0xb9,0x56,0x34,0x12,0xaf195 196# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_STATUS), 0xaf123456 ; encoding: [0x02,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]1970x02,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf198 199# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_GPR_ALLOC), 0xaf123456 ; encoding: [0x05,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]2000x05,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf201 202# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_LDS_ALLOC), 0xaf123456 ; encoding: [0x06,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]2030x06,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf204 205# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_IB_STS), 0xaf123456 ; encoding: [0x07,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]2060x07,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf207 208# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_HW_ID1), 0xaf123456 ; encoding: [0x17,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]2090x17,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf210 211# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_HW_ID2), 0xaf123456 ; encoding: [0x18,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf]2120x18,0xf8,0x80,0xb9,0x56,0x34,0x12,0xaf213 214# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_MODE) ; encoding: [0x01,0xf8,0x80,0xb8]2150x01,0xf8,0x80,0xb8216 217# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_STATUS) ; encoding: [0x02,0xf8,0x80,0xb8]2180x02,0xf8,0x80,0xb8219 220# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_STATE_PRIV) ; encoding: [0x04,0xf8,0x80,0xb8]2210x04,0xf8,0x80,0xb8222 223# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_GPR_ALLOC) ; encoding: [0x05,0xf8,0x80,0xb8]2240x05,0xf8,0x80,0xb8225 226# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_LDS_ALLOC) ; encoding: [0x06,0xf8,0x80,0xb8]2270x06,0xf8,0x80,0xb8228 229# GFX12: s_getreg_b32 s0, hwreg(HW_REG_IB_STS) ; encoding: [0x07,0xf8,0x80,0xb8]2300x07,0xf8,0x80,0xb8231 232# GFX12: s_getreg_b32 s0, hwreg(HW_REG_PERF_SNAPSHOT_DATA) ; encoding: [0x0a,0xf8,0x80,0xb8]2330x0a,0xf8,0x80,0xb8234 235# GFX12: s_getreg_b32 s0, hwreg(HW_REG_PERF_SNAPSHOT_PC_LO) ; encoding: [0x0b,0xf8,0x80,0xb8]2360x0b,0xf8,0x80,0xb8237 238# GFX12: s_getreg_b32 s0, hwreg(HW_REG_PERF_SNAPSHOT_PC_HI) ; encoding: [0x0c,0xf8,0x80,0xb8]2390x0c,0xf8,0x80,0xb8240 241# GFX12: s_getreg_b32 s0, hwreg(HW_REG_PERF_SNAPSHOT_DATA1) ; encoding: [0x0f,0xf8,0x80,0xb8]2420x0f,0xf8,0x80,0xb8243 244# GFX12: s_getreg_b32 s0, hwreg(HW_REG_PERF_SNAPSHOT_DATA2) ; encoding: [0x10,0xf8,0x80,0xb8]2450x10,0xf8,0x80,0xb8246 247# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_EXCP_FLAG_PRIV) ; encoding: [0x11,0xf8,0x80,0xb8]2480x11,0xf8,0x80,0xb8249 250# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_EXCP_FLAG_USER) ; encoding: [0x12,0xf8,0x80,0xb8]2510x12,0xf8,0x80,0xb8252 253# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_TRAP_CTRL) ; encoding: [0x13,0xf8,0x80,0xb8]2540x13,0xf8,0x80,0xb8255 256# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_SCRATCH_BASE_LO) ; encoding: [0x14,0xf8,0x80,0xb8]2570x14,0xf8,0x80,0xb8258 259# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_SCRATCH_BASE_HI) ; encoding: [0x15,0xf8,0x80,0xb8]2600x15,0xf8,0x80,0xb8261 262# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_HW_ID1) ; encoding: [0x17,0xf8,0x80,0xb8]2630x17,0xf8,0x80,0xb8264 265# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_HW_ID2) ; encoding: [0x18,0xf8,0x80,0xb8]2660x18,0xf8,0x80,0xb8267 268# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_DVGPR_ALLOC_LO) ; encoding: [0x1f,0xf8,0x80,0xb8]2690x1f,0xf8,0x80,0xb8270 271# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_DVGPR_ALLOC_HI) ; encoding: [0x20,0xf8,0x80,0xb8]2720x20,0xf8,0x80,0xb8273 274# GFX12: s_getreg_b32 s0, hwreg(HW_REG_SHADER_CYCLES_LO) ; encoding: [0x1d,0xf8,0x80,0xb8]2750x1d,0xf8,0x80,0xb8276 277# GFX12: s_getreg_b32 s0, hwreg(HW_REG_SHADER_CYCLES_HI) ; encoding: [0x1e,0xf8,0x80,0xb8]2780x1e,0xf8,0x80,0xb8279 280# GFX12: s_getreg_b32 s0, hwreg(HW_REG_WAVE_SCHED_MODE) ; encoding: [0x1a,0xf8,0x80,0xb8]2810x1a,0xf8,0x80,0xb8282 283# GFX12: s_setreg_b32 hwreg(HW_REG_WAVE_SCHED_MODE, 0, 2), s2 ; encoding: [0x1a,0x08,0x02,0xb9]2840x1a,0x08,0x02,0xb9285 286# GFX12: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_SCHED_MODE), 2 ; encoding: [0x1a,0xf8,0x80,0xb9,0x02,0x00,0x00,0x00]2870x1a,0xf8,0x80,0xb9,0x02,0x00,0x00,0x00288