blob: 090b72834364b78c2d8c4094bdf31532c576ec09 [file] [log] [blame]
# Xqcibm - Qualcomm uC Bit Manipulation Extension
# Zbs is needed for checking compress instructions patterns for bexti/bseti
# RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-xqcibm,+zbs -M no-aliases -show-encoding \
# RUN: | FileCheck -check-prefixes=CHECK-ENC,CHECK-INST,CHECK-NOALIAS %s
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+experimental-xqcibm,+zbs < %s \
# RUN: | llvm-objdump --mattr=+experimental-xqcibm,+zbs -M no-aliases --no-print-imm-hex -d - \
# RUN: | FileCheck -check-prefix=CHECK-INST %s
# RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-xqcibm,+zbs -show-encoding \
# RUN: | FileCheck -check-prefixes=CHECK-ENC,CHECK-INST,CHECK-ALIAS %s
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+experimental-xqcibm,+zbs < %s \
# RUN: | llvm-objdump --mattr=+experimental-xqcibm,+zbs --no-print-imm-hex -d - \
# RUN: | FileCheck -check-prefix=CHECK-INST %s
# CHECK-INST: qc.compress2 t2, t0
# CHECK-ENC: encoding: [0x8b,0xb3,0x02,0x00]
qc.compress2 x7, x5
# CHECK-INST: qc.compress3 a0, s6
# CHECK-ENC: encoding: [0x0b,0x35,0x0b,0x02]
qc.compress3 x10, x22
# CHECK-INST: qc.expand2 s7, s7
# CHECK-ENC: encoding: [0x8b,0xbb,0x0b,0x04]
qc.expand2 x23, x23
# CHECK-INST: qc.expand3 sp, t1
# CHECK-ENC: encoding: [0x0b,0x31,0x03,0x06]
qc.expand3 x2, x6
# CHECK-INST: qc.clo s7, s8
# CHECK-ENC: encoding: [0x8b,0x3b,0x0c,0x08]
qc.clo x23, x24
# CHECK-INST: qc.cto a2, a3
# CHECK-ENC: encoding: [0x0b,0xb6,0x06,0x0a]
qc.cto x12, x13
# CHECK-INST: qc.brev32 s4, s8
# CHECK-ENC: encoding: [0x0b,0x3a,0x0c,0x0c]
qc.brev32 x20, x24
# CHECK-INST: qc.insbri a0, s4, -1024
# CHECK-ENC: encoding: [0x0b,0x05,0x0a,0xc0]
qc.insbri x10, x20, -1024
# CHECK-INST: qc.insbi t1, -10, 32, 15
# CHECK-ENC: encoding: [0x0b,0x13,0xfb,0x3e]
qc.insbi x6, -10, 32, 15
# CHECK-INST: qc.insb a0, t2, 6, 31
# CHECK-ENC: encoding: [0x0b,0x95,0xf3,0x4b]
qc.insb x10, x7, 6, 31
# CHECK-INST: qc.insbh s4, a2, 8, 12
# CHECK-ENC: encoding: [0x0b,0x1a,0xc6,0x8e]
qc.insbh x20, x12, 8, 12
# CHECK-INST: qc.extu a5, a2, 20, 20
# CHECK-ENC: encoding: [0x8b,0x27,0x46,0x27]
qc.extu x15, x12, 20, 20
# CHECK-INST: qc.ext s11, t1, 31, 1
# CHECK-ENC: encoding: [0x8b,0x2d,0x13,0x7c]
qc.ext x27, x6, 31, 1
# CHECK-INST: qc.extdu ra, s0, 32, 8
# CHECK-ENC: encoding: [0x8b,0x20,0x84,0xbe]
qc.extdu x1, x8, 32, 8
# CHECK-INST: qc.extd a3, s5, 10, 15
# CHECK-ENC: encoding: [0x8b,0xa6,0xfa,0xd2]
qc.extd x13, x21, 10, 15
# CHECK-INST: qc.insbr a0, s3, t0
# CHECK-ENC: encoding: [0x0b,0xb5,0x59,0x00]
qc.insbr x10, x19, x5
# CHECK-INST: qc.insbhr a5, tp, t1
# CHECK-ENC: encoding: [0x8b,0x37,0x62,0x02]
qc.insbhr x15, x4, x6
# CHECK-INST: qc.insbpr s5, s0, s1
# CHECK-ENC: encoding: [0x8b,0x3a,0x94,0x04]
qc.insbpr x21, x8, x9
# CHECK-INST: qc.insbprh sp, gp, a1
# CHECK-ENC: encoding: [0x0b,0xb1,0xb1,0x06]
qc.insbprh x2, x3, x11
# CHECK-INST: qc.extdur s1, s3, t4
# CHECK-ENC: encoding: [0x8b,0xb4,0xd9,0x09]
qc.extdur x9, x19, x29
# CHECK-INST: qc.extdr a2, t4, t5
# CHECK-ENC: encoding: [0x0b,0xb6,0xee,0x0b]
qc.extdr x12, x29, x30
# CHECK-INST: qc.extdupr a3, s7, gp
# CHECK-ENC: encoding: [0x8b,0xb6,0x3b,0x0c]
qc.extdupr x13, x23, x3
# CHECK-INST: qc.extduprh s2, s0, s1
# CHECK-ENC: encoding: [0x0b,0x39,0x94,0x0e]
qc.extduprh x18, x8, x9
# CHECK-INST: qc.extdpr ra, tp, a5
# CHECK-ENC: encoding: [0x8b,0x30,0xf2,0x10]
qc.extdpr x1, x4, x15
# CHECK-INST: qc.extdprh t1, s8, s9
# CHECK-ENC: encoding: [0x0b,0x33,0x9c,0x13]
qc.extdprh x6, x24, x25
# CHECK-NOALIAS: qc.c.bexti s1, 8
# CHECK-ALIAS: bexti s1, s1, 8
# CHECK-ENC: encoding: [0xa1,0x90]
qc.c.bexti x9, 8
# CHECK-NOALIAS: qc.c.bseti a2, 16
# CHECK-ALIAS: bseti a2, a2, 16
# CHECK-ENC: encoding: [0x41,0x96]
qc.c.bseti x12, 16
# CHECK-NOALIAS: qc.c.extu a5, 32
# CHECK-ALIAS: qc.extu a5, a5, 32, 0
# CHECK-ENC: encoding: [0xfe,0x17]
qc.c.extu x15, 32
# Check that compress patterns work as expected
# CHECK-NOALIAS: qc.c.extu a1, 11
# CHECK-ALIAS: qc.extu a1, a1, 11, 0
# CHECK-ENC: encoding: [0xaa,0x15]
qc.extu x11, x11, 11, 0
# CHECK-NOALIAS: qc.c.bexti a1, 5
# CHECK-ALIAS: bexti a1, a1, 5
# CHECK-ENC: encoding: [0x95,0x91]
qc.extu x11, x11, 1, 5
# CHECK-NOALIAS: qc.c.bexti s1, 8
# CHECK-ALIAS: bexti s1, s1, 8
# CHECK-ENC-ZBS: encoding: [0xa1,0x90]
bexti x9, x9, 8
# CHECK-NOALIAS: qc.c.bseti a2, 16
# CHECK-ALIAS: bseti a2, a2, 16
# CHECK-ENC: encoding: [0x41,0x96]
bseti x12, x12, 16