149 lines · plain
1# Xqcisls - Qualcomm uC Scaled Load Store Extension2# RUN: not llvm-mc -triple riscv32 -mattr=+experimental-xqcisls < %s 2>&1 \3# RUN: | FileCheck -check-prefixes=CHECK,CHECK-PLUS %s4# RUN: not llvm-mc -triple riscv32 -mattr=-experimental-xqcisls < %s 2>&1 \5# RUN: | FileCheck -check-prefixes=CHECK,CHECK-MINUS %s6 7# CHECK-PLUS: :[[@LINE+2]]:16: error: register must be a GPR excluding zero (x0)8# CHECK-MINUS: :[[@LINE+1]]:16: error: invalid operand for instruction9qc.lrb x5, x2, x0, 410 11# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction12qc.lrb x5, x2, x413 14# CHECK-PLUS: :[[@LINE+2]]:20: error: immediate must be an integer in the range [0, 7]15# CHECK-MINUS: :[[@LINE+1]]:20: error: invalid operand for instruction16qc.lrb x5, x2, x4, 1217 18# CHECK: :[[@LINE+1]]:12: error: invalid operand for instruction19qc.lrb x5, 2, x4, 420 21# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)22qc.lrb x5, x2, x4, 423 24 25# CHECK-PLUS: :[[@LINE+2]]:17: error: register must be a GPR excluding zero (x0)26# CHECK-MINUS: :[[@LINE+1]]:17: error: invalid operand for instruction27qc.lrh x1, x12, x0, 228 29# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction30qc.lrh x1, x12, x631 32# CHECK-PLUS: :[[@LINE+2]]:21: error: immediate must be an integer in the range [0, 7]33# CHECK-MINUS: :[[@LINE+1]]:21: error: invalid operand for instruction34qc.lrh x1, x12, x6, 2235 36# CHECK: :[[@LINE+1]]:12: error: invalid operand for instruction37qc.lrh x1, 12, x6, 238 39# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)40qc.lrh x1, x12, x6, 241 42 43# CHECK-PLUS: :[[@LINE+2]]:17: error: register must be a GPR excluding zero (x0)44# CHECK-MINUS: :[[@LINE+1]]:17: error: invalid operand for instruction45qc.lrw x15, x7, x0, 146 47# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction48qc.lrw x15, x7, x1449 50# CHECK-PLUS: :[[@LINE+2]]:22: error: immediate must be an integer in the range [0, 7]51# CHECK-MINUS: :[[@LINE+1]]:22: error: invalid operand for instruction52qc.lrw x15, x7, x14, 1153 54# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction55qc.lrw x15, 7, x14, 156 57# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)58qc.lrw x15, x7, x14, 159 60 61# CHECK-PLUS: :[[@LINE+2]]:18: error: register must be a GPR excluding zero (x0)62# CHECK-MINUS: :[[@LINE+1]]:18: error: invalid operand for instruction63qc.lrbu x9, x11, x0, 764 65# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction66qc.lrbu x9, x11, x467 68# CHECK-PLUS: :[[@LINE+2]]:22: error: immediate must be an integer in the range [0, 7]69# CHECK-MINUS: :[[@LINE+1]]:22: error: invalid operand for instruction70qc.lrbu x9, x11, x4, 3771 72# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction73qc.lrbu x9, 11, x4, 774 75# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)76qc.lrbu x9, x11, x4, 777 78 79# CHECK-PLUS: :[[@LINE+2]]:18: error: register must be a GPR excluding zero (x0)80# CHECK-MINUS: :[[@LINE+1]]:18: error: invalid operand for instruction81qc.lrhu x16, x6, x0, 482 83# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction84qc.lrhu x16, x6, x1085 86# CHECK-PLUS: :[[@LINE+2]]:23: error: immediate must be an integer in the range [0, 7]87# CHECK-MINUS: :[[@LINE+1]]:23: error: invalid operand for instruction88qc.lrhu x16, x6, x10, 4489 90# CHECK: :[[@LINE+1]]:14: error: invalid operand for instruction91qc.lrhu x16, 6, x10, 492 93# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)94qc.lrhu x16, x6, x10, 495 96 97# CHECK-PLUS: :[[@LINE+2]]:16: error: register must be a GPR excluding zero (x0)98# CHECK-MINUS: :[[@LINE+1]]:16: error: invalid operand for instruction99qc.srb x0, x2, x0, 3100 101# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction102qc.srb x0, x2, x8103 104# CHECK-PLUS: :[[@LINE+2]]:20: error: immediate must be an integer in the range [0, 7]105# CHECK-MINUS: :[[@LINE+1]]:20: error: invalid operand for instruction106qc.srb x0, x2, x8, 93107 108# CHECK: :[[@LINE+1]]:12: error: invalid operand for instruction109qc.srb x0, 2, x8, 3110 111# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)112qc.srb x0, x2, x8, 3113 114 115# CHECK-PLUS: :[[@LINE+2]]:17: error: register must be a GPR excluding zero (x0)116# CHECK-MINUS: :[[@LINE+1]]:17: error: invalid operand for instruction117qc.srh x13, x0, x0, 6118 119# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction120qc.srh x13, x0, x20121 122# CHECK-PLUS: :[[@LINE+2]]:22: error: immediate must be an integer in the range [0, 7]123# CHECK-MINUS: :[[@LINE+1]]:22: error: invalid operand for instruction124qc.srh x13, x0, x20, 76125 126# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction127qc.srh x13, 0, x20, 6128 129# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)130qc.srh x13, x0, x20, 6131 132 133# CHECK-PLUS: :[[@LINE+2]]:18: error: register must be a GPR excluding zero (x0)134# CHECK-MINUS: :[[@LINE+1]]:18: error: invalid operand for instruction135qc.srw x17, x18, x0, 0136 137# CHECK: :[[@LINE+1]]:1: error: too few operands for instruction138qc.srw x17, x18, x19139 140# CHECK-PLUS: :[[@LINE+2]]:23: error: immediate must be an integer in the range [0, 7]141# CHECK-MINUS: :[[@LINE+1]]:23: error: invalid operand for instruction142qc.srw x17, x18, x19, 10143 144# CHECK: :[[@LINE+1]]:13: error: invalid operand for instruction145qc.srw x17, 18, x19, 0146 147# CHECK-MINUS: :[[@LINE+1]]:1: error: instruction requires the following: 'Xqcisls' (Qualcomm uC Scaled Load Store Extension)148qc.srw x17, x18, x19, 0149