1# RUN: llc %s -mtriple=loongarch64 -start-after=prologepilog -O0 -filetype=obj -o - \ 2# RUN: | extract-section .text \ 3# RUN: | FileCheck %s -check-prefix=CHECK-ENC 4# RUN: llc %s -mtriple=loongarch64 -start-after=prologepilog -O0 -filetype=asm -o - \ 5# RUN: | FileCheck %s -check-prefix=CHECK-ASM 6 7# ------------------------------------------------------------------------------------------------- 8# Encoding format: I15 9# ------------------------------------------------------------------------------------------------- 10# ---------------------------------------------------+--------------------------------------------- 11# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 12# ---------------------------------------------------+--------------------------------------------- 13# opcode | imm15 14# ---------------------------------------------------+--------------------------------------------- 15 16--- 17# CHECK-LABEL: test_DBAR: 18# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19# CHECK-ASM: dbar 0 20name: test_DBAR 21body: | 22 bb.0: 23 DBAR 0 24... 25--- 26# CHECK-LABEL: test_IBAR: 27# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28# CHECK-ASM: ibar 0 29name: test_IBAR 30body: | 31 bb.0: 32 IBAR 0 33... 34--- 35# CHECK-LABEL: test_SYSCALL: 36# CHECK-ENC: 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 37# CHECK-ASM: syscall 100 38name: test_SYSCALL 39body: | 40 bb.0: 41 SYSCALL 100 42... 43--- 44# CHECK-LABEL: test_BREAK: 45# CHECK-ENC: 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 46# CHECK-ASM: break 199 47name: test_BREAK 48body: | 49 bb.0: 50 BREAK 199 51... 52 53# ------------------------------------------------------------------------------------------------- 54# Encoding format: I26 55# ------------------------------------------------------------------------------------------------- 56# ------------------+-----------------------------------------------+------------------------------ 57# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 58# ------------------+-----------------------------------------------+------------------------------ 59# opcode | imm26{15-0} | imm26{25-16} 60# ------------------+-----------------------------------------------+------------------------------ 61 62--- 63# CHECK-LABEL: test_B: 64# CHECK-ENC: 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 65# CHECK-ASM: b 80 66name: test_B 67body: | 68 bb.0: 69 B 80 70... 71--- 72# CHECK-LABEL: test_BL: 73# CHECK-ENC: 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 74# CHECK-ASM: bl 136 75name: test_BL 76body: | 77 bb.0: 78 BL 136 79... 80 81# -------------------------------------------------------------------------------------------------------- 82# Encoding format: BSTR_W 83# -------------------------------------------------------------------------------------------------------- 84# ---------------------------------+--------------+---------+--------------+--------------+--------------- 85# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 86# ---------------------------------+--------------+---------+--------------+--------------+--------------- 87# opcode{11-1} | msb |opcode{0}| lsb | rj | rd 88# ---------------------------------+--------------+---------+--------------+--------------+--------------- 89 90--- 91# CHECK-LABEL: test_BSTRINS_W: 92# CHECK-ENC: 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 93# CHECK-ASM: bstrins.w $a0, $a1, 7, 2 94name: test_BSTRINS_W 95body: | 96 bb.0: 97 $r4 = BSTRINS_W $r4, $r5, 7, 2 98... 99--- 100# CHECK-LABEL: test_BSTRPICK_W: 101# CHECK-ENC: 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 102# CHECK-ASM: bstrpick.w $a0, $a1, 10, 4 103name: test_BSTRPICK_W 104body: | 105 bb.0: 106 $r4 = BSTRPICK_W $r5, 10, 4 107... 108 109# ------------------------------------------------------------------------------------------------- 110# Encoding format: BSTR_D 111# ------------------------------------------------------------------------------------------------- 112# ------------------------------+-----------------+-----------------+--------------+--------------- 113# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 114# ------------------------------+-----------------+-----------------+--------------+--------------- 115# opcode | msb | lsb | rj | rd 116# ------------------------------+-----------------+-----------------+--------------+--------------- 117 118--- 119# CHECK-LABEL: test_BSTRINS_D: 120# CHECK-ENC: 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 121# CHECK-ASM: bstrins.d $a0, $a1, 7, 2 122name: test_BSTRINS_D 123body: | 124 bb.0: 125 $r4 = BSTRINS_D $r4, $r5, 7, 2 126... 127--- 128# CHECK-LABEL: test_BSTRPICK_D: 129# CHECK-ENC: 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 130# CHECK-ASM: bstrpick.d $a0, $a1, 39, 22 131name: test_BSTRPICK_D 132body: | 133 bb.0: 134 $r4 = BSTRPICK_D $r5, 39, 22 135... 136 137# ------------------------------------------------------------------------------------------------- 138# Encoding format: ASRT 139# ------------------------------------------------------------------------------------------------- 140# ---------------------------------------------------+--------------+--------------+--------------- 141# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 142# ---------------------------------------------------+--------------+--------------+--------------- 143# opcode | rk | rj | 0x0 144# ---------------------------------------------------+--------------+--------------+--------------- 145 146--- 147# CHECK-LABEL: test_ASRTLE_D: 148# CHECK-ENC: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 149# CHECK-ASM: asrtle.d $a0, $a1 150name: test_ASRTLE_D 151body: | 152 bb.0: 153 ASRTLE_D $r4, $r5 154... 155--- 156# CHECK-LABEL: test_ASRTGT_D: 157# CHECK-ENC: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 158# CHECK-ASM: asrtgt.d $a0, $a1 159name: test_ASRTGT_D 160body: | 161 bb.0: 162 ASRTGT_D $r4, $r5 163... 164 165# ------------------------------------------------------------------------------------------------- 166# Encoding format: PRELD 167# ------------------------------------------------------------------------------------------------- 168# ------------------------------+-----------------------------------+--------------+--------------- 169# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 170# ------------------------------+-----------------------------------+--------------+--------------- 171# opcode | imm12 | rj | imm5 172# ------------------------------+-----------------------------------+--------------+--------------- 173 174--- 175# CHECK-LABEL: test_PRELD: 176# CHECK-ENC: 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 177# CHECK-ASM: preld 15, $a0, 21 178name: test_PRELD 179body: | 180 bb.0: 181 PRELD 15, $r4, 21 182... 183 184# ------------------------------------------------------------------------------------------------- 185# Encoding format: PRELDX 186# ------------------------------------------------------------------------------------------------- 187# ---------------------------------------------------+--------------+--------------+--------------- 188# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 189# ---------------------------------------------------+--------------+--------------+--------------- 190# opcode | rk | rj | imm5 191# ---------------------------------------------------+--------------+--------------+--------------- 192 193--- 194# CHECK-LABEL: test_PRELDX: 195# CHECK-ENC: 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 196# CHECK-ASM: preldx 11, $a0, $a1 197name: test_PRELDX 198body: | 199 bb.0: 200 PRELDX 11, $r4, $r5 201