blob: 56793c583904e09bc27b7a7b9d9dc35d4e54531f [file] [log] [blame]
# RUN: llc %s -mtriple=loongarch64 -start-after=prologepilog -O0 -filetype=obj -o - \
# RUN: | extract-section .text \
# RUN: | FileCheck %s -check-prefix=CHECK-ENC
# RUN: llc %s -mtriple=loongarch64 -start-after=prologepilog -O0 -filetype=asm -o - \
# RUN: | FileCheck %s -check-prefix=CHECK-ASM
# -------------------------------------------------------------------------------------------------
# Encoding format: I15
# -------------------------------------------------------------------------------------------------
# ---------------------------------------------------+---------------------------------------------
# 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
# ---------------------------------------------------+---------------------------------------------
# opcode | imm15
# ---------------------------------------------------+---------------------------------------------
---
# CHECK-LABEL: test_DBAR:
# 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
# CHECK-ASM: dbar 0
name: test_DBAR
body: |
bb.0:
DBAR 0
...
---
# CHECK-LABEL: test_IBAR:
# 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
# CHECK-ASM: ibar 0
name: test_IBAR
body: |
bb.0:
IBAR 0
...
---
# CHECK-LABEL: test_SYSCALL:
# 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
# CHECK-ASM: syscall 100
name: test_SYSCALL
body: |
bb.0:
SYSCALL 100
...
---
# CHECK-LABEL: test_BREAK:
# 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
# CHECK-ASM: break 199
name: test_BREAK
body: |
bb.0:
BREAK 199
...
# -------------------------------------------------------------------------------------------------
# Encoding format: I26
# -------------------------------------------------------------------------------------------------
# ------------------+-----------------------------------------------+------------------------------
# 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
# ------------------+-----------------------------------------------+------------------------------
# opcode | imm26{15-0} | imm26{25-16}
# ------------------+-----------------------------------------------+------------------------------
---
# CHECK-LABEL: test_B:
# 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
# CHECK-ASM: b 80
name: test_B
body: |
bb.0:
B 80
...
---
# CHECK-LABEL: test_BL:
# 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
# CHECK-ASM: bl 136
name: test_BL
body: |
bb.0:
BL 136
...
# --------------------------------------------------------------------------------------------------------
# Encoding format: BSTR_W
# --------------------------------------------------------------------------------------------------------
# ---------------------------------+--------------+---------+--------------+--------------+---------------
# 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
# ---------------------------------+--------------+---------+--------------+--------------+---------------
# opcode{11-1} | msb |opcode{0}| lsb | rj | rd
# ---------------------------------+--------------+---------+--------------+--------------+---------------
---
# CHECK-LABEL: test_BSTRINS_W:
# 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
# CHECK-ASM: bstrins.w $a0, $a1, 7, 2
name: test_BSTRINS_W
body: |
bb.0:
$r4 = BSTRINS_W $r4, $r5, 7, 2
...
---
# CHECK-LABEL: test_BSTRPICK_W:
# 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
# CHECK-ASM: bstrpick.w $a0, $a1, 10, 4
name: test_BSTRPICK_W
body: |
bb.0:
$r4 = BSTRPICK_W $r5, 10, 4
...
# -------------------------------------------------------------------------------------------------
# Encoding format: BSTR_D
# -------------------------------------------------------------------------------------------------
# ------------------------------+-----------------+-----------------+--------------+---------------
# 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
# ------------------------------+-----------------+-----------------+--------------+---------------
# opcode | msb | lsb | rj | rd
# ------------------------------+-----------------+-----------------+--------------+---------------
---
# CHECK-LABEL: test_BSTRINS_D:
# 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
# CHECK-ASM: bstrins.d $a0, $a1, 7, 2
name: test_BSTRINS_D
body: |
bb.0:
$r4 = BSTRINS_D $r4, $r5, 7, 2
...
---
# CHECK-LABEL: test_BSTRPICK_D:
# 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
# CHECK-ASM: bstrpick.d $a0, $a1, 39, 22
name: test_BSTRPICK_D
body: |
bb.0:
$r4 = BSTRPICK_D $r5, 39, 22
...
# -------------------------------------------------------------------------------------------------
# Encoding format: ASRT
# -------------------------------------------------------------------------------------------------
# ---------------------------------------------------+--------------+--------------+---------------
# 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
# ---------------------------------------------------+--------------+--------------+---------------
# opcode | rk | rj | 0x0
# ---------------------------------------------------+--------------+--------------+---------------
---
# CHECK-LABEL: test_ASRTLE_D:
# 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
# CHECK-ASM: asrtle.d $a0, $a1
name: test_ASRTLE_D
body: |
bb.0:
ASRTLE_D $r4, $r5
...
---
# CHECK-LABEL: test_ASRTGT_D:
# 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
# CHECK-ASM: asrtgt.d $a0, $a1
name: test_ASRTGT_D
body: |
bb.0:
ASRTGT_D $r4, $r5
...
# -------------------------------------------------------------------------------------------------
# Encoding format: PRELD
# -------------------------------------------------------------------------------------------------
# ------------------------------+-----------------------------------+--------------+---------------
# 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
# ------------------------------+-----------------------------------+--------------+---------------
# opcode | imm12 | rj | imm5
# ------------------------------+-----------------------------------+--------------+---------------
---
# CHECK-LABEL: test_PRELD:
# 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
# CHECK-ASM: preld 15, $a0, 21
name: test_PRELD
body: |
bb.0:
PRELD 15, $r4, 21
...
# -------------------------------------------------------------------------------------------------
# Encoding format: PRELDX
# -------------------------------------------------------------------------------------------------
# ---------------------------------------------------+--------------+--------------+---------------
# 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
# ---------------------------------------------------+--------------+--------------+---------------
# opcode | rk | rj | imm5
# ---------------------------------------------------+--------------+--------------+---------------
---
# CHECK-LABEL: test_PRELDX:
# 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
# CHECK-ASM: preldx 11, $a0, $a1
name: test_PRELDX
body: |
bb.0:
PRELDX 11, $r4, $r5