blob: 58a0f8ceaab35845177119116beabbc07c5392d6 [file] [log] [blame] [edit]
# Xqcisls - Qualcomm uC Scaled Load Store Extension
# RUN: not llvm-mc -triple riscv32 -mattr=+experimental-xqcisls < %s 2>&1 \
# RUN: | FileCheck -check-prefixes=CHECK,CHECK-PLUS %s
# RUN: not llvm-mc -triple riscv32 -mattr=-experimental-xqcisls < %s 2>&1 \
# RUN: | FileCheck -check-prefixes=CHECK,CHECK-MINUS %s
# CHECK-PLUS: :[[@LINE+2]]:16: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:16: error: invalid operand for instruction
qc.lrb x5, x2, x0, 4
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.lrb x5, x2, x4
# CHECK-PLUS: :[[@LINE+2]]:20: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:20: error: invalid operand for instruction
qc.lrb x5, x2, x4, 12
# CHECK: :[[@LINE+1]]:12: error: invalid operand for instruction
qc.lrb x5, 2, x4, 4
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.lrb x5, x2, x4, 4
# CHECK-PLUS: :[[@LINE+2]]:17: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:17: error: invalid operand for instruction
qc.lrh x1, x12, x0, 2
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.lrh x1, x12, x6
# CHECK-PLUS: :[[@LINE+2]]:21: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:21: error: invalid operand for instruction
qc.lrh x1, x12, x6, 22
# CHECK: :[[@LINE+1]]:12: error: invalid operand for instruction
qc.lrh x1, 12, x6, 2
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.lrh x1, x12, x6, 2
# CHECK-PLUS: :[[@LINE+2]]:17: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:17: error: invalid operand for instruction
qc.lrw x15, x7, x0, 1
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.lrw x15, x7, x14
# CHECK-PLUS: :[[@LINE+2]]:22: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:22: error: invalid operand for instruction
qc.lrw x15, x7, x14, 11
# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction
qc.lrw x15, 7, x14, 1
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.lrw x15, x7, x14, 1
# CHECK-PLUS: :[[@LINE+2]]:18: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:18: error: invalid operand for instruction
qc.lrbu x9, x11, x0, 7
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.lrbu x9, x11, x4
# CHECK-PLUS: :[[@LINE+2]]:22: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:22: error: invalid operand for instruction
qc.lrbu x9, x11, x4, 37
# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction
qc.lrbu x9, 11, x4, 7
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.lrbu x9, x11, x4, 7
# CHECK-PLUS: :[[@LINE+2]]:18: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:18: error: invalid operand for instruction
qc.lrhu x16, x6, x0, 4
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.lrhu x16, x6, x10
# CHECK-PLUS: :[[@LINE+2]]:23: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:23: error: invalid operand for instruction
qc.lrhu x16, x6, x10, 44
# CHECK: :[[@LINE+1]]:14: error: invalid operand for instruction
qc.lrhu x16, 6, x10, 4
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.lrhu x16, x6, x10, 4
# CHECK-PLUS: :[[@LINE+2]]:16: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:16: error: invalid operand for instruction
qc.srb x0, x2, x0, 3
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.srb x0, x2, x8
# CHECK-PLUS: :[[@LINE+2]]:20: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:20: error: invalid operand for instruction
qc.srb x0, x2, x8, 93
# CHECK: :[[@LINE+1]]:12: error: invalid operand for instruction
qc.srb x0, 2, x8, 3
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.srb x0, x2, x8, 3
# CHECK-PLUS: :[[@LINE+2]]:17: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:17: error: invalid operand for instruction
qc.srh x13, x0, x0, 6
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.srh x13, x0, x20
# CHECK-PLUS: :[[@LINE+2]]:22: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:22: error: invalid operand for instruction
qc.srh x13, x0, x20, 76
# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction
qc.srh x13, 0, x20, 6
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.srh x13, x0, x20, 6
# CHECK-PLUS: :[[@LINE+2]]:18: error: register must be a GPR excluding zero (x0)
# CHECK-MINUS: :[[@LINE+1]]:18: error: invalid operand for instruction
qc.srw x17, x18, x0, 0
# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction
qc.srw x17, x18, x19
# CHECK-PLUS: :[[@LINE+2]]:23: error: immediate must be an integer in the range [0, 7]
# CHECK-MINUS: :[[@LINE+1]]:23: error: invalid operand for instruction
qc.srw x17, x18, x19, 10
# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction
qc.srw x17, 18, x19, 0
# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)
qc.srw x17, x18, x19, 0