brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 5214747 Raw
90 lines · plain
1# RUN: not llvm-mc -triple=riscv32 -mattr=+c < %s 2>&1 \2# RUN:     | FileCheck %s3# RUN: not llvm-mc -triple=riscv32 -mattr=+zca < %s 2>&1 \4# RUN:     | FileCheck %s5 6## GPRC7.LBB:8c.lw  ra, 4(sp) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction9c.sw  sp, 4(sp) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction10c.beqz  t0, .LBB # CHECK: :[[@LINE]]:9: error: invalid operand for instruction11c.bnez  s8, .LBB # CHECK: :[[@LINE]]:9: error: invalid operand for instruction12c.addi4spn  s4, sp, 12 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction13c.srli  s7, 12 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction14c.srai  t0, 12 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction15c.andi  t1, 12 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction16c.and  t1, a0 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction17c.or   a0, s8 # CHECK: :[[@LINE]]:12: error: invalid operand for instruction18c.xor  t2, a0 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction19c.sub  a0, s8 # CHECK: :[[@LINE]]:12: error: invalid operand for instruction20 21## GPRNoX022c.lwsp  x0, 4(sp) # CHECK: :[[@LINE]]:9: error: register must be a GPR excluding zero (x0)23c.lwsp  zero, 4(sp) # CHECK: :[[@LINE]]:9: error: register must be a GPR excluding zero (x0)24c.jr  x0 # CHECK: :[[@LINE]]:7: error: register must be a GPR excluding zero (x0)25c.jalr  zero # CHECK: :[[@LINE]]:9: error: register must be a GPR excluding zero (x0)26c.mv  ra, x0 # CHECK: :[[@LINE]]:11: error: register must be a GPR excluding zero (x0)27c.add  ra, ra, x0 # CHECK: :[[@LINE]]:16: error: invalid operand for instruction28 29## GPRNoX230c.lui x2, 4 # CHECK: :[[@LINE]]:7: error: register must be a GPR excluding sp (x2){{$}}31 32## SP33c.addi4spn  a0, a0, 12 # CHECK: :[[@LINE]]:17: error: register must be sp (x2)34c.addi16sp  t0, 16 # CHECK: :[[@LINE]]:13: error: register must be sp (x2)35 36# Out of range immediates37 38## uimmlog2xlenn39c.slli t0, 64 # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [0, 31]40c.srli a0, 32 # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [0, 31]41 42## simm643c.li t0, 128 # CHECK: :[[@LINE]]:10: error: immediate must be an integer in the range [-32, 31]44c.li t0, foo # CHECK: :[[@LINE]]:10: error: immediate must be an integer in the range [-32, 31]45c.li t0, %lo(foo) # CHECK: :[[@LINE]]:10: error: immediate must be an integer in the range [-32, 31]46c.li t0, %hi(foo) # CHECK: :[[@LINE]]:10: error: immediate must be an integer in the range [-32, 31]47c.andi a0, -33 # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]48c.andi a0, foo # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]49c.andi a0, %lo(foo) # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]50c.andi a0, %hi(foo) # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]51c.addi t0, -33 # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]52c.addi t0, 32 # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]53c.addi t0, foo # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]54c.addi t0, %lo(foo) # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]55c.addi t0, %hi(foo) # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [-32, 31]56 57## simm6nonzero58c.nop 32 # CHECK: :[[@LINE]]:7: error: immediate must be non-zero in the range [-32, 31]59 60## c_lui_imm61c.lui t0, 0 # CHECK: :[[@LINE]]:11: error: immediate must be in [0xfffe0, 0xfffff] or [1, 31]62c.lui t0, 32 # CHECK: :[[@LINE]]:11: error: immediate must be in [0xfffe0, 0xfffff] or [1, 31]63c.lui t0, 0xffffdf # CHECK: :[[@LINE]]:11: error: immediate must be in [0xfffe0, 0xfffff] or [1, 31]64c.lui t0, 0x1000000 # CHECK: :[[@LINE]]:11: error: immediate must be in [0xfffe0, 0xfffff] or [1, 31]65c.lui t0, foo # CHECK: [[@LINE]]:11: error: immediate must be in [0xfffe0, 0xfffff] or [1, 31]66 67## uimm8_lsb0068c.lwsp  ra, 256(sp) # CHECK: :[[@LINE]]:13: error: immediate must be a multiple of 4 bytes in the range [0, 252]69c.swsp  ra, -4(sp) # CHECK: :[[@LINE]]:13: error: immediate must be a multiple of 4 bytes in the range [0, 252]70## uimm7_lsb0071c.lw  s0, -4(sp) # CHECK: :[[@LINE]]:11: error: immediate must be a multiple of 4 bytes in the range [0, 124]72c.sw  s0, 128(sp) # CHECK: :[[@LINE]]:11: error: immediate must be a multiple of 4 bytes in the range [0, 124]73 74## simm9_lsb075c.bnez  s1, -258 # CHECK: :[[@LINE]]:13: error: immediate must be a multiple of 2 bytes in the range [-256, 254]76c.beqz  a0, 256 # CHECK: :[[@LINE]]:13: error: immediate must be a multiple of 2 bytes in the range [-256, 254]77 78## simm12_lsb079c.j 2048 # CHECK: :[[@LINE]]:5: error: immediate must be a multiple of 2 bytes in the range [-2048, 2046]80c.jal -2050 # CHECK: :[[@LINE]]:7: error: immediate must be a multiple of 2 bytes in the range [-2048, 2046]81 82## uimm10_lsb00nonzero83c.addi4spn  a0, sp, 0 # CHECK: :[[@LINE]]:21: error: immediate must be a multiple of 4 bytes in the range [4, 1020]84c.addi4spn  a0, sp, 1024 # CHECK: :[[@LINE]]:21: error: immediate must be a multiple of 4 bytes in the range [4, 1020]85 86## simm10_lsb0000nonzero87c.addi16sp  sp, -528 # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 16 bytes and non-zero in the range [-512, 496]88c.addi16sp  sp, 512 # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 16 bytes and non-zero in the range [-512, 496]89c.addi16sp  sp, 0 # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 16 bytes and non-zero in the range [-512, 496]90