| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| # RUN: llvm-mc -triple riscv32 -mattr=+c,+experimental-zbproposedc -show-encoding < %s \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK,CHECK-ALIAS %s | ||
| # RUN: llvm-mc -triple riscv32 -mattr=+c,+experimental-zbproposedc -show-encoding \ | ||
| # RUN: -riscv-no-aliases <%s | FileCheck -check-prefixes=CHECK,CHECK-INST %s | ||
| # RUN: llvm-mc -triple riscv32 -mattr=+c,+experimental-zbproposedc -filetype=obj < %s \ | ||
| # RUN: | llvm-objdump --triple=riscv32 --mattr=+c,+experimental-zbproposedc -d - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-ALIAS %s | ||
| # RUN: llvm-mc -triple riscv32 -mattr=+c,+experimental-zbproposedc -filetype=obj < %s \ | ||
| # RUN: | llvm-objdump --triple=riscv32 --mattr=+c,+experimental-zbproposedc -d -M no-aliases - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-INST %s | ||
|
|
||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc -show-encoding < %s \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ALIAS %s | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc -show-encoding \ | ||
| # RUN: -riscv-no-aliases <%s | FileCheck -check-prefixes=CHECK-INST %s | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc -filetype=obj < %s \ | ||
| # RUN: | llvm-objdump --triple=riscv64 --mattr=+c,+experimental-zbproposedc -d - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-ALIAS %s | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc -filetype=obj < %s \ | ||
| # RUN: | llvm-objdump --triple=riscv64 --mattr=+c,+experimental-zbproposedc -d -M no-aliases - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-INST %s | ||
|
|
||
| # Tests bit manipulation instructions available in rv32 and in rv64. | ||
|
|
||
| # CHECK-BYTES: 01 60 | ||
| # CHECK-ALIAS: not s0, s0 | ||
| # CHECK-INST: c.not s0 | ||
| # CHECK: # encoding: [0x01,0x60] | ||
| not s0, s0 | ||
|
|
||
| # CHECK-BYTES: 01 64 | ||
| # CHECK-ALIAS: neg s0, s0 | ||
| # CHECK-INST: c.neg s0 | ||
| # CHECK: # encoding: [0x01,0x64] | ||
| neg s0, s0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b -show-encoding < %s \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ALIAS %s | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b -show-encoding \ | ||
| # RUN: -riscv-no-aliases <%s | FileCheck -check-prefixes=CHECK-INST %s | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b -filetype=obj < %s \ | ||
| # RUN: | llvm-objdump --triple=riscv64 --mattr=+c,+experimental-zbproposedc,+experimental-b -d - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-ALIAS %s | ||
| # RUN: llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b -filetype=obj < %s \ | ||
| # RUN: | llvm-objdump --triple=riscv64 --mattr=+c,+experimental-zbproposedc,+experimental-b -d -M no-aliases - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-INST %s | ||
|
|
||
| # Tests compressed instructions available in rv64 and not in rv32. | ||
|
|
||
| # CHECK-BYTES: 01 68 | ||
| # CHECK-ALIAS: zext.w s0, s0 | ||
| # CHECK-INST: c.zext.w s0 | ||
| # CHECK: # encoding: [0x01,0x68] | ||
| zext.w s0, s0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,224 @@ | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -riscv-no-aliases \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump -d -r --riscv-no-aliases --mattr=+experimental-b - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s | ||
| # RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump -d -r --mattr=+experimental-b - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s | ||
|
|
||
| # The following check prefixes are used in this test: | ||
| # CHECK-S-OBJ Match both the .s and objdumped object output with | ||
| # aliases enabled | ||
| # CHECK-S-OBJ-NOALIAS Match both the .s and objdumped object output with | ||
| # aliases disabled | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: andi t0, t1, 255 | ||
| # CHECK-S-OBJ: zext.b t0, t1 | ||
| zext.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: pack t0, t1, zero | ||
| # CHECK-S-OBJ: zext.h t0, t1 | ||
| zext.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 1 | ||
| # CHECK-S-OBJ: rev.p t0, t1 | ||
| rev.p x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 2 | ||
| # CHECK-S-OBJ: rev2.n t0, t1 | ||
| rev2.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 3 | ||
| # CHECK-S-OBJ: rev.n t0, t1 | ||
| rev.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 4 | ||
| # CHECK-S-OBJ: rev4.b t0, t1 | ||
| rev4.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 6 | ||
| # CHECK-S-OBJ: rev2.b t0, t1 | ||
| rev2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 7 | ||
| # CHECK-S-OBJ: rev.b t0, t1 | ||
| rev.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 8 | ||
| # CHECK-S-OBJ: rev8.h t0, t1 | ||
| rev8.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 12 | ||
| # CHECK-S-OBJ: rev4.h t0, t1 | ||
| rev4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 14 | ||
| # CHECK-S-OBJ: rev2.h t0, t1 | ||
| rev2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 15 | ||
| # CHECK-S-OBJ: rev.h t0, t1 | ||
| rev.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 16 | ||
| # CHECK-S-OBJ: rev16 t0, t1 | ||
| rev16 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 24 | ||
| # CHECK-S-OBJ: rev8 t0, t1 | ||
| rev8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 28 | ||
| # CHECK-S-OBJ: rev4 t0, t1 | ||
| rev4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 30 | ||
| # CHECK-S-OBJ: rev2 t0, t1 | ||
| rev2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 31 | ||
| # CHECK-S-OBJ: rev t0, t1 | ||
| rev x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 1 | ||
| # CHECK-S-OBJ: zip.n t0, t1 | ||
| zip.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 1 | ||
| # CHECK-S-OBJ: unzip.n t0, t1 | ||
| unzip.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 2 | ||
| # CHECK-S-OBJ: zip2.b t0, t1 | ||
| zip2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 2 | ||
| # CHECK-S-OBJ: unzip2.b t0, t1 | ||
| unzip2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 3 | ||
| # CHECK-S-OBJ: zip.b t0, t1 | ||
| zip.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 3 | ||
| # CHECK-S-OBJ: unzip.b t0, t1 | ||
| unzip.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 4 | ||
| # CHECK-S-OBJ: zip4.h t0, t1 | ||
| zip4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 4 | ||
| # CHECK-S-OBJ: unzip4.h t0, t1 | ||
| unzip4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 6 | ||
| # CHECK-S-OBJ: zip2.h t0, t1 | ||
| zip2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 6 | ||
| # CHECK-S-OBJ: unzip2.h t0, t1 | ||
| unzip2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 7 | ||
| # CHECK-S-OBJ: zip.h t0, t1 | ||
| zip.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 7 | ||
| # CHECK-S-OBJ: unzip.h t0, t1 | ||
| unzip.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 8 | ||
| # CHECK-S-OBJ: zip8 t0, t1 | ||
| zip8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 8 | ||
| # CHECK-S-OBJ: unzip8 t0, t1 | ||
| unzip8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 12 | ||
| # CHECK-S-OBJ: zip4 t0, t1 | ||
| zip4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 12 | ||
| # CHECK-S-OBJ: unzip4 t0, t1 | ||
| unzip4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 14 | ||
| # CHECK-S-OBJ: zip2 t0, t1 | ||
| zip2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 14 | ||
| # CHECK-S-OBJ: unzip2 t0, t1 | ||
| unzip2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 15 | ||
| # CHECK-S-OBJ: zip t0, t1 | ||
| zip x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 15 | ||
| # CHECK-S-OBJ: unzip t0, t1 | ||
| unzip x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 1 | ||
| # CHECK-S-OBJ: orc.p t0, t1 | ||
| orc.p x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 2 | ||
| # CHECK-S-OBJ: orc2.n t0, t1 | ||
| orc2.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 3 | ||
| # CHECK-S-OBJ: orc.n t0, t1 | ||
| orc.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 4 | ||
| # CHECK-S-OBJ: orc4.b t0, t1 | ||
| orc4.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 6 | ||
| # CHECK-S-OBJ: orc2.b t0, t1 | ||
| orc2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 7 | ||
| # CHECK-S-OBJ: orc.b t0, t1 | ||
| orc.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 8 | ||
| # CHECK-S-OBJ: orc8.h t0, t1 | ||
| orc8.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 12 | ||
| # CHECK-S-OBJ: orc4.h t0, t1 | ||
| orc4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 14 | ||
| # CHECK-S-OBJ: orc2.h t0, t1 | ||
| orc2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 15 | ||
| # CHECK-S-OBJ: orc.h t0, t1 | ||
| orc.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 16 | ||
| # CHECK-S-OBJ: orc16 t0, t1 | ||
| orc16 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 24 | ||
| # CHECK-S-OBJ: orc8 t0, t1 | ||
| orc8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 28 | ||
| # CHECK-S-OBJ: orc4 t0, t1 | ||
| orc4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 30 | ||
| # CHECK-S-OBJ: orc2 t0, t1 | ||
| orc2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 31 | ||
| # CHECK-S-OBJ: orc t0, t1 | ||
| orc x5, x6 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbb < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| slo t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sro t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sloi t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sloi t0, t1, 32 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 31] | ||
| sloi t0, t1, -1 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sroi t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sroi t0, t1, 32 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 31] | ||
| sroi t0, t1, -1 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 31] | ||
| # Too many operands | ||
| clz t0, t1, t2 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction | ||
| # Too many operands | ||
| ctz t0, t1, t2 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction | ||
| # Too many operands | ||
| pcnt t0, t1, t2 # CHECK: :[[@LINE]]:14: error: invalid operand for instruction | ||
| # Too many operands | ||
| sext.b t0, t1, t2 # CHECK: :[[@LINE]]:16: error: invalid operand for instruction | ||
| # Too many operands | ||
| sext.h t0, t1, t2 # CHECK: :[[@LINE]]:16: error: invalid operand for instruction | ||
| # Too few operands | ||
| min t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| max t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| minu t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| maxu t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip base extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbb -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbb < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbb -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: slo t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x20] | ||
| slo t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sro t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x20] | ||
| sro t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sloi t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x03,0x20] | ||
| sloi t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: sroi t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x03,0x20] | ||
| sroi t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: clz t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x03,0x60] | ||
| clz t0, t1 | ||
| # CHECK-ASM-AND-OBJ: ctz t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x13,0x60] | ||
| ctz t0, t1 | ||
| # CHECK-ASM-AND-OBJ: pcnt t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x23,0x60] | ||
| pcnt t0, t1 | ||
| # CHECK-ASM-AND-OBJ: sext.b t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x43,0x60] | ||
| sext.b t0, t1 | ||
| # CHECK-ASM-AND-OBJ: sext.h t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x53,0x60] | ||
| sext.h t0, t1 | ||
| # CHECK-ASM-AND-OBJ: min t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x0a] | ||
| min t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: max t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x0a] | ||
| max t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: minu t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x62,0x73,0x0a] | ||
| minu t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: maxu t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x72,0x73,0x0a] | ||
| maxu t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbb,experimental-zbp < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| andn t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| orn t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| xnor t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| rol t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| ror t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| rori t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| rori t0, t1, 32 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 31] | ||
| rori t0, t1, -1 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| pack t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| packu t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| packh t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip base extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbb -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbb < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbb -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip permutation extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbp -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbp < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: andn t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x72,0x73,0x40] | ||
| andn t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: orn t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x62,0x73,0x40] | ||
| orn t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: xnor t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x40] | ||
| xnor t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: rol t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x60] | ||
| rol t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: ror t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x60] | ||
| ror t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: rori t0, t1, 31 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0xf3,0x61] | ||
| rori t0, t1, 31 | ||
| # CHECK-ASM-AND-OBJ: rori t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x03,0x60] | ||
| rori t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: pack t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x08] | ||
| pack t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: packu t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x48] | ||
| packu t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: packh t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x72,0x73,0x08] | ||
| packh t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbc < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| clmul t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| clmulr t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| clmulh t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip carry-less multiply extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbc -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbc < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbc -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: clmul t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x0a] | ||
| clmul t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: clmulr t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x22,0x73,0x0a] | ||
| clmulr t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: clmulh t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x32,0x73,0x0a] | ||
| clmulh t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbe < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| bdep t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| bext t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip extract/deposit extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbe -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbe < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbe -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: bdep t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x62,0x73,0x48] | ||
| bdep t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: bext t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x62,0x73,0x08] | ||
| bext t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbf < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| bfp t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bit-Field extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbf -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbf < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbf -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: bfp t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x72,0x73,0x48] | ||
| bfp t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbp < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| gorc t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| grev t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| gorci t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| gorci t0, t1, 32 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| gorci t0, t1, -1 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| grevi t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| grevi t0, t1, 32 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| grevi t0, t1, -1 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| shfl t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| unshfl t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| shfli t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| shfli t0, t1, 16 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 15] | ||
| shfli t0, t1, -1 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 15] | ||
| # Too few operands | ||
| unshfli t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| unshfli t0, t1, 16 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 15] | ||
| unshfli t0, t1, -1 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 15] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip permutation extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbp -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbp < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: gorc t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x28] | ||
| gorc t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: grev t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x68] | ||
| grev t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: gorci t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x03,0x28] | ||
| gorci t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: grevi t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x03,0x68] | ||
| grevi t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: shfl t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x08] | ||
| shfl t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: unshfl t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x08] | ||
| unshfl t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: shfli t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x03,0x08] | ||
| shfli t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: unshfli t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x03,0x08] | ||
| unshfli t0, t1, 0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+c,+experimental-zbproposedc < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too many operands | ||
| c.not s0, s1 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction | ||
| c.neg s0, s1 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+c,+experimental-zbproposedc -riscv-no-aliases -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+c,+experimental-zbproposedc < %s \ | ||
| # RUN: | llvm-objdump --mattr=+c,+experimental-zbproposedc -M no-aliases -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: c.not s0 | ||
| # CHECK-ASM: encoding: [0x01,0x60] | ||
| c.not s0 | ||
| # CHECK-ASM-AND-OBJ: c.neg s0 | ||
| # CHECK-ASM: encoding: [0x01,0x64] | ||
| c.neg s0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbr < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too many operands | ||
| crc32.b t0, t1, t2 # CHECK: :[[@LINE]]:17: error: invalid operand for instruction | ||
| # Too many operands | ||
| crc32.h t0, t1, t2 # CHECK: :[[@LINE]]:17: error: invalid operand for instruction | ||
| # Too many operands | ||
| crc32.w t0, t1, t2 # CHECK: :[[@LINE]]:17: error: invalid operand for instruction | ||
| # Too many operands | ||
| crc32c.b t0, t1, t2 # CHECK: :[[@LINE]]:18: error: invalid operand for instruction | ||
| # Too many operands | ||
| crc32c.h t0, t1, t2 # CHECK: :[[@LINE]]:18: error: invalid operand for instruction | ||
| # Too many operands | ||
| crc32c.w t0, t1, t2 # CHECK: :[[@LINE]]:18: error: invalid operand for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip CRC extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbr -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbr < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbr -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: crc32.b t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x03,0x61] | ||
| crc32.b t0, t1 | ||
| # CHECK-ASM-AND-OBJ: crc32.h t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x13,0x61] | ||
| crc32.h t0, t1 | ||
| # CHECK-ASM-AND-OBJ: crc32.w t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x23,0x61] | ||
| crc32.w t0, t1 | ||
| # CHECK-ASM-AND-OBJ: crc32c.b t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x83,0x61] | ||
| crc32c.b t0, t1 | ||
| # CHECK-ASM-AND-OBJ: crc32c.h t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x93,0x61] | ||
| crc32c.h t0, t1 | ||
| # CHECK-ASM-AND-OBJ: crc32c.w t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0xa3,0x61] | ||
| crc32c.w t0, t1 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbs < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| sbclr t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbset t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbinv t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbext t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbclri t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbclri t0, t1, 32 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| sbclri t0, t1, -1 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sbseti t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbseti t0, t1, 32 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| sbseti t0, t1, -1 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sbinvi t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbinvi t0, t1, 32 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| sbinvi t0, t1, -1 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sbexti t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbexti t0, t1, 32 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| sbexti t0, t1, -1 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip single bit extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbs -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbs < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbs -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: sbclr t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x48] | ||
| sbclr t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbset t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x28] | ||
| sbset t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbinv t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x68] | ||
| sbinv t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbext t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x48] | ||
| sbext t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbclri t0, t1, 1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x13,0x48] | ||
| sbclri t0, t1, 1 | ||
| # CHECK-ASM-AND-OBJ: sbseti t0, t1, 1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x13,0x28] | ||
| sbseti t0, t1, 1 | ||
| # CHECK-ASM-AND-OBJ: sbinvi t0, t1, 1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x13,0x68] | ||
| sbinvi t0, t1, 1 | ||
| # CHECK-ASM-AND-OBJ: sbexti t0, t1, 1 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x13,0x48] | ||
| sbexti t0, t1, 1 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # RUN: not llvm-mc -triple riscv32 -mattr=+experimental-b,experimental-zbt < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| cmix t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| cmov t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| fsl t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| fsr t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| fsri t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| fsri t0, t1, t2, 32 # CHECK: :[[@LINE]]:18: error: immediate must be an integer in the range [0, 31] | ||
| fsri t0, t1, t2, -1 # CHECK: :[[@LINE]]:18: error: immediate must be an integer in the range [0, 31] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip ternary extension: | ||
| # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbt -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbt < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbt -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: cmix t0, t1, t2, t3 | ||
| # CHECK-ASM: encoding: [0xb3,0x92,0x63,0xe6] | ||
| cmix t0, t1, t2, t3 | ||
| # CHECK-ASM-AND-OBJ: cmov t0, t1, t2, t3 | ||
| # CHECK-ASM: encoding: [0xb3,0xd2,0x63,0xe6] | ||
| cmov t0, t1, t2, t3 | ||
| # CHECK-ASM-AND-OBJ: fsl t0, t1, t2, t3 | ||
| # CHECK-ASM: encoding: [0xb3,0x12,0xc3,0x3d] | ||
| fsl t0, t1, t2, t3 | ||
| # CHECK-ASM-AND-OBJ: fsr t0, t1, t2, t3 | ||
| # CHECK-ASM: encoding: [0xb3,0x52,0xc3,0x3d] | ||
| fsr t0, t1, t2, t3 | ||
| # CHECK-ASM-AND-OBJ: fsri t0, t1, t2, 0 | ||
| # CHECK-ASM: encoding: [0x93,0x52,0x03,0x3c] | ||
| fsri t0, t1, t2, 0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,316 @@ | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -riscv-no-aliases \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump -d -r --riscv-no-aliases --mattr=+experimental-b - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s | ||
| # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump -d -r --mattr=+experimental-b - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s | ||
|
|
||
| # The following check prefixes are used in this test: | ||
| # CHECK-S-OBJ Match both the .s and objdumped object output with | ||
| # aliases enabled | ||
| # CHECK-S-OBJ-NOALIAS Match both the .s and objdumped object output with | ||
| # aliases disabled | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: andi t0, t1, 255 | ||
| # CHECK-S-OBJ: zext.b t0, t1 | ||
| zext.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: packw t0, t1, zero | ||
| # CHECK-S-OBJ: zext.h t0, t1 | ||
| zext.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: pack t0, t1, zero | ||
| # CHECK-S-OBJ: zext.w t0, t1 | ||
| zext.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 1 | ||
| # CHECK-S-OBJ: rev.p t0, t1 | ||
| rev.p x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 2 | ||
| # CHECK-S-OBJ: rev2.n t0, t1 | ||
| rev2.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 3 | ||
| # CHECK-S-OBJ: rev.n t0, t1 | ||
| rev.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 4 | ||
| # CHECK-S-OBJ: rev4.b t0, t1 | ||
| rev4.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 6 | ||
| # CHECK-S-OBJ: rev2.b t0, t1 | ||
| rev2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 7 | ||
| # CHECK-S-OBJ: rev.b t0, t1 | ||
| rev.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 8 | ||
| # CHECK-S-OBJ: rev8.h t0, t1 | ||
| rev8.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 12 | ||
| # CHECK-S-OBJ: rev4.h t0, t1 | ||
| rev4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 14 | ||
| # CHECK-S-OBJ: rev2.h t0, t1 | ||
| rev2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 15 | ||
| # CHECK-S-OBJ: rev.h t0, t1 | ||
| rev.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 16 | ||
| # CHECK-S-OBJ: rev16.w t0, t1 | ||
| rev16.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 24 | ||
| # CHECK-S-OBJ: rev8.w t0, t1 | ||
| rev8.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 28 | ||
| # CHECK-S-OBJ: rev4.w t0, t1 | ||
| rev4.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 30 | ||
| # CHECK-S-OBJ: rev2.w t0, t1 | ||
| rev2.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 31 | ||
| # CHECK-S-OBJ: rev.w t0, t1 | ||
| rev.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 32 | ||
| # CHECK-S-OBJ: rev32 t0, t1 | ||
| rev32 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 48 | ||
| # CHECK-S-OBJ: rev16 t0, t1 | ||
| rev16 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 56 | ||
| # CHECK-S-OBJ: rev8 t0, t1 | ||
| rev8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 60 | ||
| # CHECK-S-OBJ: rev4 t0, t1 | ||
| rev4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 62 | ||
| # CHECK-S-OBJ: rev2 t0, t1 | ||
| rev2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: grevi t0, t1, 63 | ||
| # CHECK-S-OBJ: rev t0, t1 | ||
| rev x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 1 | ||
| # CHECK-S-OBJ: zip.n t0, t1 | ||
| zip.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 1 | ||
| # CHECK-S-OBJ: unzip.n t0, t1 | ||
| unzip.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 2 | ||
| # CHECK-S-OBJ: zip2.b t0, t1 | ||
| zip2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 2 | ||
| # CHECK-S-OBJ: unzip2.b t0, t1 | ||
| unzip2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 3 | ||
| # CHECK-S-OBJ: zip.b t0, t1 | ||
| zip.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 3 | ||
| # CHECK-S-OBJ: unzip.b t0, t1 | ||
| unzip.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 4 | ||
| # CHECK-S-OBJ: zip4.h t0, t1 | ||
| zip4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 4 | ||
| # CHECK-S-OBJ: unzip4.h t0, t1 | ||
| unzip4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 6 | ||
| # CHECK-S-OBJ: zip2.h t0, t1 | ||
| zip2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 6 | ||
| # CHECK-S-OBJ: unzip2.h t0, t1 | ||
| unzip2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 7 | ||
| # CHECK-S-OBJ: zip.h t0, t1 | ||
| zip.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 7 | ||
| # CHECK-S-OBJ: unzip.h t0, t1 | ||
| unzip.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 8 | ||
| # CHECK-S-OBJ: zip8.w t0, t1 | ||
| zip8.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 8 | ||
| # CHECK-S-OBJ: unzip8.w t0, t1 | ||
| unzip8.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 12 | ||
| # CHECK-S-OBJ: zip4.w t0, t1 | ||
| zip4.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 12 | ||
| # CHECK-S-OBJ: unzip4.w t0, t1 | ||
| unzip4.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 14 | ||
| # CHECK-S-OBJ: zip2.w t0, t1 | ||
| zip2.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 14 | ||
| # CHECK-S-OBJ: unzip2.w t0, t1 | ||
| unzip2.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 15 | ||
| # CHECK-S-OBJ: zip.w t0, t1 | ||
| zip.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 15 | ||
| # CHECK-S-OBJ: unzip.w t0, t1 | ||
| unzip.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 16 | ||
| # CHECK-S-OBJ: zip16 t0, t1 | ||
| zip16 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 16 | ||
| # CHECK-S-OBJ: unzip16 t0, t1 | ||
| unzip16 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 24 | ||
| # CHECK-S-OBJ: zip8 t0, t1 | ||
| zip8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 24 | ||
| # CHECK-S-OBJ: unzip8 t0, t1 | ||
| unzip8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 28 | ||
| # CHECK-S-OBJ: zip4 t0, t1 | ||
| zip4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 28 | ||
| # CHECK-S-OBJ: unzip4 t0, t1 | ||
| unzip4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 30 | ||
| # CHECK-S-OBJ: zip2 t0, t1 | ||
| zip2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 30 | ||
| # CHECK-S-OBJ: unzip2 t0, t1 | ||
| unzip2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: shfli t0, t1, 31 | ||
| # CHECK-S-OBJ: zip t0, t1 | ||
| zip x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 31 | ||
| # CHECK-S-OBJ: unzip t0, t1 | ||
| unzip x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 1 | ||
| # CHECK-S-OBJ: orc.p t0, t1 | ||
| orc.p x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 2 | ||
| # CHECK-S-OBJ: orc2.n t0, t1 | ||
| orc2.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 3 | ||
| # CHECK-S-OBJ: orc.n t0, t1 | ||
| orc.n x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 4 | ||
| # CHECK-S-OBJ: orc4.b t0, t1 | ||
| orc4.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 6 | ||
| # CHECK-S-OBJ: orc2.b t0, t1 | ||
| orc2.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 7 | ||
| # CHECK-S-OBJ: orc.b t0, t1 | ||
| orc.b x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 8 | ||
| # CHECK-S-OBJ: orc8.h t0, t1 | ||
| orc8.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 12 | ||
| # CHECK-S-OBJ: orc4.h t0, t1 | ||
| orc4.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 14 | ||
| # CHECK-S-OBJ: orc2.h t0, t1 | ||
| orc2.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 15 | ||
| # CHECK-S-OBJ: orc.h t0, t1 | ||
| orc.h x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 16 | ||
| # CHECK-S-OBJ: orc16.w t0, t1 | ||
| orc16.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 24 | ||
| # CHECK-S-OBJ: orc8.w t0, t1 | ||
| orc8.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 28 | ||
| # CHECK-S-OBJ: orc4.w t0, t1 | ||
| orc4.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 30 | ||
| # CHECK-S-OBJ: orc2.w t0, t1 | ||
| orc2.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 31 | ||
| # CHECK-S-OBJ: orc.w t0, t1 | ||
| orc.w x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 32 | ||
| # CHECK-S-OBJ: orc32 t0, t1 | ||
| orc32 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 48 | ||
| # CHECK-S-OBJ: orc16 t0, t1 | ||
| orc16 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 56 | ||
| # CHECK-S-OBJ: orc8 t0, t1 | ||
| orc8 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 60 | ||
| # CHECK-S-OBJ: orc4 t0, t1 | ||
| orc4 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 62 | ||
| # CHECK-S-OBJ: orc2 t0, t1 | ||
| orc2 x5, x6 | ||
|
|
||
| # CHECK-S-OBJ-NOALIAS: gorci t0, t1, 63 | ||
| # CHECK-S-OBJ: orc t0, t1 | ||
| orc x5, x6 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbb < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| addiwu t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| addiwu t0, t1, 2048 # CHECK: :[[@LINE]]:16: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047] | ||
| addiwu t0, t1, -2049 # CHECK: :[[@LINE]]:16: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047] | ||
| # Too few operands | ||
| slliu.w t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| slliu.w t0, t1, 64 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 63] | ||
| slliu.w t0, t1, -1 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 63] | ||
| # Too few operands | ||
| addwu t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| subwu t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| addu.w t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| subu.w t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| slow t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| srow t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sloiw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sloiw t0, t1, 32 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| sloiw t0, t1, -1 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sroiw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sroiw t0, t1, 32 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| sroiw t0, t1, -1 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| # Too many operands | ||
| clzw t0, t1, t2 # CHECK: :[[@LINE]]:14: error: invalid operand for instruction | ||
| # Too many operands | ||
| ctzw t0, t1, t2 # CHECK: :[[@LINE]]:14: error: invalid operand for instruction | ||
| # Too many operands | ||
| pcntw t0, t1, t2 # CHECK: :[[@LINE]]:15: error: invalid operand for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip base extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbb -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbb < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbb -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: addiwu t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x42,0x03,0x00] | ||
| addiwu t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: slliu.w t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x03,0x08] | ||
| slliu.w t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: addwu t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x02,0x73,0x0a] | ||
| addwu t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: subwu t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x02,0x73,0x4a] | ||
| subwu t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: addu.w t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x02,0x73,0x08] | ||
| addu.w t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: subu.w t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x02,0x73,0x48] | ||
| subu.w t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: slow t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x20] | ||
| slow t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: srow t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0x73,0x20] | ||
| srow t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sloiw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x03,0x20] | ||
| sloiw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: sroiw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x52,0x03,0x20] | ||
| sroiw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: clzw t0, t1 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x03,0x60] | ||
| clzw t0, t1 | ||
| # CHECK-ASM-AND-OBJ: ctzw t0, t1 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x13,0x60] | ||
| ctzw t0, t1 | ||
| # CHECK-ASM-AND-OBJ: pcntw t0, t1 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x23,0x60] | ||
| pcntw t0, t1 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbb,experimental-zbp < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| rolw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| rorw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| roriw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| roriw t0, t1, 32 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| roriw t0, t1, -1 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| packw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| packuw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip base extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbb -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbb < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbb -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip permutation extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbp -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbp < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: rolw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x60] | ||
| rolw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: rorw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0x73,0x60] | ||
| rorw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: roriw t0, t1, 31 | ||
| # CHECK-ASM: encoding: [0x9b,0x52,0xf3,0x61] | ||
| roriw t0, t1, 31 | ||
| # CHECK-ASM-AND-OBJ: roriw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x52,0x03,0x60] | ||
| roriw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: packw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x42,0x73,0x08] | ||
| packw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: packuw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x42,0x73,0x48] | ||
| packuw t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbc < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| clmulw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| clmulrw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| clmulhw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip carry-less multiply extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbc -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbc < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbc -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: clmulw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x0a] | ||
| clmulw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: clmulrw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x22,0x73,0x0a] | ||
| clmulrw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: clmulhw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x32,0x73,0x0a] | ||
| clmulhw t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbe < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| bdepw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| bextw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip extract/deposit extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbe -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbe < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbe -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: bdepw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x62,0x73,0x48] | ||
| bdepw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: bextw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x62,0x73,0x08] | ||
| bextw t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbf < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| bfpw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bit-Field extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbf -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbf < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbf -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: bfpw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x72,0x73,0x48] | ||
| bfpw t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbm < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too many operands | ||
| bmatflip t0, t1, t2 # CHECK: :[[@LINE]]:18: error: invalid operand for instruction | ||
| # Too few operands | ||
| bmator t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| bmatxor t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip matix extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbm -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbm < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbm -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: bmatflip t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x33,0x60] | ||
| bmatflip t0, t1 | ||
| # CHECK-ASM-AND-OBJ: bmator t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x32,0x73,0x08] | ||
| bmator t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: bmatxor t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xb3,0x32,0x73,0x48] | ||
| bmatxor t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbp < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| gorcw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| grevw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| gorciw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| gorciw t0, t1, 32 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| gorciw t0, t1, -1 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| greviw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| greviw t0, t1, 32 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| greviw t0, t1, -1 # CHECK: :[[@LINE]]:16: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| shflw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| unshflw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip permutation extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbp -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbp < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: gorcw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0x73,0x28] | ||
| gorcw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: grevw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0x73,0x68] | ||
| grevw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: gorciw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x52,0x03,0x28] | ||
| gorciw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: greviw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x52,0x03,0x68] | ||
| greviw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: shflw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x08] | ||
| shflw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: unshflw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0x73,0x08] | ||
| unshflw t0, t1, t2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too many operands | ||
| c.zext.w s0, s1 # CHECK: :[[@LINE]]:14: error: invalid operand for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b -riscv-no-aliases -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+experimental-zbproposedc,+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+c,+experimental-zbproposedc,+experimental-b -M no-aliases -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
|
|
||
| # CHECK-ASM-AND-OBJ: c.zext.w s0 | ||
| # CHECK-ASM: encoding: [0x01,0x68] | ||
| c.zext.w s0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbr < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too many operands | ||
| crc32.d t0, t1, t2 # CHECK: :[[@LINE]]:17: error: invalid operand for instruction | ||
| # Too many operands | ||
| crc32c.d t0, t1, t2 # CHECK: :[[@LINE]]:18: error: invalid operand for instruction |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip CRC extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbr -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbr < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbr -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: crc32.d t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0x33,0x61] | ||
| crc32.d t0, t1 | ||
| # CHECK-ASM-AND-OBJ: crc32c.d t0, t1 | ||
| # CHECK-ASM: encoding: [0x93,0x12,0xb3,0x61] | ||
| crc32c.d t0, t1 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbs < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| sbclrw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbsetw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbinvw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbextw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| sbclriw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbclriw t0, t1, 32 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31] | ||
| sbclriw t0, t1, -1 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sbsetiw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbsetiw t0, t1, 32 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31] | ||
| sbsetiw t0, t1, -1 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31] | ||
| # Too few operands | ||
| sbinviw t0, t1 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| sbinviw t0, t1, 32 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31] | ||
| sbinviw t0, t1, -1 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip single bit extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbs -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbs < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbs -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: sbclrw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x48] | ||
| sbclrw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbsetw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x28] | ||
| sbsetw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbinvw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x68] | ||
| sbinvw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbextw t0, t1, t2 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0x73,0x48] | ||
| sbextw t0, t1, t2 | ||
| # CHECK-ASM-AND-OBJ: sbclriw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x03,0x48] | ||
| sbclriw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: sbsetiw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x03,0x28] | ||
| sbsetiw t0, t1, 0 | ||
| # CHECK-ASM-AND-OBJ: sbinviw t0, t1, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x12,0x03,0x68] | ||
| sbinviw t0, t1, 0 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # RUN: not llvm-mc -triple riscv64 -mattr=+experimental-b,experimental-zbt < %s 2>&1 | FileCheck %s | ||
|
|
||
| # Too few operands | ||
| fslw t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Too few operands | ||
| fsrw t0, t1, t2 # CHECK: :[[@LINE]]:1: error: too few operands for instruction | ||
| # Immediate operand out of range | ||
| fsriw t0, t1, t2, 32 # CHECK: :[[@LINE]]:19: error: immediate must be an integer in the range [0, 31] | ||
| fsriw t0, t1, t2, -1 # CHECK: :[[@LINE]]:19: error: immediate must be an integer in the range [0, 31] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # With B extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-b < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-b -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # With Bitmanip ternary extension: | ||
| # RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbt -show-encoding \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s | ||
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbt < %s \ | ||
| # RUN: | llvm-objdump --mattr=+experimental-zbt -d -r - \ | ||
| # RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s | ||
|
|
||
| # CHECK-ASM-AND-OBJ: fslw t0, t1, t2, t3 | ||
| # CHECK-ASM: encoding: [0xbb,0x12,0xc3,0x3d] | ||
| fslw t0, t1, t2, t3 | ||
| # CHECK-ASM-AND-OBJ: fsrw t0, t1, t2, t3 | ||
| # CHECK-ASM: encoding: [0xbb,0x52,0xc3,0x3d] | ||
| fsrw t0, t1, t2, t3 | ||
| # CHECK-ASM-AND-OBJ: fsriw t0, t1, t2, 0 | ||
| # CHECK-ASM: encoding: [0x9b,0x52,0x03,0x3c] | ||
| fsriw t0, t1, t2, 0 |