public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/4] RISC-V: Support ZC* extensions.
@ 2023-06-13 13:23 Jiawei
  2023-06-13 13:23 ` [PATCH 1/4] RISC-V: Minimal support of ZC extensions Jiawei
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Jiawei @ 2023-06-13 13:23 UTC (permalink / raw)
  To: binutils
  Cc: nelson, kito.cheng, palmer, christoph.muellner, jeremy.bennett,
	mary.bennett, nandni.jamnadas, charlie.keaney, simon.cook,
	tariq.kurd, ibrahim.abu.kharmeh1, gaofei, sinan.lin, wuwei2016,
	shihua, shiyulong, chenyixuan, Jiawei

RISC-V Code Size Reduction(ZC*) extensions is a group of extensions
which define subsets of the existing C extension (Zca, Zcd, Zcf) and new
extensions(Zcb, Zcmp, Zcmt) which only contain 16-bit encodings.[1]

The implementation of the RISC-V Code Size Reduction extension in GCC is
an important step towards making the RISC-V architecture more efficient.

The cooperation with OpenHW group has played a crucial role in this effort,
with facilitating the implementation, testing and validation. Currently
works can also find in OpenHW group's github repo.[2]

[1] github.com/riscv/riscv-code-size-reduction/tree/main/Zc-specification

[2] github.com/openhwgroup/corev-binutils-gdb

Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com>
Co-Authored by: Mary Bennett <mary.bennett@embecosm.com>
Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com>
Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com>
Co-Authored by: Simon Cook <simon.cook@embecosm.com>
Co-Authored by: Shihua Liao <shihua@iscas.ac.cn>
Co-Authored by: Yulong Shi <yulong@iscas.ac.cn>


 bfd/elfxx-riscv.c                             | 26 +++++++++++++++---
 gas/config/tc-riscv.c                         |  3 ++-
 gas/testsuite/gas/riscv/zc-zca-add-fail.s     |  9 +++++++
 .../gas/riscv/zc-zca-add-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-add-rv32-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-add-rv32.d     | 18 +++++++++++++
 .../gas/riscv/zc-zca-add-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-add-rv64-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-add-rv64.d     | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-add.s          |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-addi-fail.s    | 10 +++++++
 .../gas/riscv/zc-zca-addi-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-addi-rv32-fail.l         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-addi-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-addi-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-addi-rv64-fail.l         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-addi-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-addi.s         |  9 +++++++
 .../gas/riscv/zc-zca-addi16sp-fail.s          | 14 ++++++++++
 .../gas/riscv/zc-zca-addi16sp-rv32-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi16sp-rv32-fail.l     | 12 +++++++++
 .../gas/riscv/zc-zca-addi16sp-rv32.d          | 14 ++++++++++
 .../gas/riscv/zc-zca-addi16sp-rv64-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi16sp-rv64-fail.l     | 12 +++++++++
 .../gas/riscv/zc-zca-addi16sp-rv64.d          | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-addi16sp.s     |  5 ++++
 .../gas/riscv/zc-zca-addi4spn-fail.s          | 22 +++++++++++++++
 .../gas/riscv/zc-zca-addi4spn-rv32-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi4spn-rv32-fail.l     | 19 +++++++++++++
 .../gas/riscv/zc-zca-addi4spn-rv32.d          | 13 +++++++++
 .../gas/riscv/zc-zca-addi4spn-rv64-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi4spn-rv64-fail.l     | 19 +++++++++++++
 .../gas/riscv/zc-zca-addi4spn-rv64.d          | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-addi4spn.s     |  4 +++
 gas/testsuite/gas/riscv/zc-zca-addiw-fail.s   | 11 ++++++++
 .../gas/riscv/zc-zca-addiw-rv64-fail.d        |  3 +++
 .../gas/riscv/zc-zca-addiw-rv64-fail.l        | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d   | 17 ++++++++++++
 gas/testsuite/gas/riscv/zc-zca-addiw.s        |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-and-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-and-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-and-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-and-rv32.d     | 14 ++++++++++
 .../gas/riscv/zc-zca-and-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-and-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-and-rv64.d     | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-and.s          |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-andi-fail.s    | 14 ++++++++++
 .../gas/riscv/zc-zca-andi-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-andi-rv32-fail.l         | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-andi-rv32.d    | 14 ++++++++++
 .../gas/riscv/zc-zca-andi-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-andi-rv64-fail.l         | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-andi-rv64.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-andi.s         |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-beqz-fail.s    |  9 +++++++
 .../gas/riscv/zc-zca-beqz-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-beqz-rv32-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-beqz-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-beqz-rv64-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-beqz.s         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-bnez-fail.s    |  9 +++++++
 .../gas/riscv/zc-zca-bnez-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-bnez-rv32-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-bnez-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-bnez-rv64-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-bnez.s         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s  |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv32-fail.l       |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv64-fail.l       |  3 +++
 gas/testsuite/gas/riscv/zc-zca-j-fail.s       |  2 ++
 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d  |  3 +++
 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l  |  2 ++
 gas/testsuite/gas/riscv/zc-zca-j-rv32.d       | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d  |  3 +++
 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l  |  2 ++
 gas/testsuite/gas/riscv/zc-zca-j-rv64.d       | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-j.s            |  2 ++
 gas/testsuite/gas/riscv/zc-zca-jalr-fail.s    |  4 +++
 .../gas/riscv/zc-zca-jalr-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-jalr-rv32-fail.l         |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d    | 20 ++++++++++++++
 .../gas/riscv/zc-zca-jalr-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-jalr-rv64-fail.l         |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d    | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-jalr.s         | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-jr-fail.s      |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv32.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv64.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-jr.s           | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-ld-fail.s      | 26 ++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l | 23 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ld-rv64.d      | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-ld.s           |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s    | 20 ++++++++++++++
 .../gas/riscv/zc-zca-ldsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-ldsp-rv64-fail.l         | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d    | 17 ++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ldsp.s         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-li-fail.s      | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv32.d      | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv64.d      | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-li.s           |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-lui-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-lui-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-lui-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-lui-rv32.d     | 17 ++++++++++++
 .../gas/riscv/zc-zca-lui-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-lui-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-lui-rv64.d     | 17 ++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lui.s          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-lw-fail.s      | 27 +++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv32.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv64.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw.s           | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s    | 22 +++++++++++++++
 .../gas/riscv/zc-zca-lwsp-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-lwsp-rv32-fail.l         | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-lwsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-lwsp-rv64-fail.l         | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp.s         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-mv-fail.s      |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv32.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv64.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-mv.s           | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-nop-fail.s     |  9 +++++++
 .../gas/riscv/zc-zca-nop-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-nop-rv32-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-nop-rv32.d     | 15 +++++++++++
 .../gas/riscv/zc-zca-nop-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-nop-rv64-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-nop-rv64.d     | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-nop.s          |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-or-fail.s      | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv32.d      | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv64.d      | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-or.s           |  5 ++++
 .../gas/riscv/zc-zca-rv32-jal-fail.d          |  3 +++
 .../gas/riscv/zc-zca-rv32-jal-fail.l          |  2 ++
 .../gas/riscv/zc-zca-rv32-jal-fail.s          |  2 ++
 gas/testsuite/gas/riscv/zc-zca-rv32-jal.d     | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-rv32-jal.s     |  2 ++
 .../gas/riscv/zc-zca-rv64-addw-fail.d         |  3 +++
 .../gas/riscv/zc-zca-rv64-addw-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-rv64-addw-fail.s         | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-addw.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-addw.s    |  5 ++++
 .../gas/riscv/zc-zca-rv64-subw-fail.d         |  3 +++
 .../gas/riscv/zc-zca-rv64-subw-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-rv64-subw-fail.s         | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-subw.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-subw.s    |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-sd-fail.s      | 26 ++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l | 23 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sd-rv64.d      | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-sd.s           |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s    | 20 ++++++++++++++
 .../gas/riscv/zc-zca-sdsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-sdsp-rv64-fail.l         | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sdsp.s         | 10 +++++++
 .../gas/riscv/zc-zca-slli-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-slli-rv32-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-slli-rv32-fail.s         | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv32.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv32.s    | 10 +++++++
 .../gas/riscv/zc-zca-slli-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-slli-rv64-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-slli-rv64-fail.s         | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv64.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv64.s    | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-slli64-fail.s  |  4 +++
 .../gas/riscv/zc-zca-slli64-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-slli64-rv32-fail.l       |  4 +++
 gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d  | 18 +++++++++++++
 .../gas/riscv/zc-zca-slli64-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-slli64-rv64-fail.l       |  4 +++
 gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d  | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-slli64.s       |  9 +++++++
 .../gas/riscv/zc-zca-srai-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srai-rv32-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srai-rv32-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv32.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv32.s    |  5 ++++
 .../gas/riscv/zc-zca-srai-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srai-rv64-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srai-rv64-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv64.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv64.s    |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-srai64-fail.s  |  6 +++++
 .../gas/riscv/zc-zca-srai64-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srai64-rv32-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d  | 13 +++++++++
 .../gas/riscv/zc-zca-srai64-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srai64-rv64-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d  | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-srai64.s       |  4 +++
 .../gas/riscv/zc-zca-srli-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srli-rv32-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srli-rv32-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv32.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv32.s    |  5 ++++
 .../gas/riscv/zc-zca-srli-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srli-rv64-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srli-rv64-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv64.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv64.s    |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-srli64-fail.s  |  6 +++++
 .../gas/riscv/zc-zca-srli64-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srli64-rv32-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d  | 13 +++++++++
 .../gas/riscv/zc-zca-srli64-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srli64-rv64-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d  | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-srli64.s       |  4 +++
 gas/testsuite/gas/riscv/zc-zca-sub-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-sub-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-sub-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-sub-rv32.d     | 14 ++++++++++
 .../gas/riscv/zc-zca-sub-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-sub-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-sub-rv64.d     | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-sub.s          |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-sw-fail.s      | 27 +++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv32.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv64.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw.s           | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-swsp-fail.s    | 21 +++++++++++++++
 .../gas/riscv/zc-zca-swsp-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-swsp-rv32-fail.l         | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d    | 19 +++++++++++++
 .../gas/riscv/zc-zca-swsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-swsp-rv64-fail.l         | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-swsp.s         | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-unimp-fail.s   |  3 +++
 .../gas/riscv/zc-zca-unimp-rv32-fail.d        |  3 +++
 .../gas/riscv/zc-zca-unimp-rv32-fail.l        |  3 +++
 .../gas/riscv/zc-zca-unimp-rv64-fail.d        |  3 +++
 .../gas/riscv/zc-zca-unimp-rv64-fail.l        |  3 +++
 gas/testsuite/gas/riscv/zc-zca-xor-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-xor-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-xor-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-xor-rv32.d     | 14 ++++++++++
 .../gas/riscv/zc-zca-xor-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-xor-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-xor-rv64.d     | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-xor.s          |  5 ++++
 .../gas/riscv/zc-zcd-fld-fsd-fail-march.d     |  3 +++
 .../gas/riscv/zc-zcd-fld-fsd-fail-march.l     | 13 +++++++++
 .../gas/riscv/zc-zcd-fld-fsd-fail-march.s     | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zcd-fld.d          | 16 +++++++++++
 gas/testsuite/gas/riscv/zc-zcd-fld.s          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zcd-fsd.d          | 16 +++++++++++
 gas/testsuite/gas/riscv/zc-zcd-fsd.s          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zcf-flw-32.d       | 16 +++++++++++
 .../gas/riscv/zc-zcf-flw-fsw-fail-march.d     |  3 +++
 .../gas/riscv/zc-zcf-flw-fsw-fail-march.l     | 13 +++++++++
 .../gas/riscv/zc-zcf-flw-fsw-fail-march.s     | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zcf-flw.s          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zcf-fsw-32.d       | 16 +++++++++++
 gas/testsuite/gas/riscv/zc-zcf-fsw.s          |  8 ++++++
 296 files changed, 2986 insertions(+), 4 deletions(-)
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fsd.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fsd.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-fsw-32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-fsw.s

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/4] RISC-V: Minimal support of ZC extensions.
  2023-06-13 13:23 [PATCH 0/4] RISC-V: Support ZC* extensions Jiawei
@ 2023-06-13 13:23 ` Jiawei
  2023-06-16  3:58   ` Nelson Chu
  2023-06-13 13:23 ` [PATCH 2/4] RISC-V: Add Zca extension testcases Jiawei
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Jiawei @ 2023-06-13 13:23 UTC (permalink / raw)
  To: binutils
  Cc: nelson, kito.cheng, palmer, christoph.muellner, jeremy.bennett,
	mary.bennett, nandni.jamnadas, charlie.keaney, simon.cook,
	tariq.kurd, ibrahim.abu.kharmeh1, gaofei, sinan.lin, wuwei2016,
	shihua, shiyulong, chenyixuan, Jiawei

This patch add all ZC* extension base support, and enable compress
feature when Zca extension enabled.

Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com>
Co-Authored by: Mary Bennett <mary.bennett@embecosm.com>
Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com>
Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com>
Co-Authored by: Simon Cook <simon.cook@embecosm.com>
Co-Authored by: Shihua Liao <shihua@iscas.ac.cn>
Co-Authored by: Yulong Shi <yulong@iscas.ac.cn>

bfd/ChangeLog:

        * elfxx-riscv.c (riscv_multi_subset_supports): New extensions.

gas/ChangeLog:

        * config/tc-riscv.c (riscv_set_arch): Extend compress check.

---
 bfd/elfxx-riscv.c     | 26 +++++++++++++++++++++++---
 gas/config/tc-riscv.c |  3 ++-
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 7f453246449..4a7407b8a34 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1155,6 +1155,16 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
   {"zks", "zbkx",	check_implicit_always},
   {"zks", "zksed",	check_implicit_always},
   {"zks", "zksh",	check_implicit_always},
+  {"zce", "zca",	check_implicit_always},
+  {"zce", "zcb",	check_implicit_always},
+  {"zce", "zcf",        check_implicit_always},
+  {"zce", "zcmp",	check_implicit_always},
+  {"zce", "zcmt",	check_implicit_always},
+  {"zcf", "zca",	check_implicit_always},
+  {"zcd", "zca",	check_implicit_always},
+  {"zcb", "zca",	check_implicit_always},
+  {"zcmp", "zca",	check_implicit_always},
+  {"zcmt", "zca",	check_implicit_always},
   {"smaia", "ssaia",		check_implicit_always},
   {"smstateen", "ssstateen",	check_implicit_always},
   {"smepmp", "zicsr",		check_implicit_always},
@@ -1272,6 +1282,13 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
   {"zvl32768b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
   {"zvl65536b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
   {"ztso",		ISA_SPEC_CLASS_DRAFT,		0, 1,  0 },
+  {"zca",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zce",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcf",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcd",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcmp",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcmt",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
   {NULL, 0, 0, 0, 0}
 };
 
@@ -2335,13 +2352,16 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps,
     case INSN_CLASS_Q:
       return riscv_subset_supports (rps, "q");
     case INSN_CLASS_C:
-      return riscv_subset_supports (rps, "c");
+      return riscv_subset_supports (rps, "c")
+		|| riscv_subset_supports (rps, "zca");
     case INSN_CLASS_F_AND_C:
       return (riscv_subset_supports (rps, "f")
-	      && riscv_subset_supports (rps, "c"));
+	      && (riscv_subset_supports (rps, "c")
+		  || riscv_subset_supports (rps, "zcf")));
     case INSN_CLASS_D_AND_C:
       return (riscv_subset_supports (rps, "d")
-	      && riscv_subset_supports (rps, "c"));
+	      && (riscv_subset_supports (rps, "c")
+		  || riscv_subset_supports (rps, "zcd")));
     case INSN_CLASS_F_INX:
       return (riscv_subset_supports (rps, "f")
 	      || riscv_subset_supports (rps, "zfinx"));
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 7684fa7e06d..1d3860b332f 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -337,7 +337,8 @@ riscv_set_arch (const char *s)
   riscv_reset_subsets_list_arch_str ();
 
   riscv_set_rvc (false);
-  if (riscv_subset_supports (&riscv_rps_as, "c"))
+  if (riscv_subset_supports (&riscv_rps_as, "c")
+      || riscv_subset_supports (&riscv_rps_as, "zca"))
     riscv_set_rvc (true);
 
   if (riscv_subset_supports (&riscv_rps_as, "ztso"))
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/4] RISC-V: Add Zca extension testcases.
  2023-06-13 13:23 [PATCH 0/4] RISC-V: Support ZC* extensions Jiawei
  2023-06-13 13:23 ` [PATCH 1/4] RISC-V: Minimal support of ZC extensions Jiawei
@ 2023-06-13 13:23 ` Jiawei
  2023-06-13 13:23 ` [PATCH 3/4] RISC-V: Add Zcf " Jiawei
  2023-06-13 13:23 ` [PATCH 4/4] RISC-V: Add Zcd " Jiawei
  3 siblings, 0 replies; 6+ messages in thread
From: Jiawei @ 2023-06-13 13:23 UTC (permalink / raw)
  To: binutils
  Cc: nelson, kito.cheng, palmer, christoph.muellner, jeremy.bennett,
	mary.bennett, nandni.jamnadas, charlie.keaney, simon.cook,
	tariq.kurd, ibrahim.abu.kharmeh1, gaofei, sinan.lin, wuwei2016,
	shihua, shiyulong, chenyixuan, Jiawei

Zca is a sub-extension of C extension, this patch add testcases to check
if compress instrunctions generate correct when zca extension enabled.

Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com>
Co-Authored by: Mary Bennett <mary.bennett@embecosm.com>
Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com>
Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com>
Co-Authored by: Simon Cook <simon.cook@embecosm.com>
Co-Authored by: Shihua Liao <shihua@iscas.ac.cn>
Co-Authored by: Yulong Shi <yulong@iscas.ac.cn>

gas/ChangeLog:

        * testsuite/gas/riscv/zc-zca-add-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-add-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-add-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-add-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-add-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-add-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-add-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-add.s: New test.
        * testsuite/gas/riscv/zc-zca-addi-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-addi-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addi-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addi-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-addi-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addi-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addi-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-addi.s: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-addi16sp.s: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-addi4spn.s: New test.
        * testsuite/gas/riscv/zc-zca-addiw-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-addiw-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-addiw-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-addiw-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-addiw.s: New test.
        * testsuite/gas/riscv/zc-zca-and-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-and-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-and-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-and-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-and-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-and-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-and-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-and.s: New test.
        * testsuite/gas/riscv/zc-zca-andi-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-andi-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-andi-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-andi-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-andi-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-andi-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-andi-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-andi.s: New test.
        * testsuite/gas/riscv/zc-zca-beqz-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-beqz-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-beqz-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-beqz-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-beqz-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-beqz-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-beqz-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-beqz.s: New test.
        * testsuite/gas/riscv/zc-zca-bnez-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-bnez-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-bnez-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-bnez-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-bnez-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-bnez-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-bnez-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-bnez.s: New test.
        * testsuite/gas/riscv/zc-zca-ebreak-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-j-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-j-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-j-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-j-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-j-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-j-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-j-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-j.s: New test.
        * testsuite/gas/riscv/zc-zca-jalr-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-jalr-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-jalr-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-jalr-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-jalr-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-jalr-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-jalr-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-jalr.s: New test.
        * testsuite/gas/riscv/zc-zca-jr-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-jr-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-jr-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-jr-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-jr-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-jr-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-jr-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-jr.s: New test.
        * testsuite/gas/riscv/zc-zca-ld-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-ld-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-ld-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-ld-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-ld.s: New test.
        * testsuite/gas/riscv/zc-zca-ldsp-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-ldsp-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-ldsp.s: New test.
        * testsuite/gas/riscv/zc-zca-li-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-li-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-li-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-li-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-li-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-li-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-li-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-li.s: New test.
        * testsuite/gas/riscv/zc-zca-lui-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-lui-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-lui-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-lui-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-lui-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-lui-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-lui-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-lui.s: New test.
        * testsuite/gas/riscv/zc-zca-lw-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-lw-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-lw-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-lw-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-lw-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-lw-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-lw-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-lw.s: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-lwsp-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-lwsp.s: New test.
        * testsuite/gas/riscv/zc-zca-mv-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-mv-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-mv-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-mv-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-mv-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-mv-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-mv-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-mv.s: New test.
        * testsuite/gas/riscv/zc-zca-nop-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-nop-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-nop-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-nop-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-nop-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-nop-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-nop-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-nop.s: New test.
        * testsuite/gas/riscv/zc-zca-or-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-or-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-or-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-or-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-or-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-or-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-or-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-or.s: New test.
        * testsuite/gas/riscv/zc-zca-rv32-jal-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-rv32-jal-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-rv32-jal-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-rv32-jal.d: New test.
        * testsuite/gas/riscv/zc-zca-rv32-jal.s: New test.
        * testsuite/gas/riscv/zc-zca-rv64-addw-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-rv64-addw-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-rv64-addw-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-rv64-addw.d: New test.
        * testsuite/gas/riscv/zc-zca-rv64-addw.s: New test.
        * testsuite/gas/riscv/zc-zca-rv64-subw-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-rv64-subw-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-rv64-subw-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-rv64-subw.d: New test.
        * testsuite/gas/riscv/zc-zca-rv64-subw.s: New test.
        * testsuite/gas/riscv/zc-zca-sd-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-sd-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-sd-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-sd-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-sd.s: New test.
        * testsuite/gas/riscv/zc-zca-sdsp-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-sdsp-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-sdsp.s: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv32-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv32.s: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv64-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-slli-rv64.s: New test.
        * testsuite/gas/riscv/zc-zca-slli64-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-slli64-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-slli64-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-slli64-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-slli64-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-slli64-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-slli64-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-slli64.s: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv32-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv32.s: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv64-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-srai-rv64.s: New test.
        * testsuite/gas/riscv/zc-zca-srai64-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-srai64-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srai64-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srai64-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-srai64-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srai64-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srai64-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-srai64.s: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv32-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv32.s: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv64-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-srli-rv64.s: New test.
        * testsuite/gas/riscv/zc-zca-srli64-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-srli64-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srli64-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srli64-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-srli64-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-srli64-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-srli64-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-srli64.s: New test.
        * testsuite/gas/riscv/zc-zca-sub-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-sub-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-sub-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-sub-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-sub-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-sub-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-sub-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-sub.s: New test.
        * testsuite/gas/riscv/zc-zca-sw-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-sw-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-sw-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-sw-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-sw-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-sw-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-sw-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-sw.s: New test.
        * testsuite/gas/riscv/zc-zca-swsp-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-swsp-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-swsp-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-swsp-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-swsp-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-swsp-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-swsp-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-swsp.s: New test.
        * testsuite/gas/riscv/zc-zca-unimp-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-unimp-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-unimp-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-unimp-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-unimp-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-xor-fail.s: New test.
        * testsuite/gas/riscv/zc-zca-xor-rv32-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-xor-rv32-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-xor-rv32.d: New test.
        * testsuite/gas/riscv/zc-zca-xor-rv64-fail.d: New test.
        * testsuite/gas/riscv/zc-zca-xor-rv64-fail.l: New test.
        * testsuite/gas/riscv/zc-zca-xor-rv64.d: New test.
        * testsuite/gas/riscv/zc-zca-xor.s: New test.

---
 gas/testsuite/gas/riscv/zc-zca-add-fail.s     |  9 +++++++
 .../gas/riscv/zc-zca-add-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-add-rv32-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-add-rv32.d     | 18 +++++++++++++
 .../gas/riscv/zc-zca-add-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-add-rv64-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-add-rv64.d     | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-add.s          |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-addi-fail.s    | 10 +++++++
 .../gas/riscv/zc-zca-addi-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-addi-rv32-fail.l         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-addi-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-addi-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-addi-rv64-fail.l         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-addi-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-addi.s         |  9 +++++++
 .../gas/riscv/zc-zca-addi16sp-fail.s          | 14 ++++++++++
 .../gas/riscv/zc-zca-addi16sp-rv32-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi16sp-rv32-fail.l     | 12 +++++++++
 .../gas/riscv/zc-zca-addi16sp-rv32.d          | 14 ++++++++++
 .../gas/riscv/zc-zca-addi16sp-rv64-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi16sp-rv64-fail.l     | 12 +++++++++
 .../gas/riscv/zc-zca-addi16sp-rv64.d          | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-addi16sp.s     |  5 ++++
 .../gas/riscv/zc-zca-addi4spn-fail.s          | 22 +++++++++++++++
 .../gas/riscv/zc-zca-addi4spn-rv32-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi4spn-rv32-fail.l     | 19 +++++++++++++
 .../gas/riscv/zc-zca-addi4spn-rv32.d          | 13 +++++++++
 .../gas/riscv/zc-zca-addi4spn-rv64-fail.d     |  3 +++
 .../gas/riscv/zc-zca-addi4spn-rv64-fail.l     | 19 +++++++++++++
 .../gas/riscv/zc-zca-addi4spn-rv64.d          | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-addi4spn.s     |  4 +++
 gas/testsuite/gas/riscv/zc-zca-addiw-fail.s   | 11 ++++++++
 .../gas/riscv/zc-zca-addiw-rv64-fail.d        |  3 +++
 .../gas/riscv/zc-zca-addiw-rv64-fail.l        | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d   | 17 ++++++++++++
 gas/testsuite/gas/riscv/zc-zca-addiw.s        |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-and-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-and-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-and-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-and-rv32.d     | 14 ++++++++++
 .../gas/riscv/zc-zca-and-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-and-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-and-rv64.d     | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-and.s          |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-andi-fail.s    | 14 ++++++++++
 .../gas/riscv/zc-zca-andi-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-andi-rv32-fail.l         | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-andi-rv32.d    | 14 ++++++++++
 .../gas/riscv/zc-zca-andi-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-andi-rv64-fail.l         | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-andi-rv64.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-andi.s         |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-beqz-fail.s    |  9 +++++++
 .../gas/riscv/zc-zca-beqz-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-beqz-rv32-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-beqz-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-beqz-rv64-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-beqz.s         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-bnez-fail.s    |  9 +++++++
 .../gas/riscv/zc-zca-bnez-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-bnez-rv32-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-bnez-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-bnez-rv64-fail.l         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-bnez.s         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s  |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv32-fail.l       |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-ebreak-rv64-fail.l       |  3 +++
 gas/testsuite/gas/riscv/zc-zca-j-fail.s       |  2 ++
 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d  |  3 +++
 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l  |  2 ++
 gas/testsuite/gas/riscv/zc-zca-j-rv32.d       | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d  |  3 +++
 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l  |  2 ++
 gas/testsuite/gas/riscv/zc-zca-j-rv64.d       | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-j.s            |  2 ++
 gas/testsuite/gas/riscv/zc-zca-jalr-fail.s    |  4 +++
 .../gas/riscv/zc-zca-jalr-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-jalr-rv32-fail.l         |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d    | 20 ++++++++++++++
 .../gas/riscv/zc-zca-jalr-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-jalr-rv64-fail.l         |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d    | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-jalr.s         | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-jr-fail.s      |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv32.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l |  4 +++
 gas/testsuite/gas/riscv/zc-zca-jr-rv64.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-jr.s           | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-ld-fail.s      | 26 ++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l | 23 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ld-rv64.d      | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-ld.s           |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s    | 20 ++++++++++++++
 .../gas/riscv/zc-zca-ldsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-ldsp-rv64-fail.l         | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d    | 17 ++++++++++++
 gas/testsuite/gas/riscv/zc-zca-ldsp.s         |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-li-fail.s      | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv32.d      | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-li-rv64.d      | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-li.s           |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-lui-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-lui-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-lui-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-lui-rv32.d     | 17 ++++++++++++
 .../gas/riscv/zc-zca-lui-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-lui-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-lui-rv64.d     | 17 ++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lui.s          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-lw-fail.s      | 27 +++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv32.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw-rv64.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lw.s           | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s    | 22 +++++++++++++++
 .../gas/riscv/zc-zca-lwsp-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-lwsp-rv32-fail.l         | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d    | 18 +++++++++++++
 .../gas/riscv/zc-zca-lwsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-lwsp-rv64-fail.l         | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d    | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-lwsp.s         |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-mv-fail.s      |  9 +++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv32.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-mv-rv64.d      | 20 ++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-mv.s           | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-nop-fail.s     |  9 +++++++
 .../gas/riscv/zc-zca-nop-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-nop-rv32-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-nop-rv32.d     | 15 +++++++++++
 .../gas/riscv/zc-zca-nop-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-nop-rv64-fail.l          |  8 ++++++
 gas/testsuite/gas/riscv/zc-zca-nop-rv64.d     | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-nop.s          |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-or-fail.s      | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv32.d      | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-or-rv64.d      | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-or.s           |  5 ++++
 .../gas/riscv/zc-zca-rv32-jal-fail.d          |  3 +++
 .../gas/riscv/zc-zca-rv32-jal-fail.l          |  2 ++
 .../gas/riscv/zc-zca-rv32-jal-fail.s          |  2 ++
 gas/testsuite/gas/riscv/zc-zca-rv32-jal.d     | 11 ++++++++
 gas/testsuite/gas/riscv/zc-zca-rv32-jal.s     |  2 ++
 .../gas/riscv/zc-zca-rv64-addw-fail.d         |  3 +++
 .../gas/riscv/zc-zca-rv64-addw-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-rv64-addw-fail.s         | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-addw.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-addw.s    |  5 ++++
 .../gas/riscv/zc-zca-rv64-subw-fail.d         |  3 +++
 .../gas/riscv/zc-zca-rv64-subw-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-rv64-subw-fail.s         | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-subw.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-rv64-subw.s    |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-sd-fail.s      | 26 ++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l | 23 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sd-rv64.d      | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-sd.s           |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s    | 20 ++++++++++++++
 .../gas/riscv/zc-zca-sdsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-sdsp-rv64-fail.l         | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sdsp.s         | 10 +++++++
 .../gas/riscv/zc-zca-slli-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-slli-rv32-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-slli-rv32-fail.s         | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv32.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv32.s    | 10 +++++++
 .../gas/riscv/zc-zca-slli-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-slli-rv64-fail.l         | 12 +++++++++
 .../gas/riscv/zc-zca-slli-rv64-fail.s         | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv64.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-slli-rv64.s    | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-slli64-fail.s  |  4 +++
 .../gas/riscv/zc-zca-slli64-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-slli64-rv32-fail.l       |  4 +++
 gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d  | 18 +++++++++++++
 .../gas/riscv/zc-zca-slli64-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-slli64-rv64-fail.l       |  4 +++
 gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d  | 18 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-slli64.s       |  9 +++++++
 .../gas/riscv/zc-zca-srai-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srai-rv32-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srai-rv32-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv32.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv32.s    |  5 ++++
 .../gas/riscv/zc-zca-srai-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srai-rv64-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srai-rv64-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv64.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srai-rv64.s    |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-srai64-fail.s  |  6 +++++
 .../gas/riscv/zc-zca-srai64-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srai64-rv32-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d  | 13 +++++++++
 .../gas/riscv/zc-zca-srai64-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srai64-rv64-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d  | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-srai64.s       |  4 +++
 .../gas/riscv/zc-zca-srli-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srli-rv32-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srli-rv32-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv32.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv32.s    |  5 ++++
 .../gas/riscv/zc-zca-srli-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-srli-rv64-fail.l         | 14 ++++++++++
 .../gas/riscv/zc-zca-srli-rv64-fail.s         | 15 +++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv64.d    | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-srli-rv64.s    |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-srli64-fail.s  |  6 +++++
 .../gas/riscv/zc-zca-srli64-rv32-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srli64-rv32-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d  | 13 +++++++++
 .../gas/riscv/zc-zca-srli64-rv64-fail.d       |  3 +++
 .../gas/riscv/zc-zca-srli64-rv64-fail.l       |  6 +++++
 gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d  | 13 +++++++++
 gas/testsuite/gas/riscv/zc-zca-srli64.s       |  4 +++
 gas/testsuite/gas/riscv/zc-zca-sub-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-sub-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-sub-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-sub-rv32.d     | 14 ++++++++++
 .../gas/riscv/zc-zca-sub-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-sub-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-sub-rv64.d     | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-sub.s          |  5 ++++
 gas/testsuite/gas/riscv/zc-zca-sw-fail.s      | 27 +++++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv32.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d |  3 +++
 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l | 24 +++++++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw-rv64.d      | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-sw.s           | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-swsp-fail.s    | 21 +++++++++++++++
 .../gas/riscv/zc-zca-swsp-rv32-fail.d         |  3 +++
 .../gas/riscv/zc-zca-swsp-rv32-fail.l         | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d    | 19 +++++++++++++
 .../gas/riscv/zc-zca-swsp-rv64-fail.d         |  3 +++
 .../gas/riscv/zc-zca-swsp-rv64-fail.l         | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d    | 19 +++++++++++++
 gas/testsuite/gas/riscv/zc-zca-swsp.s         | 10 +++++++
 gas/testsuite/gas/riscv/zc-zca-unimp-fail.s   |  3 +++
 .../gas/riscv/zc-zca-unimp-rv32-fail.d        |  3 +++
 .../gas/riscv/zc-zca-unimp-rv32-fail.l        |  3 +++
 .../gas/riscv/zc-zca-unimp-rv64-fail.d        |  3 +++
 .../gas/riscv/zc-zca-unimp-rv64-fail.l        |  3 +++
 gas/testsuite/gas/riscv/zc-zca-xor-fail.s     | 14 ++++++++++
 .../gas/riscv/zc-zca-xor-rv32-fail.d          |  3 +++
 .../gas/riscv/zc-zca-xor-rv32-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-xor-rv32.d     | 14 ++++++++++
 .../gas/riscv/zc-zca-xor-rv64-fail.d          |  3 +++
 .../gas/riscv/zc-zca-xor-rv64-fail.l          | 12 +++++++++
 gas/testsuite/gas/riscv/zc-zca-xor-rv64.d     | 14 ++++++++++
 gas/testsuite/gas/riscv/zc-zca-xor.s          |  5 ++++
 280 files changed, 2803 insertions(+)
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-add.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi16sp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addi4spn.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-addiw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-and.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-andi.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-beqz.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-bnez.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-j.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jalr.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-jr.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ld.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-ldsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-li.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lui.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-lwsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-mv.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-nop.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-or.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv32-jal.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-addw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-rv64-subw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sd.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sdsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv32.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli-rv64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-slli64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv32.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai-rv64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srai64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv32.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli-rv64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-srli64.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sub.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-sw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-swsp.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-fail.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor-rv64.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zca-xor.s

diff --git a/gas/testsuite/gas/riscv/zc-zca-add-fail.s b/gas/testsuite/gas/riscv/zc-zca-add-fail.s
new file mode 100644
index 00000000000..20f8d94e3ae
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-fail.s
@@ -0,0 +1,9 @@
+target:
+    c.add
+    c.add , x1
+    c.add x1,
+
+    c.add x0, x0
+    c.add 1, x1
+    c.add x1, x0
+    c.add x1, 0
diff --git a/gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.d
new file mode 100644
index 00000000000..619b61edc12
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-add-fail.s
+#error_output: zc-zca-add-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.l
new file mode 100644
index 00000000000..6518d9d9728
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-rv32-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.add'
+.*: Error: illegal operands `c.add ,x1'
+.*: Error: illegal operands `c.add x1,'
+.*: Error: illegal operands `c.add x0,x0'
+.*: Error: illegal operands `c.add 1,x1'
+.*: Error: illegal operands `c.add x1,x0'
+.*: Error: illegal operands `c.add x1,0'
diff --git a/gas/testsuite/gas/riscv/zc-zca-add-rv32.d b/gas/testsuite/gas/riscv/zc-zca-add-rv32.d
new file mode 100644
index 00000000000..b5663f14064
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-add.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+908a[ 	]+c.add[ 	]+ra,sp
+[ 	]+2:[ 	]+910e[ 	]+c.add[ 	]+sp,gp
+[ 	]+4:[ 	]+9192[ 	]+c.add[ 	]+gp,tp
+[ 	]+6:[ 	]+9226[ 	]+c.add[ 	]+tp,s1
+[ 	]+8:[ 	]+94a6[ 	]+c.add[ 	]+s1,s1
+[ 	]+a:[ 	]+957e[ 	]+c.add[ 	]+a0,t6
+[ 	]+c:[ 	]+9faa[ 	]+c.add[ 	]+t6,a0
+[ 	]+e:[ 	]+907e[ 	]+c.add[ 	]+zero,t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.d
new file mode 100644
index 00000000000..8074ed84486
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-add-fail.s
+#error_output: zc-zca-add-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.l
new file mode 100644
index 00000000000..6518d9d9728
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-rv64-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.add'
+.*: Error: illegal operands `c.add ,x1'
+.*: Error: illegal operands `c.add x1,'
+.*: Error: illegal operands `c.add x0,x0'
+.*: Error: illegal operands `c.add 1,x1'
+.*: Error: illegal operands `c.add x1,x0'
+.*: Error: illegal operands `c.add x1,0'
diff --git a/gas/testsuite/gas/riscv/zc-zca-add-rv64.d b/gas/testsuite/gas/riscv/zc-zca-add-rv64.d
new file mode 100644
index 00000000000..9ffaaff43d5
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-add.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+908a[ 	]+c.add[ 	]+ra,sp
+[ 	]+2:[ 	]+910e[ 	]+c.add[ 	]+sp,gp
+[ 	]+4:[ 	]+9192[ 	]+c.add[ 	]+gp,tp
+[ 	]+6:[ 	]+9226[ 	]+c.add[ 	]+tp,s1
+[ 	]+8:[ 	]+94a6[ 	]+c.add[ 	]+s1,s1
+[ 	]+a:[ 	]+957e[ 	]+c.add[ 	]+a0,t6
+[ 	]+c:[ 	]+9faa[ 	]+c.add[ 	]+t6,a0
+[ 	]+e:[ 	]+907e[ 	]+c.add[ 	]+zero,t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-add.s b/gas/testsuite/gas/riscv/zc-zca-add.s
new file mode 100644
index 00000000000..dcb1922f4d8
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-add.s
@@ -0,0 +1,9 @@
+target:
+    c.add x1, x2
+    c.add x2, x3
+    c.add x3, x4
+    c.add x4, x9
+    c.add x9, x9
+    c.add x10, x31
+    c.add x31, x10
+    c.add x0, x31
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-fail.s b/gas/testsuite/gas/riscv/zc-zca-addi-fail.s
new file mode 100644
index 00000000000..13c72c5472b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-fail.s
@@ -0,0 +1,10 @@
+target:
+    c.addi
+    c.addi , 0
+    c.addi x1,
+
+    c.addi 1, 0
+    c.addi x1, -33
+    c.addi x1, 32
+    c.addi x1, 0.0
+    c.addi x1, x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.d
new file mode 100644
index 00000000000..789bd87d014
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-addi-fail.s
+#error_output: zc-zca-addi-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.l
new file mode 100644
index 00000000000..e907574d9db
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-rv32-fail.l
@@ -0,0 +1,9 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addi'
+.*: Error: illegal operands `c.addi ,0'
+.*: Error: illegal operands `c.addi x1,'
+.*: Error: illegal operands `c.addi 1,0'
+.*: Error: illegal operands `c.addi x1,-33'
+.*: Error: illegal operands `c.addi x1,32'
+.*: Error: illegal operands `c.addi x1,0.0'
+.*: Error: illegal operands `c.addi x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-rv32.d b/gas/testsuite/gas/riscv/zc-zca-addi-rv32.d
new file mode 100644
index 00000000000..e58501fb730
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-addi.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+1081[ 	]+c.addi[ 	]+ra,-32
+[ 	]+2:[ 	]+0101[ 	]+c.addi[ 	]+sp,0
+[ 	]+4:[ 	]+01fd[ 	]+c.addi[ 	]+gp,31
+[ 	]+6:[ 	]+1245[ 	]+c.addi[ 	]+tp,-15+.*
+[ 	]+8:[ 	]+14fd[ 	]+c.addi[ 	]+s1,-1
+[ 	]+a:[ 	]+0505[ 	]+c.addi[ 	]+a0,1
+[ 	]+c:[ 	]+0fc1[ 	]+c.addi[ 	]+t6,16
+[ 	]+e:[ 	]+0051[ 	]+c.addi[ 	]+zero,20
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.d
new file mode 100644
index 00000000000..e1d75e3c366
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addi-fail.s
+#error_output: zc-zca-addi-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.l
new file mode 100644
index 00000000000..e907574d9db
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-rv64-fail.l
@@ -0,0 +1,9 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addi'
+.*: Error: illegal operands `c.addi ,0'
+.*: Error: illegal operands `c.addi x1,'
+.*: Error: illegal operands `c.addi 1,0'
+.*: Error: illegal operands `c.addi x1,-33'
+.*: Error: illegal operands `c.addi x1,32'
+.*: Error: illegal operands `c.addi x1,0.0'
+.*: Error: illegal operands `c.addi x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi-rv64.d b/gas/testsuite/gas/riscv/zc-zca-addi-rv64.d
new file mode 100644
index 00000000000..0870ff9080e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addi.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+1081[ 	]+c.addi[ 	]+ra,-32
+[ 	]+2:[ 	]+0101[ 	]+c.addi[ 	]+sp,0
+[ 	]+4:[ 	]+01fd[ 	]+c.addi[ 	]+gp,31
+[ 	]+6:[ 	]+1245[ 	]+c.addi[ 	]+tp,-15+.*
+[ 	]+8:[ 	]+14fd[ 	]+c.addi[ 	]+s1,-1
+[ 	]+a:[ 	]+0505[ 	]+c.addi[ 	]+a0,1
+[ 	]+c:[ 	]+0fc1[ 	]+c.addi[ 	]+t6,16
+[ 	]+e:[ 	]+0051[ 	]+c.addi[ 	]+zero,20
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi.s b/gas/testsuite/gas/riscv/zc-zca-addi.s
new file mode 100644
index 00000000000..e1770bde6c3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi.s
@@ -0,0 +1,9 @@
+target:
+    c.addi x1, -32
+    c.addi x2, 0
+    c.addi x3, 31
+    c.addi x4, -15
+    c.addi x9, -1
+    c.addi x10, 1
+    c.addi x31, 16
+    c.addi x0, 20
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-fail.s b/gas/testsuite/gas/riscv/zc-zca-addi16sp-fail.s
new file mode 100644
index 00000000000..7bd514b3d20
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.addi16sp
+    c.addi16sp ,
+    c.addi16sp , 16
+    c.addi16sp x2,
+
+    c.addi16sp x1, 16
+    c.addi16sp 16, 16
+
+    c.addi16sp x2, 0
+    c.addi16sp x2, 497
+    c.addi16sp x2, -513
+    c.addi16sp x2, 16.0
+    c.addi16sp x2, x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.d
new file mode 100644
index 00000000000..3e2de3528ea
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-addi16sp-fail.s
+#error_output: zc-zca-addi16sp-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.l
new file mode 100644
index 00000000000..93b1897daa9
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addi16sp'
+.*: Error: illegal operands `c.addi16sp ,'
+.*: Error: illegal operands `c.addi16sp ,16'
+.*: Error: illegal operands `c.addi16sp x2,'
+.*: Error: illegal operands `c.addi16sp x1,16'
+.*: Error: illegal operands `c.addi16sp 16,16'
+.*: Error: illegal operands `c.addi16sp x2,0'
+.*: Error: illegal operands `c.addi16sp x2,497'
+.*: Error: illegal operands `c.addi16sp x2,-513'
+.*: Error: illegal operands `c.addi16sp x2,16.0'
+.*: Error: illegal operands `c.addi16sp x2,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32.d b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32.d
new file mode 100644
index 00000000000..954c3ea035e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-addi16sp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6105[ 	]+c.addi16sp[ 	]+sp,32
+[ 	]+2:[ 	]+713d[ 	]+c.addi16sp[ 	]+sp,-32
+[ 	]+4:[ 	]+617d[ 	]+c.addi16sp[ 	]+sp,496
+[ 	]+6:[ 	]+7101[ 	]+c.addi16sp[ 	]+sp,-512
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.d
new file mode 100644
index 00000000000..5ccade3f14f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addi16sp-fail.s
+#error_output: zc-zca-addi16sp-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.l
new file mode 100644
index 00000000000..93b1897daa9
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addi16sp'
+.*: Error: illegal operands `c.addi16sp ,'
+.*: Error: illegal operands `c.addi16sp ,16'
+.*: Error: illegal operands `c.addi16sp x2,'
+.*: Error: illegal operands `c.addi16sp x1,16'
+.*: Error: illegal operands `c.addi16sp 16,16'
+.*: Error: illegal operands `c.addi16sp x2,0'
+.*: Error: illegal operands `c.addi16sp x2,497'
+.*: Error: illegal operands `c.addi16sp x2,-513'
+.*: Error: illegal operands `c.addi16sp x2,16.0'
+.*: Error: illegal operands `c.addi16sp x2,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64.d b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64.d
new file mode 100644
index 00000000000..cbca0196fe7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addi16sp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6105[ 	]+c.addi16sp[ 	]+sp,32
+[ 	]+2:[ 	]+713d[ 	]+c.addi16sp[ 	]+sp,-32
+[ 	]+4:[ 	]+617d[ 	]+c.addi16sp[ 	]+sp,496
+[ 	]+6:[ 	]+7101[ 	]+c.addi16sp[ 	]+sp,-512
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi16sp.s b/gas/testsuite/gas/riscv/zc-zca-addi16sp.s
new file mode 100644
index 00000000000..25e9d8d1525
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi16sp.s
@@ -0,0 +1,5 @@
+target:
+    c.addi16sp x2, 32
+    c.addi16sp x2, -32
+    c.addi16sp x2, 496
+    c.addi16sp x2,-512
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-fail.s b/gas/testsuite/gas/riscv/zc-zca-addi4spn-fail.s
new file mode 100644
index 00000000000..46df79d5ad2
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-fail.s
@@ -0,0 +1,22 @@
+target:
+    c.addi4spn
+    c.addi4spn , ,
+    c.addi4spn , x2, 4
+    c.addi4spn x8, , 4
+    c.addi4spn x8, x2,
+
+    c.addi4spn x7, x2, 4
+    c.addi4spn x16, x2, 4
+    c.addi4spn 4, x2, 4
+
+    c.addi4spn x8, x1, 4
+    c.addi4spn x8, 4, 4
+    c.addi4spn x8, x3, 4
+
+    c.addi4spn x8, x2, 0
+    c.addi4spn x8, x2, 3
+    c.addi4spn x8, x2, 4.0
+    c.addi4spn x8, x2, 5
+    c.addi4spn x8, x2, 1023
+    c.addi4spn x8, x2, 1024
+    c.addi4spn x8, x2, x9
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.d
new file mode 100644
index 00000000000..7c193bf61a7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-addi4spn-fail.s
+#error_output: zc-zca-addi4spn-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.l
new file mode 100644
index 00000000000..bb377a43039
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32-fail.l
@@ -0,0 +1,19 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addi4spn'
+.*: Error: illegal operands `c.addi4spn ,,'
+.*: Error: illegal operands `c.addi4spn ,x2,4'
+.*: Error: illegal operands `c.addi4spn x8,,4'
+.*: Error: illegal operands `c.addi4spn x8,x2,'
+.*: Error: illegal operands `c.addi4spn x7,x2,4'
+.*: Error: illegal operands `c.addi4spn x16,x2,4'
+.*: Error: illegal operands `c.addi4spn 4,x2,4'
+.*: Error: illegal operands `c.addi4spn x8,x1,4'
+.*: Error: illegal operands `c.addi4spn x8,4,4'
+.*: Error: illegal operands `c.addi4spn x8,x3,4'
+.*: Error: illegal operands `c.addi4spn x8,x2,0'
+.*: Error: illegal operands `c.addi4spn x8,x2,3'
+.*: Error: illegal operands `c.addi4spn x8,x2,4.0'
+.*: Error: illegal operands `c.addi4spn x8,x2,5'
+.*: Error: illegal operands `c.addi4spn x8,x2,1023'
+.*: Error: illegal operands `c.addi4spn x8,x2,1024'
+.*: Error: illegal operands `c.addi4spn x8,x2,x9'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32.d b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32.d
new file mode 100644
index 00000000000..f9536b26db4
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv32.d
@@ -0,0 +1,13 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-addi4spn.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0040[ 	]+c.addi4spn[ 	]+s0,sp,4
+[ 	]+2:[ 	]+1888[ 	]+c.addi4spn[ 	]+a0,sp,112
+[ 	]+4:[ 	]+1ffc[ 	]+c.addi4spn[ 	]+a5,sp,1020
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.d
new file mode 100644
index 00000000000..86b486b0392
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addi4spn-fail.s
+#error_output: zc-zca-addi4spn-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.l
new file mode 100644
index 00000000000..bb377a43039
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64-fail.l
@@ -0,0 +1,19 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addi4spn'
+.*: Error: illegal operands `c.addi4spn ,,'
+.*: Error: illegal operands `c.addi4spn ,x2,4'
+.*: Error: illegal operands `c.addi4spn x8,,4'
+.*: Error: illegal operands `c.addi4spn x8,x2,'
+.*: Error: illegal operands `c.addi4spn x7,x2,4'
+.*: Error: illegal operands `c.addi4spn x16,x2,4'
+.*: Error: illegal operands `c.addi4spn 4,x2,4'
+.*: Error: illegal operands `c.addi4spn x8,x1,4'
+.*: Error: illegal operands `c.addi4spn x8,4,4'
+.*: Error: illegal operands `c.addi4spn x8,x3,4'
+.*: Error: illegal operands `c.addi4spn x8,x2,0'
+.*: Error: illegal operands `c.addi4spn x8,x2,3'
+.*: Error: illegal operands `c.addi4spn x8,x2,4.0'
+.*: Error: illegal operands `c.addi4spn x8,x2,5'
+.*: Error: illegal operands `c.addi4spn x8,x2,1023'
+.*: Error: illegal operands `c.addi4spn x8,x2,1024'
+.*: Error: illegal operands `c.addi4spn x8,x2,x9'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64.d b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64.d
new file mode 100644
index 00000000000..24101ed1f2e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn-rv64.d
@@ -0,0 +1,13 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addi4spn.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0040[ 	]+c.addi4spn[ 	]+s0,sp,4
+[ 	]+2:[ 	]+1888[ 	]+c.addi4spn[ 	]+a0,sp,112
+[ 	]+4:[ 	]+1ffc[ 	]+c.addi4spn[ 	]+a5,sp,1020
diff --git a/gas/testsuite/gas/riscv/zc-zca-addi4spn.s b/gas/testsuite/gas/riscv/zc-zca-addi4spn.s
new file mode 100644
index 00000000000..ced11e6369a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addi4spn.s
@@ -0,0 +1,4 @@
+target:
+    c.addi4spn x8, x2, 4
+    c.addi4spn x10, x2, 112
+    c.addi4spn x15, x2, 1020
diff --git a/gas/testsuite/gas/riscv/zc-zca-addiw-fail.s b/gas/testsuite/gas/riscv/zc-zca-addiw-fail.s
new file mode 100644
index 00000000000..2851c1593de
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addiw-fail.s
@@ -0,0 +1,11 @@
+target:
+    c.addiw
+    c.addiw , 0
+    c.addiw x1,
+
+    c.addiw 1, 0
+    c.addiw x0, 0
+    c.addiw x1, -33
+    c.addiw x1, 32
+    c.addiw x1, 0.0
+    c.addiw x1, x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.d
new file mode 100644
index 00000000000..4c51556cc5e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addiw-fail.s
+#error_output: zc-zca-addiw-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.l
new file mode 100644
index 00000000000..2289036463c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addiw-rv64-fail.l
@@ -0,0 +1,10 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addiw'
+.*: Error: illegal operands `c.addiw ,0'
+.*: Error: illegal operands `c.addiw x1,'
+.*: Error: illegal operands `c.addiw 1,0'
+.*: Error: illegal operands `c.addiw x0,0'
+.*: Error: illegal operands `c.addiw x1,-33'
+.*: Error: illegal operands `c.addiw x1,32'
+.*: Error: illegal operands `c.addiw x1,0.0'
+.*: Error: illegal operands `c.addiw x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d b/gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d
new file mode 100644
index 00000000000..a22a04dbe86
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addiw-rv64.d
@@ -0,0 +1,17 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-addiw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+3081[ 	]+c.addiw[ 	]+ra,-32
+[ 	]+2:[ 	]+2101[ 	]+c.addiw[ 	]+sp,0
+[ 	]+4:[ 	]+21fd[ 	]+c.addiw[ 	]+gp,31
+[ 	]+6:[ 	]+3245[ 	]+c.addiw[ 	]+tp,-15+.*
+[ 	]+8:[ 	]+34fd[ 	]+c.addiw[ 	]+s1,-1
+[ 	]+a:[ 	]+2505[ 	]+c.addiw[ 	]+a0,1
+[ 	]+c:[ 	]+2fc1[ 	]+c.addiw[ 	]+t6,16
diff --git a/gas/testsuite/gas/riscv/zc-zca-addiw.s b/gas/testsuite/gas/riscv/zc-zca-addiw.s
new file mode 100644
index 00000000000..5f3177f51fc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-addiw.s
@@ -0,0 +1,8 @@
+target:
+    c.addiw x1, -32
+    c.addiw x2, 0
+    c.addiw x3, 31
+    c.addiw x4, -15
+    c.addiw x9, -1
+    c.addiw x10, 1
+    c.addiw x31, 16
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-fail.s b/gas/testsuite/gas/riscv/zc-zca-and-fail.s
new file mode 100644
index 00000000000..4c0d8e621cf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.and
+    c.and ,
+    c.and , x8
+    c.and x8,
+    c.and , ,
+
+    c.and x7, x8
+    c.and x16, x8
+    c.and 3, x8
+
+    c.and x8, x7
+    c.and x8, x16
+    c.and x8, 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.d
new file mode 100644
index 00000000000..011f214d167
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-and-fail.s
+#error_output: zc-zca-and-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.l
new file mode 100644
index 00000000000..170c799dff0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.and'
+.*: Error: illegal operands `c.and ,'
+.*: Error: illegal operands `c.and ,x8'
+.*: Error: illegal operands `c.and x8,'
+.*: Error: illegal operands `c.and ,,'
+.*: Error: illegal operands `c.and x7,x8'
+.*: Error: illegal operands `c.and x16,x8'
+.*: Error: illegal operands `c.and 3,x8'
+.*: Error: illegal operands `c.and x8,x7'
+.*: Error: illegal operands `c.and x8,x16'
+.*: Error: illegal operands `c.and x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-rv32.d b/gas/testsuite/gas/riscv/zc-zca-and-rv32.d
new file mode 100644
index 00000000000..34a3f3aa088
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-and.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c65[ 	]+c.and[ 	]+s0,s1
+[ 	]+2:[ 	]+8d6d[ 	]+c.and[ 	]+a0,a1
+[ 	]+4:[ 	]+8ffd[ 	]+c.and[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4f433[ 	]+and[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.d
new file mode 100644
index 00000000000..5a181f7feea
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-and-fail.s
+#error_output: zc-zca-and-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.l
new file mode 100644
index 00000000000..170c799dff0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.and'
+.*: Error: illegal operands `c.and ,'
+.*: Error: illegal operands `c.and ,x8'
+.*: Error: illegal operands `c.and x8,'
+.*: Error: illegal operands `c.and ,,'
+.*: Error: illegal operands `c.and x7,x8'
+.*: Error: illegal operands `c.and x16,x8'
+.*: Error: illegal operands `c.and 3,x8'
+.*: Error: illegal operands `c.and x8,x7'
+.*: Error: illegal operands `c.and x8,x16'
+.*: Error: illegal operands `c.and x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-and-rv64.d b/gas/testsuite/gas/riscv/zc-zca-and-rv64.d
new file mode 100644
index 00000000000..2e3ffb814d6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-and.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c65[ 	]+c.and[ 	]+s0,s1
+[ 	]+2:[ 	]+8d6d[ 	]+c.and[ 	]+a0,a1
+[ 	]+4:[ 	]+8ffd[ 	]+c.and[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4f433[ 	]+and[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-and.s b/gas/testsuite/gas/riscv/zc-zca-and.s
new file mode 100644
index 00000000000..6bc283f6231
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-and.s
@@ -0,0 +1,5 @@
+target:
+    c.and x8, x9
+    c.and x10,x11
+    c.and x15,x15
+    and x8,x9,x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-fail.s b/gas/testsuite/gas/riscv/zc-zca-andi-fail.s
new file mode 100644
index 00000000000..d5570c1bcdd
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.andi
+    c.andi ,
+    c.andi , x8
+    c.andi x8,
+    c.andi , ,
+
+    c.andi x7, 1
+    c.andi x16, 1
+    c.andi 3, 1
+
+    c.andi x8, -33
+    c.andi x8, 32
+    c.andi x8, x9
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.d
new file mode 100644
index 00000000000..3c21bcc5e52
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-andi-fail.s
+#error_output: zc-zca-andi-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.l
new file mode 100644
index 00000000000..9b05f45c777
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.andi'
+.*: Error: illegal operands `c.andi ,'
+.*: Error: illegal operands `c.andi ,x8'
+.*: Error: illegal operands `c.andi x8,'
+.*: Error: illegal operands `c.andi ,,'
+.*: Error: illegal operands `c.andi x7,1'
+.*: Error: illegal operands `c.andi x16,1'
+.*: Error: illegal operands `c.andi 3,1'
+.*: Error: illegal operands `c.andi x8,-33'
+.*: Error: illegal operands `c.andi x8,32'
+.*: Error: illegal operands `c.andi x8,x9'
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-rv32.d b/gas/testsuite/gas/riscv/zc-zca-andi-rv32.d
new file mode 100644
index 00000000000..b54234553d8
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-andi.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+9801[ 	]+c.andi[ 	]+s0,-32
+[ 	]+2:[ 	]+8901[ 	]+c.andi[ 	]+a0,0
+[ 	]+4:[ 	]+8bfd[ 	]+c.andi[ 	]+a5,31
+[ 	]+6:[ 	]+01f4f413[ 	]+andi[ 	]+s0,s1,31
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.d
new file mode 100644
index 00000000000..ad32ad1f35a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-andi-fail.s
+#error_output: zc-zca-andi-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.l
new file mode 100644
index 00000000000..9b05f45c777
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.andi'
+.*: Error: illegal operands `c.andi ,'
+.*: Error: illegal operands `c.andi ,x8'
+.*: Error: illegal operands `c.andi x8,'
+.*: Error: illegal operands `c.andi ,,'
+.*: Error: illegal operands `c.andi x7,1'
+.*: Error: illegal operands `c.andi x16,1'
+.*: Error: illegal operands `c.andi 3,1'
+.*: Error: illegal operands `c.andi x8,-33'
+.*: Error: illegal operands `c.andi x8,32'
+.*: Error: illegal operands `c.andi x8,x9'
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi-rv64.d b/gas/testsuite/gas/riscv/zc-zca-andi-rv64.d
new file mode 100644
index 00000000000..526bb6a5549
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-andi.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+9801[ 	]+c.andi[ 	]+s0,-32
+[ 	]+2:[ 	]+8901[ 	]+c.andi[ 	]+a0,0
+[ 	]+4:[ 	]+8bfd[ 	]+c.andi[ 	]+a5,31
+[ 	]+6:[ 	]+01f4f413[ 	]+andi[ 	]+s0,s1,31
diff --git a/gas/testsuite/gas/riscv/zc-zca-andi.s b/gas/testsuite/gas/riscv/zc-zca-andi.s
new file mode 100644
index 00000000000..9d170afa27f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-andi.s
@@ -0,0 +1,5 @@
+target:
+    c.andi x8, -32
+    c.andi x10,0
+    c.andi x15,31
+    andi x8,x9,31
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-fail.s b/gas/testsuite/gas/riscv/zc-zca-beqz-fail.s
new file mode 100644
index 00000000000..10d25c2bf7d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-fail.s
@@ -0,0 +1,9 @@
+target:
+    c.beqz
+    c.beqz , target
+    c.beqz x8, 2.1
+
+    c.beqz x1, target
+    c.beqz x7, target
+    c.beqz x16, target
+    c.beqz x31, target
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.d
new file mode 100644
index 00000000000..717c0914e6e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-beqz-fail.s
+#error_output: zc-zca-beqz-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.l
new file mode 100644
index 00000000000..0b027601e9a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-rv32-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.beqz'
+.*: Error: illegal operands `c.beqz ,target'
+.*: Error: illegal operands `c.beqz x8,2.1'
+.*: Error: illegal operands `c.beqz x1,target'
+.*: Error: illegal operands `c.beqz x7,target'
+.*: Error: illegal operands `c.beqz x16,target'
+.*: Error: illegal operands `c.beqz x31,target'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d b/gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d
new file mode 100644
index 00000000000..27bff3f8714
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-beqz.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+c001[ 	]+c.beqz[ 	]+s0,0[ ]+\<target\>
+[ 	]+2:[ 	]+dcfd[ 	]+c.beqz[ 	]+s1,0[ ]+\<target\>
+[ 	]+4:[ 	]+dd75[ 	]+c.beqz[ 	]+a0,0[ ]+\<target\>
+[ 	]+6:[ 	]+dded[ 	]+c.beqz[ 	]+a1,0[ ]+\<target\>
+[ 	]+8:[ 	]+de65[ 	]+c.beqz[ 	]+a2,0[ ]+\<target\>
+[ 	]+a:[ 	]+dafd[ 	]+c.beqz[ 	]+a3,0[ ]+\<target\>
+[ 	]+c:[ 	]+db75[ 	]+c.beqz[ 	]+a4,0[ ]+\<target\>
+[ 	]+e:[ 	]+dbed[ 	]+c.beqz[ 	]+a5,0[ ]+\<target\>
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.d
new file mode 100644
index 00000000000..52f73951cbc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-beqz-fail.s
+#error_output: zc-zca-beqz-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.l
new file mode 100644
index 00000000000..3be0bafaaeb
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-rv64-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.beqz'
+.*: Error: illegal operands `c.beqz ,target'
+.*: Error: illegal operands `c.beqz x8,2.1'
+.*: Error: illegal operands `c.beqz x1,target'
+.*: Error: illegal operands `c.beqz x7,target'
+.*: Error: illegal operands `c.beqz x16,target'
+.*: Error: illegal operands `c.beqz x31,target'
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d b/gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d
new file mode 100644
index 00000000000..86c560a7e9b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-beqz.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+c001[ 	]+c.beqz[ 	]+s0,0[ ]+\<target\>
+[ 	]+2:[ 	]+dcfd[ 	]+c.beqz[ 	]+s1,0[ ]+\<target\>
+[ 	]+4:[ 	]+dd75[ 	]+c.beqz[ 	]+a0,0[ ]+\<target\>
+[ 	]+6:[ 	]+dded[ 	]+c.beqz[ 	]+a1,0[ ]+\<target\>
+[ 	]+8:[ 	]+de65[ 	]+c.beqz[ 	]+a2,0[ ]+\<target\>
+[ 	]+a:[ 	]+dafd[ 	]+c.beqz[ 	]+a3,0[ ]+\<target\>
+[ 	]+c:[ 	]+db75[ 	]+c.beqz[ 	]+a4,0[ ]+\<target\>
+[ 	]+e:[ 	]+dbed[ 	]+c.beqz[ 	]+a5,0[ ]+\<target\>
diff --git a/gas/testsuite/gas/riscv/zc-zca-beqz.s b/gas/testsuite/gas/riscv/zc-zca-beqz.s
new file mode 100644
index 00000000000..d5de14d4bc5
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-beqz.s
@@ -0,0 +1,9 @@
+target:
+    c.beqz x8, target
+    c.beqz x9, target
+    c.beqz x10, target
+    c.beqz x11, target
+    c.beqz x12, target
+    c.beqz x13, target
+    c.beqz x14, target
+    c.beqz x15, target
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-fail.s b/gas/testsuite/gas/riscv/zc-zca-bnez-fail.s
new file mode 100644
index 00000000000..0a07996fc7d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-fail.s
@@ -0,0 +1,9 @@
+target:
+    c.bnez
+    c.bnez , target
+    c.bnez x8, 2.1
+
+    c.bnez x1, target
+    c.bnez x7, target
+    c.bnez x16, target
+    c.bnez x31, target
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.d
new file mode 100644
index 00000000000..bc1ba5b4589
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-bnez-fail.s
+#error_output: zc-zca-bnez-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.l
new file mode 100644
index 00000000000..0ee813904cc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-rv32-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.bnez'
+.*: Error: illegal operands `c.bnez ,target'
+.*: Error: illegal operands `c.bnez x8,2.1'
+.*: Error: illegal operands `c.bnez x1,target'
+.*: Error: illegal operands `c.bnez x7,target'
+.*: Error: illegal operands `c.bnez x16,target'
+.*: Error: illegal operands `c.bnez x31,target'
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d b/gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d
new file mode 100644
index 00000000000..de0054c8821
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-bnez.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+e001[ 	]+c.bnez[ 	]+s0,0[ ]+\<target\>
+[ 	]+2:[ 	]+fcfd[ 	]+c.bnez[ 	]+s1,0[ ]+\<target\>
+[ 	]+4:[ 	]+fd75[ 	]+c.bnez[ 	]+a0,0[ ]+\<target\>
+[ 	]+6:[ 	]+fded[ 	]+c.bnez[ 	]+a1,0[ ]+\<target\>
+[ 	]+8:[ 	]+fe65[ 	]+c.bnez[ 	]+a2,0[ ]+\<target\>
+[ 	]+a:[ 	]+fafd[ 	]+c.bnez[ 	]+a3,0[ ]+\<target\>
+[ 	]+c:[ 	]+fb75[ 	]+c.bnez[ 	]+a4,0[ ]+\<target\>
+[ 	]+e:[ 	]+fbed[ 	]+c.bnez[ 	]+a5,0[ ]+\<target\>
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.d
new file mode 100644
index 00000000000..ac915ad5f27
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-bnez-fail.s
+#error_output: zc-zca-bnez-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.l
new file mode 100644
index 00000000000..0ee813904cc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-rv64-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.bnez'
+.*: Error: illegal operands `c.bnez ,target'
+.*: Error: illegal operands `c.bnez x8,2.1'
+.*: Error: illegal operands `c.bnez x1,target'
+.*: Error: illegal operands `c.bnez x7,target'
+.*: Error: illegal operands `c.bnez x16,target'
+.*: Error: illegal operands `c.bnez x31,target'
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d b/gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d
new file mode 100644
index 00000000000..b9e56880289
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-bnez.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+e001[ 	]+c.bnez[ 	]+s0,0[ ]+\<target\>
+[ 	]+2:[ 	]+fcfd[ 	]+c.bnez[ 	]+s1,0[ ]+\<target\>
+[ 	]+4:[ 	]+fd75[ 	]+c.bnez[ 	]+a0,0[ ]+\<target\>
+[ 	]+6:[ 	]+fded[ 	]+c.bnez[ 	]+a1,0[ ]+\<target\>
+[ 	]+8:[ 	]+fe65[ 	]+c.bnez[ 	]+a2,0[ ]+\<target\>
+[ 	]+a:[ 	]+fafd[ 	]+c.bnez[ 	]+a3,0[ ]+\<target\>
+[ 	]+c:[ 	]+fb75[ 	]+c.bnez[ 	]+a4,0[ ]+\<target\>
+[ 	]+e:[ 	]+fbed[ 	]+c.bnez[ 	]+a5,0[ ]+\<target\>
diff --git a/gas/testsuite/gas/riscv/zc-zca-bnez.s b/gas/testsuite/gas/riscv/zc-zca-bnez.s
new file mode 100644
index 00000000000..94276e078fb
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-bnez.s
@@ -0,0 +1,9 @@
+target:
+    c.bnez x8, target
+    c.bnez x9, target
+    c.bnez x10, target
+    c.bnez x11, target
+    c.bnez x12, target
+    c.bnez x13, target
+    c.bnez x14, target
+    c.bnez x15, target
diff --git a/gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s b/gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s
new file mode 100644
index 00000000000..9ab36777585
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ebreak-fail.s
@@ -0,0 +1,3 @@
+target:
+    c.ebreak f
+    c.ebreak s0
diff --git a/gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.d
new file mode 100644
index 00000000000..ba59c441ec5
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-ebreak-fail.s
+#error_output: zc-zca-ebreak-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.l
new file mode 100644
index 00000000000..75c2f7432a0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv32-fail.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.ebreak f'
+.*: Error: illegal operands `c.ebreak s0'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.d
new file mode 100644
index 00000000000..c982b80f456
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-ebreak-fail.s
+#error_output: zc-zca-ebreak-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.l
new file mode 100644
index 00000000000..75c2f7432a0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ebreak-rv64-fail.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.ebreak f'
+.*: Error: illegal operands `c.ebreak s0'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-fail.s b/gas/testsuite/gas/riscv/zc-zca-j-fail.s
new file mode 100644
index 00000000000..f548f883015
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-fail.s
@@ -0,0 +1,2 @@
+target:
+    c.j 2046.1
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d
new file mode 100644
index 00000000000..e9b825da65f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-j-fail.s
+#error_output: zc-zca-j-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l
new file mode 100644
index 00000000000..dd39cfaf79a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-rv32-fail.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.j 2046.1'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-rv32.d b/gas/testsuite/gas/riscv/zc-zca-j-rv32.d
new file mode 100644
index 00000000000..89706069630
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-rv32.d
@@ -0,0 +1,11 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-j.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+a001[ 	]+c.j[ 	]+0[ ]+\<target\>
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d
new file mode 100644
index 00000000000..abefad6f102
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-j-fail.s
+#error_output: zc-zca-j-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l
new file mode 100644
index 00000000000..e1822cf3f0a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-rv64-fail.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.j 2046.1'
diff --git a/gas/testsuite/gas/riscv/zc-zca-j-rv64.d b/gas/testsuite/gas/riscv/zc-zca-j-rv64.d
new file mode 100644
index 00000000000..283c49a547f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j-rv64.d
@@ -0,0 +1,11 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-j.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+a001[ 	]+c.j[ 	]+0[ ]+\<target\>
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-j.s b/gas/testsuite/gas/riscv/zc-zca-j.s
new file mode 100644
index 00000000000..3f64002ba49
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-j.s
@@ -0,0 +1,2 @@
+target:
+    c.j target
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-fail.s b/gas/testsuite/gas/riscv/zc-zca-jalr-fail.s
new file mode 100644
index 00000000000..d28fc8ad7dd
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-fail.s
@@ -0,0 +1,4 @@
+target:
+    c.jalr zero
+    c.jalr 2
+    c.jalr
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.d
new file mode 100644
index 00000000000..96c11f1c812
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-jalr-fail.s
+#error_output: zc-zca-jalr-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.l
new file mode 100644
index 00000000000..f2188e3e0c7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-rv32-fail.l
@@ -0,0 +1,4 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.jalr zero'
+.*: Error: illegal operands `c.jalr 2'
+.*: Error: illegal operands `c.jalr'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d b/gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d
new file mode 100644
index 00000000000..18033f46049
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-rv32.d
@@ -0,0 +1,20 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-jalr.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+9502[ 	]+c.jalr[ 	]+a0
+[ 	]+2:[ 	]+9082[ 	]+c.jalr[ 	]+ra
+[ 	]+4:[ 	]+9102[ 	]+c.jalr[ 	]+sp
+[ 	]+6:[ 	]+9182[ 	]+c.jalr[ 	]+gp
+[ 	]+8:[ 	]+9202[ 	]+c.jalr[ 	]+tp
+[ 	]+a:[ 	]+9282[ 	]+c.jalr[ 	]+t0
+[ 	]+c:[ 	]+9402[ 	]+c.jalr[ 	]+s0
+[ 	]+e:[ 	]+9882[ 	]+c.jalr[ 	]+a7
+[ 	]+10:[ 	]+9d82[ 	]+c.jalr[ 	]+s11
+[ 	]+12:[ 	]+9f82[ 	]+c.jalr[ 	]+t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.d
new file mode 100644
index 00000000000..6a04b40142b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-jalr-fail.s
+#error_output: zc-zca-jalr-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.l
new file mode 100644
index 00000000000..f2188e3e0c7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-rv64-fail.l
@@ -0,0 +1,4 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.jalr zero'
+.*: Error: illegal operands `c.jalr 2'
+.*: Error: illegal operands `c.jalr'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d b/gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d
new file mode 100644
index 00000000000..a8ee14eefa2
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr-rv64.d
@@ -0,0 +1,20 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-jalr.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+9502[ 	]+c.jalr[ 	]+a0
+[ 	]+2:[ 	]+9082[ 	]+c.jalr[ 	]+ra
+[ 	]+4:[ 	]+9102[ 	]+c.jalr[ 	]+sp
+[ 	]+6:[ 	]+9182[ 	]+c.jalr[ 	]+gp
+[ 	]+8:[ 	]+9202[ 	]+c.jalr[ 	]+tp
+[ 	]+a:[ 	]+9282[ 	]+c.jalr[ 	]+t0
+[ 	]+c:[ 	]+9402[ 	]+c.jalr[ 	]+s0
+[ 	]+e:[ 	]+9882[ 	]+c.jalr[ 	]+a7
+[ 	]+10:[ 	]+9d82[ 	]+c.jalr[ 	]+s11
+[ 	]+12:[ 	]+9f82[ 	]+c.jalr[ 	]+t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-jalr.s b/gas/testsuite/gas/riscv/zc-zca-jalr.s
new file mode 100644
index 00000000000..a2dfc6c4453
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jalr.s
@@ -0,0 +1,11 @@
+target:
+    c.jalr a0
+    c.jalr ra
+    c.jalr sp
+    c.jalr gp
+    c.jalr tp
+    c.jalr t0
+    c.jalr s0
+    c.jalr a7
+    c.jalr s11
+    c.jalr t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-fail.s b/gas/testsuite/gas/riscv/zc-zca-jr-fail.s
new file mode 100644
index 00000000000..cef4ef2b71b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-fail.s
@@ -0,0 +1,4 @@
+target:
+    c.jr zero
+    c.jr
+    c.jr 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d
new file mode 100644
index 00000000000..9117307998f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-jr-fail.s
+#error_output: zc-zca-jr-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l
new file mode 100644
index 00000000000..6c434682f02
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-rv32-fail.l
@@ -0,0 +1,4 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.jr zero'
+.*: Error: illegal operands `c.jr'
+.*: Error: illegal operands `c.jr 3'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-rv32.d b/gas/testsuite/gas/riscv/zc-zca-jr-rv32.d
new file mode 100644
index 00000000000..1abdb8f2e6c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-rv32.d
@@ -0,0 +1,20 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-jr.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8502[ 	]+c.jr[ 	]+a0
+[ 	]+2:[ 	]+8082[ 	]+c.jr[ 	]+ra
+[ 	]+4:[ 	]+8102[ 	]+c.jr[ 	]+sp
+[ 	]+6:[ 	]+8182[ 	]+c.jr[ 	]+gp
+[ 	]+8:[ 	]+8202[ 	]+c.jr[ 	]+tp
+[ 	]+a:[ 	]+8282[ 	]+c.jr[ 	]+t0
+[ 	]+c:[ 	]+8402[ 	]+c.jr[ 	]+s0
+[ 	]+e:[ 	]+8882[ 	]+c.jr[ 	]+a7
+[ 	]+10:[ 	]+8d82[ 	]+c.jr[ 	]+s11
+[ 	]+12:[ 	]+8f82[ 	]+c.jr[ 	]+t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d
new file mode 100644
index 00000000000..cc20b47d9ca
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-jr-fail.s
+#error_output: zc-zca-jr-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l
new file mode 100644
index 00000000000..6c434682f02
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-rv64-fail.l
@@ -0,0 +1,4 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.jr zero'
+.*: Error: illegal operands `c.jr'
+.*: Error: illegal operands `c.jr 3'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr-rv64.d b/gas/testsuite/gas/riscv/zc-zca-jr-rv64.d
new file mode 100644
index 00000000000..7ff2259a222
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr-rv64.d
@@ -0,0 +1,20 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-jr.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8502[ 	]+c.jr[ 	]+a0
+[ 	]+2:[ 	]+8082[ 	]+c.jr[ 	]+ra
+[ 	]+4:[ 	]+8102[ 	]+c.jr[ 	]+sp
+[ 	]+6:[ 	]+8182[ 	]+c.jr[ 	]+gp
+[ 	]+8:[ 	]+8202[ 	]+c.jr[ 	]+tp
+[ 	]+a:[ 	]+8282[ 	]+c.jr[ 	]+t0
+[ 	]+c:[ 	]+8402[ 	]+c.jr[ 	]+s0
+[ 	]+e:[ 	]+8882[ 	]+c.jr[ 	]+a7
+[ 	]+10:[ 	]+8d82[ 	]+c.jr[ 	]+s11
+[ 	]+12:[ 	]+8f82[ 	]+c.jr[ 	]+t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-jr.s b/gas/testsuite/gas/riscv/zc-zca-jr.s
new file mode 100644
index 00000000000..dfe78196ee3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-jr.s
@@ -0,0 +1,11 @@
+target:
+    c.jr a0
+    c.jr ra
+    c.jr sp
+    c.jr gp
+    c.jr tp
+    c.jr t0
+    c.jr s0
+    c.jr a7
+    c.jr s11
+    c.jr t6
diff --git a/gas/testsuite/gas/riscv/zc-zca-ld-fail.s b/gas/testsuite/gas/riscv/zc-zca-ld-fail.s
new file mode 100644
index 00000000000..f4723b81779
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ld-fail.s
@@ -0,0 +1,26 @@
+target:
+    c.ld
+    c.ld ,
+    c.ld , (x9)
+    c.ld x8,
+    c.ld x8, 8
+    c.ld x8, x9
+
+    c.ld x7, (x9)
+    c.ld x16, (x8)
+    c.ld 8, (x8)
+
+    c.ld x10, (x7)
+    c.ld x10, (x16)
+    c.ld x10, (x0)
+    c.ld x10, (x2)
+    c.ld x10, (x31)
+
+    c.ld x11, 1(x8)
+    c.ld x11, 7(x8)
+    c.ld x11, -8(x8)
+    c.ld x11, 8.0(x8)
+    c.ld x11, 9(x8)
+    c.ld x11, 249(x8)
+    c.ld x11, 255(x8)
+    c.ld x11, 256(x8)
diff --git a/gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d
new file mode 100644
index 00000000000..e54e4ccde51
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-ld-fail.s
+#error_output: zc-zca-ld-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l
new file mode 100644
index 00000000000..13618129278
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ld-rv64-fail.l
@@ -0,0 +1,23 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.ld'
+.*: Error: illegal operands `c.ld ,'
+.*: Error: illegal operands `c.ld ,\(x9\)'
+.*: Error: illegal operands `c.ld x8,'
+.*: Error: illegal operands `c.ld x8,8'
+.*: Error: illegal operands `c.ld x8,x9'
+.*: Error: illegal operands `c.ld x7,\(x9\)'
+.*: Error: illegal operands `c.ld x16,\(x8\)'
+.*: Error: illegal operands `c.ld 8,\(x8\)'
+.*: Error: illegal operands `c.ld x10,\(x7\)'
+.*: Error: illegal operands `c.ld x10,\(x16\)'
+.*: Error: illegal operands `c.ld x10,\(x0\)'
+.*: Error: illegal operands `c.ld x10,\(x2\)'
+.*: Error: illegal operands `c.ld x10,\(x31\)'
+.*: Error: illegal operands `c.ld x11,1\(x8\)'
+.*: Error: illegal operands `c.ld x11,7\(x8\)'
+.*: Error: illegal operands `c.ld x11,-8\(x8\)'
+.*: Error: illegal operands `c.ld x11,8.0\(x8\)'
+.*: Error: illegal operands `c.ld x11,9\(x8\)'
+.*: Error: illegal operands `c.ld x11,249\(x8\)'
+.*: Error: illegal operands `c.ld x11,255\(x8\)'
+.*: Error: illegal operands `c.ld x11,256\(x8\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-ld-rv64.d b/gas/testsuite/gas/riscv/zc-zca-ld-rv64.d
new file mode 100644
index 00000000000..6b7a5832044
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ld-rv64.d
@@ -0,0 +1,15 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-ld.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6380[ 	]+c.ld[ 	]+s0,0\(a5\)
+[ 	]+2:[ 	]+6504[ 	]+c.ld[ 	]+s1,8\(a0\)
+[ 	]+4:[ 	]+6988[ 	]+c.ld[ 	]+a0,16\(a1\)
+[ 	]+6:[ 	]+7c7c[ 	]+c.ld[ 	]+a5,248\(s0\)
+[ 	]+8:[ 	]+6502[ 	]+c.ldsp[ 	]+a0,0\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-ld.s b/gas/testsuite/gas/riscv/zc-zca-ld.s
new file mode 100644
index 00000000000..07506e9b76e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ld.s
@@ -0,0 +1,6 @@
+target:
+    c.ld x8, (x15)
+    c.ld x9, 8(x10)
+    c.ld x10, 16(x11)
+    c.ld x15, 248(x8)
+    ld a0, (sp)
diff --git a/gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s b/gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s
new file mode 100644
index 00000000000..41c0af6c7fb
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ldsp-fail.s
@@ -0,0 +1,20 @@
+target:
+    c.ldsp
+    c.ldsp ,
+    c.ldsp , (x2)
+    c.ldsp x1,
+    c.ldsp x1, 8
+
+    c.ldsp x0, (x2)
+    c.ldsp 8, (x2)
+    c.ldsp x32, (x2)
+
+    c.ldsp x12, 1(x2)
+    c.ldsp x12, -1(x2)
+    c.ldsp x12, 2(x2)
+    c.ldsp x12, 7(x2)
+    c.ldsp x12, 8(x1)
+    c.ldsp x12, 8(x0)
+    c.ldsp x12, 9(x2)
+    c.ldsp x12, 512(x2)
+    c.ldsp x12, 511(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.d
new file mode 100644
index 00000000000..bfe089feffc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-ldsp-fail.s
+#error_output: zc-zca-ldsp-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.l
new file mode 100644
index 00000000000..d8ddb0a28d6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64-fail.l
@@ -0,0 +1,18 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.ldsp'
+.*: Error: illegal operands `c.ldsp ,'
+.*: Error: illegal operands `c.ldsp ,\(x2\)'
+.*: Error: illegal operands `c.ldsp x1,'
+.*: Error: illegal operands `c.ldsp x1,8'
+.*: Error: illegal operands `c.ldsp x0,\(x2\)'
+.*: Error: illegal operands `c.ldsp 8,\(x2\)'
+.*: Error: illegal operands `c.ldsp x32,\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,1\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,-1\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,2\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,7\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,8\(x1\)'
+.*: Error: illegal operands `c.ldsp x12,8\(x0\)'
+.*: Error: illegal operands `c.ldsp x12,9\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,512\(x2\)'
+.*: Error: illegal operands `c.ldsp x12,511\(x2\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d b/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d
new file mode 100644
index 00000000000..a5c768e261a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ldsp-rv64.d
@@ -0,0 +1,17 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-ldsp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6082[ 	]+c.ldsp[ 	]+ra,0\(sp\)
+[ 	]+2:[ 	]+6122[ 	]+c.ldsp[ 	]+sp,8\(sp\)
+[ 	]+4:[ 	]+7182[ 	]+c.ldsp[ 	]+gp,32\(sp\)
+[ 	]+6:[ 	]+7222[ 	]+c.ldsp[ 	]+tp,40\(sp\)
+[ 	]+8:[ 	]+648a[ 	]+c.ldsp[ 	]+s1,128\(sp\)
+[ 	]+a:[ 	]+652a[ 	]+c.ldsp[ 	]+a0,136\(sp\)
+[ 	]+c:[ 	]+7ffe[ 	]+c.ldsp[ 	]+t6,504\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-ldsp.s b/gas/testsuite/gas/riscv/zc-zca-ldsp.s
new file mode 100644
index 00000000000..4b140841a0b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-ldsp.s
@@ -0,0 +1,8 @@
+target:
+    c.ldsp x1, (sp)
+    c.ldsp x2, 8(sp)
+    c.ldsp x3, 32(sp)
+    c.ldsp x4, 40(sp)
+    c.ldsp x9, 128(sp)
+    c.ldsp x10, 136(sp)
+    c.ldsp x31, 504(sp)
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-fail.s b/gas/testsuite/gas/riscv/zc-zca-li-fail.s
new file mode 100644
index 00000000000..ef464485929
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-fail.s
@@ -0,0 +1,10 @@
+target:
+    c.li
+    c.li , 0
+    c.li x1,
+
+    c.li 1, 0
+    c.li x1, -33
+    c.li x1, 32
+    c.li x1, 0.0
+    c.li x1, x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d
new file mode 100644
index 00000000000..9b8cbb0546c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-li-fail.s
+#error_output: zc-zca-li-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l
new file mode 100644
index 00000000000..bb9786036ad
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-rv32-fail.l
@@ -0,0 +1,9 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.li'
+.*: Error: illegal operands `c.li ,0'
+.*: Error: illegal operands `c.li x1,'
+.*: Error: illegal operands `c.li 1,0'
+.*: Error: illegal operands `c.li x1,-33'
+.*: Error: illegal operands `c.li x1,32'
+.*: Error: illegal operands `c.li x1,0.0'
+.*: Error: illegal operands `c.li x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-rv32.d b/gas/testsuite/gas/riscv/zc-zca-li-rv32.d
new file mode 100644
index 00000000000..b8d27c162fe
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-li.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+5081[ 	]+c.li[ 	]+ra,-32
+[ 	]+2:[ 	]+4101[ 	]+c.li[ 	]+sp,0
+[ 	]+4:[ 	]+41fd[ 	]+c.li[ 	]+gp,31
+[ 	]+6:[ 	]+5245[ 	]+c.li[ 	]+tp,-15
+[ 	]+8:[ 	]+54fd[ 	]+c.li[ 	]+s1,-1
+[ 	]+a:[ 	]+4505[ 	]+c.li[ 	]+a0,1
+[ 	]+c:[ 	]+4fc1[ 	]+c.li[ 	]+t6,16
+[ 	]+e:[ 	]+4051[ 	]+c.li[ 	]+zero,20
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d
new file mode 100644
index 00000000000..e1a4ff0ee53
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-li-fail.s
+#error_output: zc-zca-li-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l
new file mode 100644
index 00000000000..bb9786036ad
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-rv64-fail.l
@@ -0,0 +1,9 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.li'
+.*: Error: illegal operands `c.li ,0'
+.*: Error: illegal operands `c.li x1,'
+.*: Error: illegal operands `c.li 1,0'
+.*: Error: illegal operands `c.li x1,-33'
+.*: Error: illegal operands `c.li x1,32'
+.*: Error: illegal operands `c.li x1,0.0'
+.*: Error: illegal operands `c.li x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-li-rv64.d b/gas/testsuite/gas/riscv/zc-zca-li-rv64.d
new file mode 100644
index 00000000000..cada7c280ce
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-li.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+5081[ 	]+c.li[ 	]+ra,-32
+[ 	]+2:[ 	]+4101[ 	]+c.li[ 	]+sp,0
+[ 	]+4:[ 	]+41fd[ 	]+c.li[ 	]+gp,31
+[ 	]+6:[ 	]+5245[ 	]+c.li[ 	]+tp,-15
+[ 	]+8:[ 	]+54fd[ 	]+c.li[ 	]+s1,-1
+[ 	]+a:[ 	]+4505[ 	]+c.li[ 	]+a0,1
+[ 	]+c:[ 	]+4fc1[ 	]+c.li[ 	]+t6,16
+[ 	]+e:[ 	]+4051[ 	]+c.li[ 	]+zero,20
diff --git a/gas/testsuite/gas/riscv/zc-zca-li.s b/gas/testsuite/gas/riscv/zc-zca-li.s
new file mode 100644
index 00000000000..3743c07de2c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-li.s
@@ -0,0 +1,9 @@
+target:
+    c.li x1, -32
+    c.li x2, 0
+    c.li x3, 31
+    c.li x4, -15
+    c.li x9, -1
+    c.li x10, 1
+    c.li x31, 16
+    c.li x0, 20
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-fail.s b/gas/testsuite/gas/riscv/zc-zca-lui-fail.s
new file mode 100644
index 00000000000..b188b1f1e8f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.lui
+    c.lui , 31
+    c.lui x4,
+
+    c.lui x2, 4
+    c.lui 2, 4
+
+    c.lui x31, x0
+    c.lui x31, x2
+    c.lui x31, -1
+    c.lui x31, 32
+    c.lui x31, 1.0
+    c.lui x31, 0
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.d
new file mode 100644
index 00000000000..ff3ff1848be
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-lui-fail.s
+#error_output: zc-zca-lui-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.l
new file mode 100644
index 00000000000..8dd6c1788bf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.lui'
+.*: Error: illegal operands `c.lui ,31'
+.*: Error: illegal operands `c.lui x4,'
+.*: Error: illegal operands `c.lui x2,4'
+.*: Error: illegal operands `c.lui 2,4'
+.*: Error: illegal operands `c.lui x31,x0'
+.*: Error: illegal operands `c.lui x31,x2'
+.*: Error: illegal operands `c.lui x31,-1'
+.*: Error: illegal operands `c.lui x31,32'
+.*: Error: illegal operands `c.lui x31,1.0'
+.*: Error: illegal operands `c.lui x31,0'
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-rv32.d b/gas/testsuite/gas/riscv/zc-zca-lui-rv32.d
new file mode 100644
index 00000000000..5605e0e5fe9
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-rv32.d
@@ -0,0 +1,17 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-lui.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6085[ 	]+c.lui[ 	]+ra,0x1
+[ 	]+2:[ 	]+61fd[ 	]+c.lui[ 	]+gp,0x1f
+[ 	]+4:[ 	]+6239[ 	]+c.lui[ 	]+tp,0xe
+[ 	]+6:[ 	]+64a5[ 	]+c.lui[ 	]+s1,0x9
+[ 	]+8:[ 	]+6511[ 	]+c.lui[ 	]+a0,0x4
+[ 	]+a:[ 	]+6fe5[ 	]+c.lui[ 	]+t6,0x19
+[ 	]+c:[ 	]+6025[ 	]+c.lui[ 	]+zero,0x9
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.d
new file mode 100644
index 00000000000..288a28f8cee
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-lui-fail.s
+#error_output: zc-zca-lui-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.l
new file mode 100644
index 00000000000..8dd6c1788bf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.lui'
+.*: Error: illegal operands `c.lui ,31'
+.*: Error: illegal operands `c.lui x4,'
+.*: Error: illegal operands `c.lui x2,4'
+.*: Error: illegal operands `c.lui 2,4'
+.*: Error: illegal operands `c.lui x31,x0'
+.*: Error: illegal operands `c.lui x31,x2'
+.*: Error: illegal operands `c.lui x31,-1'
+.*: Error: illegal operands `c.lui x31,32'
+.*: Error: illegal operands `c.lui x31,1.0'
+.*: Error: illegal operands `c.lui x31,0'
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui-rv64.d b/gas/testsuite/gas/riscv/zc-zca-lui-rv64.d
new file mode 100644
index 00000000000..897adc5f369
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui-rv64.d
@@ -0,0 +1,17 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-lui.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6085[ 	]+c.lui[ 	]+ra,0x1
+[ 	]+2:[ 	]+61fd[ 	]+c.lui[ 	]+gp,0x1f
+[ 	]+4:[ 	]+6239[ 	]+c.lui[ 	]+tp,0xe
+[ 	]+6:[ 	]+64a5[ 	]+c.lui[ 	]+s1,0x9
+[ 	]+8:[ 	]+6511[ 	]+c.lui[ 	]+a0,0x4
+[ 	]+a:[ 	]+6fe5[ 	]+c.lui[ 	]+t6,0x19
+[ 	]+c:[ 	]+6025[ 	]+c.lui[ 	]+zero,0x9
diff --git a/gas/testsuite/gas/riscv/zc-zca-lui.s b/gas/testsuite/gas/riscv/zc-zca-lui.s
new file mode 100644
index 00000000000..8a79fa3baba
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lui.s
@@ -0,0 +1,8 @@
+target:
+    c.lui x1, 1
+    c.lui x3, 31
+    c.lui x4, 14
+    c.lui x9, 9
+    c.lui x10, 4
+    c.lui x31, 25
+    c.lui x0, 9
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-fail.s b/gas/testsuite/gas/riscv/zc-zca-lw-fail.s
new file mode 100644
index 00000000000..328d70085fc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-fail.s
@@ -0,0 +1,27 @@
+target:
+    c.lw
+    c.lw , (x9)
+    c.lw x8,
+    c.lw x8, 124
+    c.lw x8, x9
+
+    c.lw x0, (x9)
+    c.lw x1, (x9)
+    c.lw x7, (x9)
+    c.lw x16, (x8)
+    c.lw 4, (x8)
+
+    c.lw x10, (x7)
+    c.lw x10, (x16)
+    c.lw x10, (x0)
+    c.lw x10, (x2)
+    c.lw x10, (x31)
+
+    c.lw x11, 1(x8)
+    c.lw x11, 2(x8)
+    c.lw x11, 3(x8)
+    c.lw x11, -4(x8)
+    c.lw x11, 5(x8)
+    c.lw x11, 123(x8)
+    c.lw x11, 125(x8)
+    c.lw x11, 128(x8)
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d
new file mode 100644
index 00000000000..97c01142c9e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-lw-fail.s
+#error_output: zc-zca-lw-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l
new file mode 100644
index 00000000000..ed17d1f1da0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-rv32-fail.l
@@ -0,0 +1,24 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.lw'
+.*: Error: illegal operands `c.lw ,\(x9\)'
+.*: Error: illegal operands `c.lw x8,'
+.*: Error: illegal operands `c.lw x8,124'
+.*: Error: illegal operands `c.lw x8,x9'
+.*: Error: illegal operands `c.lw x0,\(x9\)'
+.*: Error: illegal operands `c.lw x1,\(x9\)'
+.*: Error: illegal operands `c.lw x7,\(x9\)'
+.*: Error: illegal operands `c.lw x16,\(x8\)'
+.*: Error: illegal operands `c.lw 4,\(x8\)'
+.*: Error: illegal operands `c.lw x10,\(x7\)'
+.*: Error: illegal operands `c.lw x10,\(x16\)'
+.*: Error: illegal operands `c.lw x10,\(x0\)'
+.*: Error: illegal operands `c.lw x10,\(x2\)'
+.*: Error: illegal operands `c.lw x10,\(x31\)'
+.*: Error: illegal operands `c.lw x11,1\(x8\)'
+.*: Error: illegal operands `c.lw x11,2\(x8\)'
+.*: Error: illegal operands `c.lw x11,3\(x8\)'
+.*: Error: illegal operands `c.lw x11,-4\(x8\)'
+.*: Error: illegal operands `c.lw x11,5\(x8\)'
+.*: Error: illegal operands `c.lw x11,123\(x8\)'
+.*: Error: illegal operands `c.lw x11,125\(x8\)'
+.*: Error: illegal operands `c.lw x11,128\(x8\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-rv32.d b/gas/testsuite/gas/riscv/zc-zca-lw-rv32.d
new file mode 100644
index 00000000000..cacfcb65d71
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-rv32.d
@@ -0,0 +1,19 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-lw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+4080[ 	]+c.lw[ 	]+s0,0\(s1\)
+[ 	]+2:[ 	]+5104[ 	]+c.lw[ 	]+s1,32\(a0\)
+[ 	]+4:[ 	]+5de8[ 	]+c.lw[ 	]+a0,124\(a1\)
+[ 	]+6:[ 	]+422c[ 	]+c.lw[ 	]+a1,64\(a2\)
+[ 	]+8:[ 	]+42f0[ 	]+c.lw[ 	]+a2,68\(a3\)
+[ 	]+a:[ 	]+4354[ 	]+c.lw[ 	]+a3,4\(a4\)
+[ 	]+c:[ 	]+4798[ 	]+c.lw[ 	]+a4,8\(a5\)
+[ 	]+e:[ 	]+481c[ 	]+c.lw[ 	]+a5,16\(s0\)
+[ 	]+10:[ 	]+4502[ 	]+c.lwsp[ 	]+a0,0\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d
new file mode 100644
index 00000000000..1f950ac17c7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-lw-fail.s
+#error_output: zc-zca-lw-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l
new file mode 100644
index 00000000000..4275e2678de
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-rv64-fail.l
@@ -0,0 +1,24 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.lw'
+.*: Error: illegal operands `c.lw ,\(x9\)'
+.*: Error: illegal operands `c.lw x8,'
+.*: Error: illegal operands `c.lw x8,124'
+.*: Error: illegal operands `c.lw x8,x9'
+.*: Error: illegal operands `c.lw x0,\(x9\)'
+.*: Error: illegal operands `c.lw x1,\(x9\)'
+.*: Error: illegal operands `c.lw x7,\(x9\)'
+.*: Error: illegal operands `c.lw x16,\(x8\)'
+.*: Error: illegal operands `c.lw 4,\(x8\)'
+.*: Error: illegal operands `c.lw x10,\(x7\)'
+.*: Error: illegal operands `c.lw x10,\(x16\)'
+.*: Error: illegal operands `c.lw x10,\(x0\)'
+.*: Error: illegal operands `c.lw x10,\(x2\)'
+.*: Error: illegal operands `c.lw x10,\(x31\)'
+.*: Error: illegal operands `c.lw x11,1\(x8\)'
+.*: Error: illegal operands `c.lw x11,2\(x8\)'
+.*: Error: illegal operands `c.lw x11,3\(x8\)'
+.*: Error: illegal operands `c.lw x11,-4\(x8\)'
+.*: Error: illegal operands `c.lw x11,5\(x8\)'
+.*: Error: illegal operands `c.lw x11,123\(x8\)'
+.*: Error: illegal operands `c.lw x11,125\(x8\)'
+.*: Error: illegal operands `c.lw x11,128\(x8\)'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw-rv64.d b/gas/testsuite/gas/riscv/zc-zca-lw-rv64.d
new file mode 100644
index 00000000000..da774f51a7a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw-rv64.d
@@ -0,0 +1,19 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-lw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+4080[ 	]+c.lw[ 	]+s0,0\(s1\)
+[ 	]+2:[ 	]+5104[ 	]+c.lw[ 	]+s1,32\(a0\)
+[ 	]+4:[ 	]+5de8[ 	]+c.lw[ 	]+a0,124\(a1\)
+[ 	]+6:[ 	]+422c[ 	]+c.lw[ 	]+a1,64\(a2\)
+[ 	]+8:[ 	]+42f0[ 	]+c.lw[ 	]+a2,68\(a3\)
+[ 	]+a:[ 	]+4354[ 	]+c.lw[ 	]+a3,4\(a4\)
+[ 	]+c:[ 	]+4798[ 	]+c.lw[ 	]+a4,8\(a5\)
+[ 	]+e:[ 	]+481c[ 	]+c.lw[ 	]+a5,16\(s0\)
+[ 	]+10:[ 	]+4502[ 	]+c.lwsp[ 	]+a0,0\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-lw.s b/gas/testsuite/gas/riscv/zc-zca-lw.s
new file mode 100644
index 00000000000..30f0ac8cea1
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lw.s
@@ -0,0 +1,10 @@
+target:
+    c.lw x8, (x9)
+    c.lw x9, 32(x10)
+    c.lw x10, 124(x11)
+    c.lw x11, 64(x12)
+    c.lw x12, 68(x13)
+    c.lw x13, 4(x14)
+    c.lw x14, 8(x15)
+    c.lw x15, 16(x8)
+    lw a0, (sp)
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s b/gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s
new file mode 100644
index 00000000000..faea3da9c9b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-fail.s
@@ -0,0 +1,22 @@
+target:
+    c.lwsp
+    c.lwsp , (x2)
+    c.lwsp x1,
+    c.lwsp x1, 4
+
+    c.lwsp x0, (x2)
+    c.lwsp 4, (x2)
+    c.lwsp x32, (x2)
+
+    c.lwsp x12, 1(x2)
+    c.lwsp x12, -1(x2)
+    c.lwsp x12, 2(x2)
+    c.lwsp x12, 3(x2)
+    c.lwsp x12, 4(x3)
+    c.lwsp x12, 8(x1)
+    c.lwsp x12, 12(x0)
+    c.lwsp x12, 5(x2)
+    c.lwsp x12, 253(x2)
+    c.lwsp x12, 254(x2)
+    c.lwsp x12, 255(x2)
+    c.lwsp x12, 256(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.d
new file mode 100644
index 00000000000..e7b9aa2998e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-lwsp-fail.s
+#error_output: zc-zca-lwsp-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.l
new file mode 100644
index 00000000000..c5453290846
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32-fail.l
@@ -0,0 +1,20 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.lwsp'
+.*: Error: illegal operands `c.lwsp ,\(x2\)'
+.*: Error: illegal operands `c.lwsp x1,'
+.*: Error: illegal operands `c.lwsp x1,4'
+.*: Error: illegal operands `c.lwsp x0,\(x2\)'
+.*: Error: illegal operands `c.lwsp 4,\(x2\)'
+.*: Error: illegal operands `c.lwsp x32,\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,1\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,-1\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,2\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,3\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,4\(x3\)'
+.*: Error: illegal operands `c.lwsp x12,8\(x1\)'
+.*: Error: illegal operands `c.lwsp x12,12\(x0\)'
+.*: Error: illegal operands `c.lwsp x12,5\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,253\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,254\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,255\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,256\(x2\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d
new file mode 100644
index 00000000000..13a9a86799e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-lwsp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+4082[ 	]+c.lwsp[ 	]+ra,0\(sp\)
+[ 	]+2:[ 	]+4112[ 	]+c.lwsp[ 	]+sp,4\(sp\)
+[ 	]+4:[ 	]+41a2[ 	]+c.lwsp[ 	]+gp,8\(sp\)
+[ 	]+6:[ 	]+5202[ 	]+c.lwsp[ 	]+tp,32\(sp\)
+[ 	]+8:[ 	]+54a2[ 	]+c.lwsp[ 	]+s1,40\(sp\)
+[ 	]+a:[ 	]+5576[ 	]+c.lwsp[ 	]+a0,124\(sp\)
+[ 	]+c:[ 	]+458a[ 	]+c.lwsp[ 	]+a1,128\(sp\)
+[ 	]+e:[ 	]+5ffe[ 	]+c.lwsp[ 	]+t6,252\(sp\)
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.d
new file mode 100644
index 00000000000..af9462dc010
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-lwsp-fail.s
+#error_output: zc-zca-lwsp-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.l
new file mode 100644
index 00000000000..c5453290846
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64-fail.l
@@ -0,0 +1,20 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.lwsp'
+.*: Error: illegal operands `c.lwsp ,\(x2\)'
+.*: Error: illegal operands `c.lwsp x1,'
+.*: Error: illegal operands `c.lwsp x1,4'
+.*: Error: illegal operands `c.lwsp x0,\(x2\)'
+.*: Error: illegal operands `c.lwsp 4,\(x2\)'
+.*: Error: illegal operands `c.lwsp x32,\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,1\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,-1\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,2\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,3\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,4\(x3\)'
+.*: Error: illegal operands `c.lwsp x12,8\(x1\)'
+.*: Error: illegal operands `c.lwsp x12,12\(x0\)'
+.*: Error: illegal operands `c.lwsp x12,5\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,253\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,254\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,255\(x2\)'
+.*: Error: illegal operands `c.lwsp x12,256\(x2\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d
new file mode 100644
index 00000000000..6ab165b6540
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-lwsp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+4082[ 	]+c.lwsp[ 	]+ra,0\(sp\)
+[ 	]+2:[ 	]+4112[ 	]+c.lwsp[ 	]+sp,4\(sp\)
+[ 	]+4:[ 	]+41a2[ 	]+c.lwsp[ 	]+gp,8\(sp\)
+[ 	]+6:[ 	]+5202[ 	]+c.lwsp[ 	]+tp,32\(sp\)
+[ 	]+8:[ 	]+54a2[ 	]+c.lwsp[ 	]+s1,40\(sp\)
+[ 	]+a:[ 	]+5576[ 	]+c.lwsp[ 	]+a0,124\(sp\)
+[ 	]+c:[ 	]+458a[ 	]+c.lwsp[ 	]+a1,128\(sp\)
+[ 	]+e:[ 	]+5ffe[ 	]+c.lwsp[ 	]+t6,252\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-lwsp.s b/gas/testsuite/gas/riscv/zc-zca-lwsp.s
new file mode 100644
index 00000000000..4f69ba66cb4
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-lwsp.s
@@ -0,0 +1,9 @@
+target:
+    c.lwsp x1, (x2)
+    c.lwsp x2, 4(x2)
+    c.lwsp x3, 8(x2)
+    c.lwsp x4, 32(x2)
+    c.lwsp x9, 40(x2)
+    c.lwsp x10, 124(x2)
+    c.lwsp x11, 128(x2)
+    c.lwsp x31, 252(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-fail.s b/gas/testsuite/gas/riscv/zc-zca-mv-fail.s
new file mode 100644
index 00000000000..87e06bb4030
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-fail.s
@@ -0,0 +1,9 @@
+target:
+    c.mv
+    c.mv , x1
+    c.mv x1,
+
+    c.mv x0, x0
+    c.mv 1, x1
+    c.mv x1, x0
+    c.mv x1, 0
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d
new file mode 100644
index 00000000000..5c2eba1cef4
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-mv-fail.s
+#error_output: zc-zca-mv-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l
new file mode 100644
index 00000000000..2392f60f04f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-rv32-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.mv'
+.*: Error: illegal operands `c.mv ,x1'
+.*: Error: illegal operands `c.mv x1,'
+.*: Error: illegal operands `c.mv x0,x0'
+.*: Error: illegal operands `c.mv 1,x1'
+.*: Error: illegal operands `c.mv x1,x0'
+.*: Error: illegal operands `c.mv x1,0'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-rv32.d b/gas/testsuite/gas/riscv/zc-zca-mv-rv32.d
new file mode 100644
index 00000000000..1cb191cd094
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-rv32.d
@@ -0,0 +1,20 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-mv.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+808a[ 	]+c.mv[ 	]+ra,sp
+[ 	]+2:[ 	]+8106[ 	]+c.mv[ 	]+sp,ra
+[ 	]+4:[ 	]+818a[ 	]+c.mv[ 	]+gp,sp
+[ 	]+6:[ 	]+820e[ 	]+c.mv[ 	]+tp,gp
+[ 	]+8:[ 	]+84a6[ 	]+c.mv[ 	]+s1,s1
+[ 	]+a:[ 	]+852e[ 	]+c.mv[ 	]+a0,a1
+[ 	]+c:[ 	]+85aa[ 	]+c.mv[ 	]+a1,a0
+[ 	]+e:[ 	]+87b6[ 	]+c.mv[ 	]+a5,a3
+[ 	]+10:[ 	]+8f8a[ 	]+c.mv[ 	]+t6,sp
+[ 	]+12:[ 	]+8006[ 	]+c.mv[ 	]+zero,ra
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d
new file mode 100644
index 00000000000..8c99fae20d3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-mv-fail.s
+#error_output: zc-zca-mv-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l
new file mode 100644
index 00000000000..a844d709983
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-rv64-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.mv'
+.*: Error: illegal operands `c.mv ,x1'
+.*: Error: illegal operands `c.mv x1,'
+.*: Error: illegal operands `c.mv x0,x0'
+.*: Error: illegal operands `c.mv 1,x1'
+.*: Error: illegal operands `c.mv x1,x0'
+.*: Error: illegal operands `c.mv x1,0'
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv-rv64.d b/gas/testsuite/gas/riscv/zc-zca-mv-rv64.d
new file mode 100644
index 00000000000..58c469dd049
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv-rv64.d
@@ -0,0 +1,20 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-mv.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+808a[ 	]+c.mv[ 	]+ra,sp
+[ 	]+2:[ 	]+8106[ 	]+c.mv[ 	]+sp,ra
+[ 	]+4:[ 	]+818a[ 	]+c.mv[ 	]+gp,sp
+[ 	]+6:[ 	]+820e[ 	]+c.mv[ 	]+tp,gp
+[ 	]+8:[ 	]+84a6[ 	]+c.mv[ 	]+s1,s1
+[ 	]+a:[ 	]+852e[ 	]+c.mv[ 	]+a0,a1
+[ 	]+c:[ 	]+85aa[ 	]+c.mv[ 	]+a1,a0
+[ 	]+e:[ 	]+87b6[ 	]+c.mv[ 	]+a5,a3
+[ 	]+10:[ 	]+8f8a[ 	]+c.mv[ 	]+t6,sp
+[ 	]+12:[ 	]+8006[ 	]+c.mv[ 	]+zero,ra
diff --git a/gas/testsuite/gas/riscv/zc-zca-mv.s b/gas/testsuite/gas/riscv/zc-zca-mv.s
new file mode 100644
index 00000000000..0e8b4064909
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-mv.s
@@ -0,0 +1,11 @@
+target:
+    c.mv x1, x2
+    c.mv x2, x1
+    c.mv x3, x2
+    c.mv x4, x3
+    c.mv x9, x9
+    c.mv x10, x11
+    c.mv x11, x10
+    c.mv x15, x13
+    c.mv x31, x2
+    c.mv x0, x1
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-fail.s b/gas/testsuite/gas/riscv/zc-zca-nop-fail.s
new file mode 100644
index 00000000000..d9fe2990434
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-fail.s
@@ -0,0 +1,9 @@
+target:
+    nop 0.1
+    nop 1
+    nop x9
+
+    c.nop 32
+    c.nop -33
+    c.nop 0.0
+    c.nop x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.d
new file mode 100644
index 00000000000..5e8d0dd7b3d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-nop-fail.s
+#error_output: zc-zca-nop-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.l
new file mode 100644
index 00000000000..047805a1203
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-rv32-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `nop 0.1'
+.*: Error: illegal operands `nop 1'
+.*: Error: illegal operands `nop x9'
+.*: Error: illegal operands `c.nop 32'
+.*: Error: illegal operands `c.nop -33'
+.*: Error: illegal operands `c.nop 0.0'
+.*: Error: illegal operands `c.nop x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-rv32.d b/gas/testsuite/gas/riscv/zc-zca-nop-rv32.d
new file mode 100644
index 00000000000..bc8f6746e62
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-rv32.d
@@ -0,0 +1,15 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-nop.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0001[ 	]+c.addi[ 	]+zero,0
+[ 	]+2:[ 	]+007d[ 	]+c.addi[ 	]+zero,31
+[ 	]+4:[ 	]+1001[ 	]+c.addi[ 	]+zero,-32
+[ 	]+6:[ 	]+0001[ 	]+c.addi[ 	]+zero,0
+[ 	]+8:[ 	]+0041[ 	]+c.addi[ 	]+zero,16
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.d
new file mode 100644
index 00000000000..8a5049e7f2b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-nop-fail.s
+#error_output: zc-zca-nop-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.l
new file mode 100644
index 00000000000..047805a1203
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-rv64-fail.l
@@ -0,0 +1,8 @@
+.*: Assembler messages:
+.*: Error: illegal operands `nop 0.1'
+.*: Error: illegal operands `nop 1'
+.*: Error: illegal operands `nop x9'
+.*: Error: illegal operands `c.nop 32'
+.*: Error: illegal operands `c.nop -33'
+.*: Error: illegal operands `c.nop 0.0'
+.*: Error: illegal operands `c.nop x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop-rv64.d b/gas/testsuite/gas/riscv/zc-zca-nop-rv64.d
new file mode 100644
index 00000000000..15480045144
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop-rv64.d
@@ -0,0 +1,15 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-nop.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0001[ 	]+c.addi[ 	]+zero,0
+[ 	]+2:[ 	]+007d[ 	]+c.addi[ 	]+zero,31
+[ 	]+4:[ 	]+1001[ 	]+c.addi[ 	]+zero,-32
+[ 	]+6:[ 	]+0001[ 	]+c.addi[ 	]+zero,0
+[ 	]+8:[ 	]+0041[ 	]+c.addi[ 	]+zero,16
diff --git a/gas/testsuite/gas/riscv/zc-zca-nop.s b/gas/testsuite/gas/riscv/zc-zca-nop.s
new file mode 100644
index 00000000000..56b40e8f1db
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-nop.s
@@ -0,0 +1,6 @@
+target:
+    nop
+    c.nop 31
+    c.nop -32
+    c.nop
+    c.nop 16
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-fail.s b/gas/testsuite/gas/riscv/zc-zca-or-fail.s
new file mode 100644
index 00000000000..67025363ee0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.or
+    c.or ,
+    c.or , x8
+    c.or x8,
+    c.or , ,
+
+    c.or x7, x8
+    c.or x16, x8
+    c.or 3, x8
+
+    c.or x8, x7
+    c.or x8, x16
+    c.or x8, 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d
new file mode 100644
index 00000000000..ef1a93cf036
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-or-fail.s
+#error_output: zc-zca-or-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l
new file mode 100644
index 00000000000..be5a26d37f7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.or'
+.*: Error: illegal operands `c.or ,'
+.*: Error: illegal operands `c.or ,x8'
+.*: Error: illegal operands `c.or x8,'
+.*: Error: illegal operands `c.or ,,'
+.*: Error: illegal operands `c.or x7,x8'
+.*: Error: illegal operands `c.or x16,x8'
+.*: Error: illegal operands `c.or 3,x8'
+.*: Error: illegal operands `c.or x8,x7'
+.*: Error: illegal operands `c.or x8,x16'
+.*: Error: illegal operands `c.or x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-rv32.d b/gas/testsuite/gas/riscv/zc-zca-or-rv32.d
new file mode 100644
index 00000000000..ae230dbc2c1
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-or.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c45[ 	]+c.or[ 	]+s0,s1
+[ 	]+2:[ 	]+8d4d[ 	]+c.or[ 	]+a0,a1
+[ 	]+4:[ 	]+8fdd[ 	]+c.or[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4e433[ 	]+or[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d
new file mode 100644
index 00000000000..b840beaab3f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-or-fail.s
+#error_output: zc-zca-or-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l
new file mode 100644
index 00000000000..be5a26d37f7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.or'
+.*: Error: illegal operands `c.or ,'
+.*: Error: illegal operands `c.or ,x8'
+.*: Error: illegal operands `c.or x8,'
+.*: Error: illegal operands `c.or ,,'
+.*: Error: illegal operands `c.or x7,x8'
+.*: Error: illegal operands `c.or x16,x8'
+.*: Error: illegal operands `c.or 3,x8'
+.*: Error: illegal operands `c.or x8,x7'
+.*: Error: illegal operands `c.or x8,x16'
+.*: Error: illegal operands `c.or x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-or-rv64.d b/gas/testsuite/gas/riscv/zc-zca-or-rv64.d
new file mode 100644
index 00000000000..c4c5c1a8ff5
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-or.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c45[ 	]+c.or[ 	]+s0,s1
+[ 	]+2:[ 	]+8d4d[ 	]+c.or[ 	]+a0,a1
+[ 	]+4:[ 	]+8fdd[ 	]+c.or[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4e433[ 	]+or[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-or.s b/gas/testsuite/gas/riscv/zc-zca-or.s
new file mode 100644
index 00000000000..c985589b036
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-or.s
@@ -0,0 +1,5 @@
+target:
+    c.or x8, x9
+    c.or x10,x11
+    c.or x15,x15
+    or x8,x9,x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.d b/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.d
new file mode 100644
index 00000000000..3568a39ac9d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-rv32-jal-fail.s
+#error_output: zc-zca-rv32-jal-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.l b/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.l
new file mode 100644
index 00000000000..81b5af15493
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.jal 2046.1'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.s b/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.s
new file mode 100644
index 00000000000..5f0b144781a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv32-jal-fail.s
@@ -0,0 +1,2 @@
+target:
+    c.jal 2046.1
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv32-jal.d b/gas/testsuite/gas/riscv/zc-zca-rv32-jal.d
new file mode 100644
index 00000000000..b0c1f72e605
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv32-jal.d
@@ -0,0 +1,11 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-rv32-jal.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+2001[ 	]+c.jal[ 	]+0[ ]+\<target\>
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv32-jal.s b/gas/testsuite/gas/riscv/zc-zca-rv32-jal.s
new file mode 100644
index 00000000000..26f1c5f3f80
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv32-jal.s
@@ -0,0 +1,2 @@
+target:
+    c.jal target
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.d b/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.d
new file mode 100644
index 00000000000..69d7c013db7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-rv64-addw-fail.s
+#error_output: zc-zca-rv64-addw-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.l b/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.l
new file mode 100644
index 00000000000..7de701323b1
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.addw'
+.*: Error: illegal operands `c.addw ,'
+.*: Error: illegal operands `c.addw ,x8'
+.*: Error: illegal operands `c.addw x8,'
+.*: Error: illegal operands `c.addw ,,'
+.*: Error: illegal operands `c.addw x7,x8'
+.*: Error: illegal operands `c.addw x16,x8'
+.*: Error: illegal operands `c.addw 3,x8'
+.*: Error: illegal operands `c.addw x8,x7'
+.*: Error: illegal operands `c.addw x8,x16'
+.*: Error: illegal operands `c.addw x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.s b/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.s
new file mode 100644
index 00000000000..ab61da6b2ec
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-addw-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.addw
+    c.addw ,
+    c.addw , x8
+    c.addw x8,
+    c.addw , ,
+
+    c.addw x7, x8
+    c.addw x16, x8
+    c.addw 3, x8
+
+    c.addw x8, x7
+    c.addw x8, x16
+    c.addw x8, 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-addw.d b/gas/testsuite/gas/riscv/zc-zca-rv64-addw.d
new file mode 100644
index 00000000000..ac6679164bf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-addw.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-rv64-addw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+9c25[ 	]+c.addw[ 	]+s0,s1
+[ 	]+2:[ 	]+9d2d[ 	]+c.addw[ 	]+a0,a1
+[ 	]+4:[ 	]+9fbd[ 	]+c.addw[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4843b[ 	]+addw[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-addw.s b/gas/testsuite/gas/riscv/zc-zca-rv64-addw.s
new file mode 100644
index 00000000000..d0a2108d3d9
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-addw.s
@@ -0,0 +1,5 @@
+target:
+    c.addw x8, x9
+    c.addw x10,x11
+    c.addw x15,x15
+    addw x8,x9,x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.d b/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.d
new file mode 100644
index 00000000000..8020e2762b4
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-rv64-subw-fail.s
+#error_output: zc-zca-rv64-subw-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.l b/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.l
new file mode 100644
index 00000000000..2bbc5166b88
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.subw'
+.*: Error: illegal operands `c.subw ,'
+.*: Error: illegal operands `c.subw ,x8'
+.*: Error: illegal operands `c.subw x8,'
+.*: Error: illegal operands `c.subw ,,'
+.*: Error: illegal operands `c.subw x7,x8'
+.*: Error: illegal operands `c.subw x16,x8'
+.*: Error: illegal operands `c.subw 3,x8'
+.*: Error: illegal operands `c.subw x8,x7'
+.*: Error: illegal operands `c.subw x8,x16'
+.*: Error: illegal operands `c.subw x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.s b/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.s
new file mode 100644
index 00000000000..2ca657e2935
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-subw-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.subw
+    c.subw ,
+    c.subw , x8
+    c.subw x8,
+    c.subw , ,
+
+    c.subw x7, x8
+    c.subw x16, x8
+    c.subw 3, x8
+
+    c.subw x8, x7
+    c.subw x8, x16
+    c.subw x8, 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-subw.d b/gas/testsuite/gas/riscv/zc-zca-rv64-subw.d
new file mode 100644
index 00000000000..146e58988d0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-subw.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-rv64-subw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+9c05[ 	]+c.subw[ 	]+s0,s1
+[ 	]+2:[ 	]+9d0d[ 	]+c.subw[ 	]+a0,a1
+[ 	]+4:[ 	]+9f9d[ 	]+c.subw[ 	]+a5,a5
+[ 	]+6:[ 	]+40a4843b[ 	]+subw[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-rv64-subw.s b/gas/testsuite/gas/riscv/zc-zca-rv64-subw.s
new file mode 100644
index 00000000000..1c1c7165f7c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-rv64-subw.s
@@ -0,0 +1,5 @@
+target:
+    c.subw x8, x9
+    c.subw x10,x11
+    c.subw x15,x15
+    subw x8,x9,x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-sd-fail.s b/gas/testsuite/gas/riscv/zc-zca-sd-fail.s
new file mode 100644
index 00000000000..c4b1285e15d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sd-fail.s
@@ -0,0 +1,26 @@
+target:
+    c.sd
+    c.sd ,
+    c.sd , (x9)
+    c.sd x8,
+    c.sd x8, 8
+    c.sd x8, x9
+
+    c.sd x7, (x9)
+    c.sd x16, (x8)
+    c.sd 8, (x8)
+
+    c.sd x10, (x7)
+    c.sd x10, (x16)
+    c.sd x10, (x0)
+    c.sd x10, (x2)
+    c.sd x10, (x31)
+
+    c.sd x11, 1(x8)
+    c.sd x11, 7(x8)
+    c.sd x11, -8(x8)
+    c.sd x11, 8.0(x8)
+    c.sd x11, 9(x8)
+    c.sd x11, 249(x8)
+    c.sd x11, 255(x8)
+    c.sd x11, 256(x8)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d
new file mode 100644
index 00000000000..3580e4909e6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sd-fail.s
+#error_output: zc-zca-sd-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l
new file mode 100644
index 00000000000..abc929c0f44
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sd-rv64-fail.l
@@ -0,0 +1,23 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.sd'
+.*: Error: illegal operands `c.sd ,'
+.*: Error: illegal operands `c.sd ,\(x9\)'
+.*: Error: illegal operands `c.sd x8,'
+.*: Error: illegal operands `c.sd x8,8'
+.*: Error: illegal operands `c.sd x8,x9'
+.*: Error: illegal operands `c.sd x7,\(x9\)'
+.*: Error: illegal operands `c.sd x16,\(x8\)'
+.*: Error: illegal operands `c.sd 8,\(x8\)'
+.*: Error: illegal operands `c.sd x10,\(x7\)'
+.*: Error: illegal operands `c.sd x10,\(x16\)'
+.*: Error: illegal operands `c.sd x10,\(x0\)'
+.*: Error: illegal operands `c.sd x10,\(x2\)'
+.*: Error: illegal operands `c.sd x10,\(x31\)'
+.*: Error: illegal operands `c.sd x11,1\(x8\)'
+.*: Error: illegal operands `c.sd x11,7\(x8\)'
+.*: Error: illegal operands `c.sd x11,-8\(x8\)'
+.*: Error: illegal operands `c.sd x11,8.0\(x8\)'
+.*: Error: illegal operands `c.sd x11,9\(x8\)'
+.*: Error: illegal operands `c.sd x11,249\(x8\)'
+.*: Error: illegal operands `c.sd x11,255\(x8\)'
+.*: Error: illegal operands `c.sd x11,256\(x8\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-sd-rv64.d b/gas/testsuite/gas/riscv/zc-zca-sd-rv64.d
new file mode 100644
index 00000000000..86098959f4f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sd-rv64.d
@@ -0,0 +1,15 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sd.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+e380[ 	]+c.sd[ 	]+s0,0\(a5\)
+[ 	]+2:[ 	]+e504[ 	]+c.sd[ 	]+s1,8\(a0\)
+[ 	]+4:[ 	]+e988[ 	]+c.sd[ 	]+a0,16\(a1\)
+[ 	]+6:[ 	]+fc7c[ 	]+c.sd[ 	]+a5,248\(s0\)
+[ 	]+8:[ 	]+e02a[ 	]+c.sdsp[ 	]+a0,0\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sd.s b/gas/testsuite/gas/riscv/zc-zca-sd.s
new file mode 100644
index 00000000000..0c4d77ed517
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sd.s
@@ -0,0 +1,6 @@
+target:
+    c.sd x8, (x15)
+    c.sd x9, 8(x10)
+    c.sd x10, 16(x11)
+    c.sd x15, 248(x8)
+    sd a0, (sp)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s b/gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s
new file mode 100644
index 00000000000..bac99914a94
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sdsp-fail.s
@@ -0,0 +1,20 @@
+target:
+    c.sdsp
+    c.sdsp ,
+    c.sdsp , (x2)
+    c.sdsp x1,
+    c.sdsp x1, 8
+    c.sdsp x1, 8(x2
+
+    c.sdsp 8, (x2)
+    c.sdsp x32, (x2)
+
+    c.sdsp x12, 1(x2)
+    c.sdsp x12, -8(x2)
+    c.sdsp x12, 7(x2)
+    c.sdsp x12, 8(x3)
+    c.sdsp x12, 8(x1)
+    c.sdsp x12, 8(x0)
+    c.sdsp x12, 9(x2)
+    c.sdsp x12, 511(x2)
+    c.sdsp x12, 512(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.d
new file mode 100644
index 00000000000..6ebaa5177fd
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sdsp-fail.s
+#error_output: zc-zca-sdsp-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.l
new file mode 100644
index 00000000000..d35354c15d3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64-fail.l
@@ -0,0 +1,18 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.sdsp'
+.*: Error: illegal operands `c.sdsp ,'
+.*: Error: illegal operands `c.sdsp ,\(x2\)'
+.*: Error: illegal operands `c.sdsp x1,'
+.*: Error: illegal operands `c.sdsp x1,8'
+.*: Error: illegal operands `c.sdsp x1,8\(x2'
+.*: Error: illegal operands `c.sdsp 8,\(x2\)'
+.*: Error: illegal operands `c.sdsp x32,\(x2\)'
+.*: Error: illegal operands `c.sdsp x12,1\(x2\)'
+.*: Error: illegal operands `c.sdsp x12,-8\(x2\)'
+.*: Error: illegal operands `c.sdsp x12,7\(x2\)'
+.*: Error: illegal operands `c.sdsp x12,8\(x3\)'
+.*: Error: illegal operands `c.sdsp x12,8\(x1\)'
+.*: Error: illegal operands `c.sdsp x12,8\(x0\)'
+.*: Error: illegal operands `c.sdsp x12,9\(x2\)'
+.*: Error: illegal operands `c.sdsp x12,511\(x2\)'
+.*: Error: illegal operands `c.sdsp x12,512\(x2\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d b/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d
new file mode 100644
index 00000000000..7d42393e514
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sdsp-rv64.d
@@ -0,0 +1,19 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sdsp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+e002[ 	]+c.sdsp[ 	]+zero,0\(sp\)
+[ 	]+2:[ 	]+e006[ 	]+c.sdsp[ 	]+ra,0\(sp\)
+[ 	]+4:[ 	]+e40a[ 	]+c.sdsp[ 	]+sp,8\(sp\)
+[ 	]+6:[ 	]+e80e[ 	]+c.sdsp[ 	]+gp,16\(sp\)
+[ 	]+8:[ 	]+f012[ 	]+c.sdsp[ 	]+tp,32\(sp\)
+[ 	]+a:[ 	]+f426[ 	]+c.sdsp[ 	]+s1,40\(sp\)
+[ 	]+c:[ 	]+e0aa[ 	]+c.sdsp[ 	]+a0,64\(sp\)
+[ 	]+e:[ 	]+e12e[ 	]+c.sdsp[ 	]+a1,128\(sp\)
+[ 	]+10:[ 	]+fffe[ 	]+c.sdsp[ 	]+t6,504\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sdsp.s b/gas/testsuite/gas/riscv/zc-zca-sdsp.s
new file mode 100644
index 00000000000..348bd60bb36
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sdsp.s
@@ -0,0 +1,10 @@
+target:
+    c.sdsp x0, (x2)
+    c.sdsp x1, (x2)
+    c.sdsp x2, 8(x2)
+    c.sdsp x3, 16(x2)
+    c.sdsp x4, 32(x2)
+    c.sdsp x9, 40(x2)
+    c.sdsp x10, 64(x2)
+    c.sdsp x11, 128(x2)
+    c.sdsp x31, 504(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.d
new file mode 100644
index 00000000000..08bdb5cb2b7
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-slli-rv32-fail.s
+#error_output: zc-zca-slli-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.l
new file mode 100644
index 00000000000..25d3de7b78f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.slli'
+.*: Error: illegal operands `c.slli ,'
+.*: Error: illegal operands `c.slli ,1'
+.*: Error: illegal operands `c.slli x1,'
+.*: Error: illegal operands `c.slli x1,x2,4'
+.*: Error: illegal operands `c.slli 4,1'
+.*: Error: illegal operands `c.slli x0,0'
+.*: Error: illegal operands `c.slli x1,-1'
+.*: Error: illegal operands `c.slli x1,1.0'
+.*: Error: illegal operands `c.slli x1,32'
+.*: Error: illegal operands `c.slli x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.s
new file mode 100644
index 00000000000..d0dcaec442e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv32-fail.s
@@ -0,0 +1,13 @@
+target:
+    c.slli
+    c.slli ,
+    c.slli , 1
+    c.slli x1,
+    c.slli x1,x2,4
+
+    c.slli 4, 1
+    c.slli x0, 0
+    c.slli x1, -1
+    c.slli x1, 1.0
+    c.slli x1, 32
+    c.slli x1, x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv32.d b/gas/testsuite/gas/riscv/zc-zca-slli-rv32.d
new file mode 100644
index 00000000000..d2a0b435f5f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv32.d
@@ -0,0 +1,19 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-slli-rv32.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0086[ 	]+c.slli[ 	]+ra,0x1
+[ 	]+2:[ 	]+010e[ 	]+c.slli[ 	]+sp,0x3
+[ 	]+4:[ 	]+018a[ 	]+c.slli[ 	]+gp,0x2
+[ 	]+6:[ 	]+022a[ 	]+c.slli[ 	]+tp,0xa
+[ 	]+8:[ 	]+043e[ 	]+c.slli[ 	]+s0,0xf
+[ 	]+a:[ 	]+0546[ 	]+c.slli[ 	]+a0,0x11
+[ 	]+c:[ 	]+0fa6[ 	]+c.slli[ 	]+t6,0x9
+[ 	]+e:[ 	]+00489613[ 	]+slli[ 	]+a2,a7,0x4
+[ 	]+12:[ 	]+0006[ 	]+c.slli[ 	]+zero,0x1
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv32.s b/gas/testsuite/gas/riscv/zc-zca-slli-rv32.s
new file mode 100644
index 00000000000..ea1636ec0e6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv32.s
@@ -0,0 +1,10 @@
+target:
+    c.slli x1, 1
+    c.slli x2, 3
+    c.slli x3, 2
+    c.slli x4, 10
+    c.slli x8, 15
+    c.slli x10, 17
+    c.slli x31, 9
+    slli x12,x17, 4
+    c.slli x0, 1
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.d
new file mode 100644
index 00000000000..0ac30d6ee8c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-slli-rv64-fail.s
+#error_output: zc-zca-slli-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.l
new file mode 100644
index 00000000000..774909fe4ed
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.slli'
+.*: Error: illegal operands `c.slli ,'
+.*: Error: illegal operands `c.slli ,1'
+.*: Error: illegal operands `c.slli x1,'
+.*: Error: illegal operands `c.slli x1,x2,4'
+.*: Error: illegal operands `c.slli 4,1'
+.*: Error: illegal operands `c.slli x0,0'
+.*: Error: illegal operands `c.slli x1,-1'
+.*: Error: illegal operands `c.slli x1,1.0'
+.*: Error: illegal operands `c.slli x1,64'
+.*: Error: illegal operands `c.slli x1,x8'
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.s
new file mode 100644
index 00000000000..8b485b73874
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv64-fail.s
@@ -0,0 +1,13 @@
+target:
+    c.slli
+    c.slli ,
+    c.slli , 1
+    c.slli x1,
+    c.slli x1,x2,4
+
+    c.slli 4, 1
+    c.slli x0, 0
+    c.slli x1, -1
+    c.slli x1, 1.0
+    c.slli x1, 64
+    c.slli x1, x8
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv64.d b/gas/testsuite/gas/riscv/zc-zca-slli-rv64.d
new file mode 100644
index 00000000000..65b009dfdae
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv64.d
@@ -0,0 +1,19 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-slli-rv64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0086[ 	]+c.slli[ 	]+ra,0x1
+[ 	]+2:[ 	]+117e[ 	]+c.slli[ 	]+sp,0x3f
+[ 	]+4:[ 	]+018a[ 	]+c.slli[ 	]+gp,0x2
+[ 	]+6:[ 	]+022a[ 	]+c.slli[ 	]+tp,0xa
+[ 	]+8:[ 	]+1402[ 	]+c.slli[ 	]+s0,0x20
+[ 	]+a:[ 	]+0546[ 	]+c.slli[ 	]+a0,0x11
+[ 	]+c:[ 	]+0fa6[ 	]+c.slli[ 	]+t6,0x9
+[ 	]+e:[ 	]+00489613[ 	]+slli[ 	]+a2,a7,0x4
+[ 	]+12:[ 	]+0006[ 	]+c.slli[ 	]+zero,0x1
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli-rv64.s b/gas/testsuite/gas/riscv/zc-zca-slli-rv64.s
new file mode 100644
index 00000000000..e951ccd2adf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli-rv64.s
@@ -0,0 +1,10 @@
+target:
+    c.slli x1, 1
+    c.slli x2, 63
+    c.slli x3, 2
+    c.slli x4, 10
+    c.slli x8, 32
+    c.slli x10, 17
+    c.slli x31, 9
+    slli x12,x17, 4
+    c.slli x0, 1
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-fail.s b/gas/testsuite/gas/riscv/zc-zca-slli64-fail.s
new file mode 100644
index 00000000000..2d2035e3ccd
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-fail.s
@@ -0,0 +1,4 @@
+target:
+    c.slli64
+    c.slli64 x1,
+    c.slli64 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.d
new file mode 100644
index 00000000000..eaa3f878fc0
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-slli64-fail.s
+#error_output: zc-zca-slli64-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.l
new file mode 100644
index 00000000000..0288c6a453c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-rv32-fail.l
@@ -0,0 +1,4 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.slli64'
+.*: Error: illegal operands `c.slli64 x1,'
+.*: Error: illegal operands `c.slli64 3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d b/gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d
new file mode 100644
index 00000000000..05e69fd0d97
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-rv32.d
@@ -0,0 +1,18 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-slli64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0082[ 	]+c.slli64[ 	]+ra
+[ 	]+2:[ 	]+0102[ 	]+c.slli64[ 	]+sp
+[ 	]+4:[ 	]+0182[ 	]+c.slli64[ 	]+gp
+[ 	]+6:[ 	]+0202[ 	]+c.slli64[ 	]+tp
+[ 	]+8:[ 	]+0402[ 	]+c.slli64[ 	]+s0
+[ 	]+a:[ 	]+0782[ 	]+c.slli64[ 	]+a5
+[ 	]+c:[ 	]+0f82[ 	]+c.slli64[ 	]+t6
+[ 	]+e:[ 	]+0002[ 	]+c.slli64[ 	]+zero
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.d
new file mode 100644
index 00000000000..7e196e833b6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-slli64-fail.s
+#error_output: zc-zca-slli64-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.l
new file mode 100644
index 00000000000..0288c6a453c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-rv64-fail.l
@@ -0,0 +1,4 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.slli64'
+.*: Error: illegal operands `c.slli64 x1,'
+.*: Error: illegal operands `c.slli64 3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d b/gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d
new file mode 100644
index 00000000000..3addbdfd445
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64-rv64.d
@@ -0,0 +1,18 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-slli64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+0082[ 	]+c.slli64[ 	]+ra
+[ 	]+2:[ 	]+0102[ 	]+c.slli64[ 	]+sp
+[ 	]+4:[ 	]+0182[ 	]+c.slli64[ 	]+gp
+[ 	]+6:[ 	]+0202[ 	]+c.slli64[ 	]+tp
+[ 	]+8:[ 	]+0402[ 	]+c.slli64[ 	]+s0
+[ 	]+a:[ 	]+0782[ 	]+c.slli64[ 	]+a5
+[ 	]+c:[ 	]+0f82[ 	]+c.slli64[ 	]+t6
+[ 	]+e:[ 	]+0002[ 	]+c.slli64[ 	]+zero
diff --git a/gas/testsuite/gas/riscv/zc-zca-slli64.s b/gas/testsuite/gas/riscv/zc-zca-slli64.s
new file mode 100644
index 00000000000..251c728e418
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-slli64.s
@@ -0,0 +1,9 @@
+target:
+    c.slli64 x1
+    c.slli64 x2
+    c.slli64 x3
+    c.slli64 x4
+    c.slli64 x8
+    c.slli64 x15
+    c.slli64 x31
+    c.slli64 x0
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.d
new file mode 100644
index 00000000000..212e1a082f3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srai-rv32-fail.s
+#error_output: zc-zca-srai-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.l
new file mode 100644
index 00000000000..655f05faddd
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.l
@@ -0,0 +1,14 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srai'
+.*: Error: illegal operands `c.srai ,'
+.*: Error: illegal operands `c.srai ,1'
+.*: Error: illegal operands `c.srai x8,'
+.*: Error: illegal operands `c.srai x8,x11,15'
+.*: Error: illegal operands `c.srai x7,1'
+.*: Error: illegal operands `c.srai x16,1'
+.*: Error: illegal operands `c.srai 1,1'
+.*: Error: illegal operands `c.srai x8,0'
+.*: Error: illegal operands `c.srai x8,32'
+.*: Error: illegal operands `c.srai x8,-1'
+.*: Error: illegal operands `c.srai x8,1.0'
+.*: Error: illegal operands `c.srai x8,x10'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.s
new file mode 100644
index 00000000000..34f98bab50e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv32-fail.s
@@ -0,0 +1,15 @@
+target:
+    c.srai
+    c.srai ,
+    c.srai , 1
+    c.srai x8,
+    c.srai x8, x11, 15
+
+    c.srai x7, 1
+    c.srai x16, 1
+    c.srai 1, 1
+    c.srai x8, 0
+    c.srai x8, 32
+    c.srai x8, -1
+    c.srai x8, 1.0
+    c.srai x8, x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv32.d b/gas/testsuite/gas/riscv/zc-zca-srai-rv32.d
new file mode 100644
index 00000000000..cccf6ef0988
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srai-rv32.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8405[ 	]+c.srai[ 	]+s0,0x1
+[ 	]+2:[ 	]+853d[ 	]+c.srai[ 	]+a0,0xf
+[ 	]+4:[ 	]+87fd[ 	]+c.srai[ 	]+a5,0x1f
+[ 	]+6:[ 	]+40f5d413[ 	]+srai[ 	]+s0,a1,0xf
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv32.s b/gas/testsuite/gas/riscv/zc-zca-srai-rv32.s
new file mode 100644
index 00000000000..ec7b6aa499c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv32.s
@@ -0,0 +1,5 @@
+target:
+    c.srai x8, 1
+    c.srai x10, 15
+    c.srai x15, 31
+    srai x8, x11, 15
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.d
new file mode 100644
index 00000000000..40796583470
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srai-rv64-fail.s
+#error_output: zc-zca-srai-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.l
new file mode 100644
index 00000000000..fe1ad1cc838
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.l
@@ -0,0 +1,14 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srai'
+.*: Error: illegal operands `c.srai ,'
+.*: Error: illegal operands `c.srai ,1'
+.*: Error: illegal operands `c.srai x8,'
+.*: Error: illegal operands `c.srai x8,x11,15'
+.*: Error: illegal operands `c.srai x7,1'
+.*: Error: illegal operands `c.srai x16,1'
+.*: Error: illegal operands `c.srai 1,1'
+.*: Error: illegal operands `c.srai x8,0'
+.*: Error: illegal operands `c.srai x8,64'
+.*: Error: illegal operands `c.srai x8,-1'
+.*: Error: illegal operands `c.srai x8,1.0'
+.*: Error: illegal operands `c.srai x8,x10'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.s
new file mode 100644
index 00000000000..8915f77fb50
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv64-fail.s
@@ -0,0 +1,15 @@
+target:
+    c.srai
+    c.srai ,
+    c.srai , 1
+    c.srai x8,
+    c.srai x8, x11, 15
+
+    c.srai x7, 1
+    c.srai x16, 1
+    c.srai 1, 1
+    c.srai x8, 0
+    c.srai x8, 64
+    c.srai x8, -1
+    c.srai x8, 1.0
+    c.srai x8, x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv64.d b/gas/testsuite/gas/riscv/zc-zca-srai-rv64.d
new file mode 100644
index 00000000000..847bf7dc6d4
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srai-rv64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8405[ 	]+c.srai[ 	]+s0,0x1
+[ 	]+2:[ 	]+9505[ 	]+c.srai[ 	]+a0,0x21
+[ 	]+4:[ 	]+97fd[ 	]+c.srai[ 	]+a5,0x3f
+[ 	]+6:[ 	]+40f5d413[ 	]+srai[ 	]+s0,a1,0xf
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai-rv64.s b/gas/testsuite/gas/riscv/zc-zca-srai-rv64.s
new file mode 100644
index 00000000000..9a4bb2a519b
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai-rv64.s
@@ -0,0 +1,5 @@
+target:
+    c.srai x8, 1
+    c.srai x10, 33
+    c.srai x15, 63
+    srai x8, x11, 15
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-fail.s b/gas/testsuite/gas/riscv/zc-zca-srai64-fail.s
new file mode 100644
index 00000000000..6143b3356de
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-fail.s
@@ -0,0 +1,6 @@
+target:
+    C.srai64
+    C.srai64 x8,
+    c.srai64 x7
+    c.srai64 x16
+    c.srai64 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.d
new file mode 100644
index 00000000000..a9bc928397c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srai64-fail.s
+#error_output: zc-zca-srai64-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.l
new file mode 100644
index 00000000000..9f0719d629d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-rv32-fail.l
@@ -0,0 +1,6 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srai64'
+.*: Error: illegal operands `c.srai64 x8,'
+.*: Error: illegal operands `c.srai64 x7'
+.*: Error: illegal operands `c.srai64 x16'
+.*: Error: illegal operands `c.srai64 3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d b/gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d
new file mode 100644
index 00000000000..4ff3b72dc63
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-rv32.d
@@ -0,0 +1,13 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srai64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8401[ 	]+c.srai64[ 	]+s0
+[ 	]+2:[ 	]+8501[ 	]+c.srai64[ 	]+a0
+[ 	]+4:[ 	]+8781[ 	]+c.srai64[ 	]+a5
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.d
new file mode 100644
index 00000000000..88b5dd52bd2
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srai64-fail.s
+#error_output: zc-zca-srai64-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.l
new file mode 100644
index 00000000000..9f0719d629d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-rv64-fail.l
@@ -0,0 +1,6 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srai64'
+.*: Error: illegal operands `c.srai64 x8,'
+.*: Error: illegal operands `c.srai64 x7'
+.*: Error: illegal operands `c.srai64 x16'
+.*: Error: illegal operands `c.srai64 3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d b/gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d
new file mode 100644
index 00000000000..ea802b21488
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64-rv64.d
@@ -0,0 +1,13 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srai64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8401[ 	]+c.srai64[ 	]+s0
+[ 	]+2:[ 	]+8501[ 	]+c.srai64[ 	]+a0
+[ 	]+4:[ 	]+8781[ 	]+c.srai64[ 	]+a5
diff --git a/gas/testsuite/gas/riscv/zc-zca-srai64.s b/gas/testsuite/gas/riscv/zc-zca-srai64.s
new file mode 100644
index 00000000000..31d8b41077c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srai64.s
@@ -0,0 +1,4 @@
+target:
+    c.srai64 x8
+    c.srai64 x10
+    c.srai64 x15
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.d
new file mode 100644
index 00000000000..3579d073536
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srli-rv32-fail.s
+#error_output: zc-zca-srli-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.l
new file mode 100644
index 00000000000..22f8aeda39f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.l
@@ -0,0 +1,14 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srli'
+.*: Error: illegal operands `c.srli ,'
+.*: Error: illegal operands `c.srli ,1'
+.*: Error: illegal operands `c.srli x8,'
+.*: Error: illegal operands `c.srli x8,x11,15'
+.*: Error: illegal operands `c.srli x7,1'
+.*: Error: illegal operands `c.srli x16,1'
+.*: Error: illegal operands `c.srli 1,1'
+.*: Error: illegal operands `c.srli x8,0'
+.*: Error: illegal operands `c.srli x8,32'
+.*: Error: illegal operands `c.srli x8,-1'
+.*: Error: illegal operands `c.srli x8,1.0'
+.*: Error: illegal operands `c.srli x8,x10'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.s
new file mode 100644
index 00000000000..76884437c10
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv32-fail.s
@@ -0,0 +1,15 @@
+target:
+    c.srli
+    c.srli ,
+    c.srli , 1
+    c.srli x8,
+    c.srli x8, x11, 15
+
+    c.srli x7, 1
+    c.srli x16, 1
+    c.srli 1, 1
+    c.srli x8, 0
+    c.srli x8, 32
+    c.srli x8, -1
+    c.srli x8, 1.0
+    c.srli x8, x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv32.d b/gas/testsuite/gas/riscv/zc-zca-srli-rv32.d
new file mode 100644
index 00000000000..47bdb0b9ae8
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srli-rv32.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8005[ 	]+c.srli[ 	]+s0,0x1
+[ 	]+2:[ 	]+813d[ 	]+c.srli[ 	]+a0,0xf
+[ 	]+4:[ 	]+83fd[ 	]+c.srli[ 	]+a5,0x1f
+[ 	]+6:[ 	]+00f5d413[ 	]+srli[ 	]+s0,a1,0xf
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv32.s b/gas/testsuite/gas/riscv/zc-zca-srli-rv32.s
new file mode 100644
index 00000000000..fd1cca11f8c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv32.s
@@ -0,0 +1,5 @@
+target:
+    c.srli x8, 1
+    c.srli x10, 15
+    c.srli x15, 31
+    srli x8, x11, 15
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.d
new file mode 100644
index 00000000000..dc969e1763c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srli-rv64-fail.s
+#error_output: zc-zca-srli-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.l
new file mode 100644
index 00000000000..0075ace3edf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.l
@@ -0,0 +1,14 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srli'
+.*: Error: illegal operands `c.srli ,'
+.*: Error: illegal operands `c.srli ,1'
+.*: Error: illegal operands `c.srli x8,'
+.*: Error: illegal operands `c.srli x8,x11,15'
+.*: Error: illegal operands `c.srli x7,1'
+.*: Error: illegal operands `c.srli x16,1'
+.*: Error: illegal operands `c.srli 1,1'
+.*: Error: illegal operands `c.srli x8,0'
+.*: Error: illegal operands `c.srli x8,64'
+.*: Error: illegal operands `c.srli x8,-1'
+.*: Error: illegal operands `c.srli x8,1.0'
+.*: Error: illegal operands `c.srli x8,x10'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.s
new file mode 100644
index 00000000000..edf8d21ec5d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv64-fail.s
@@ -0,0 +1,15 @@
+target:
+    c.srli
+    c.srli ,
+    c.srli , 1
+    c.srli x8,
+    c.srli x8, x11, 15
+
+    c.srli x7, 1
+    c.srli x16, 1
+    c.srli 1, 1
+    c.srli x8, 0
+    c.srli x8, 64
+    c.srli x8, -1
+    c.srli x8, 1.0
+    c.srli x8, x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv64.d b/gas/testsuite/gas/riscv/zc-zca-srli-rv64.d
new file mode 100644
index 00000000000..0313b754d17
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srli-rv64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8005[ 	]+c.srli[ 	]+s0,0x1
+[ 	]+2:[ 	]+9105[ 	]+c.srli[ 	]+a0,0x21
+[ 	]+4:[ 	]+93fd[ 	]+c.srli[ 	]+a5,0x3f
+[ 	]+6:[ 	]+00f5d413[ 	]+srli[ 	]+s0,a1,0xf
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli-rv64.s b/gas/testsuite/gas/riscv/zc-zca-srli-rv64.s
new file mode 100644
index 00000000000..e6da296390c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli-rv64.s
@@ -0,0 +1,5 @@
+target:
+    c.srli x8, 1
+    c.srli x10, 33
+    c.srli x15, 63
+    srli x8, x11, 15
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-fail.s b/gas/testsuite/gas/riscv/zc-zca-srli64-fail.s
new file mode 100644
index 00000000000..2fbff5347a8
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-fail.s
@@ -0,0 +1,6 @@
+target:
+    C.srli64
+    C.srli64 x8,
+    c.srli64 x7
+    c.srli64 x16
+    c.srli64 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.d
new file mode 100644
index 00000000000..6b32c2bf156
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srli64-fail.s
+#error_output: zc-zca-srli64-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.l
new file mode 100644
index 00000000000..3049e8559b6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-rv32-fail.l
@@ -0,0 +1,6 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srli64'
+.*: Error: illegal operands `c.srli64 x8,'
+.*: Error: illegal operands `c.srli64 x7'
+.*: Error: illegal operands `c.srli64 x16'
+.*: Error: illegal operands `c.srli64 3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d b/gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d
new file mode 100644
index 00000000000..290466f737f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-rv32.d
@@ -0,0 +1,13 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-srli64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8001[ 	]+c.srli64[ 	]+s0
+[ 	]+2:[ 	]+8101[ 	]+c.srli64[ 	]+a0
+[ 	]+4:[ 	]+8381[ 	]+c.srli64[ 	]+a5
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.d
new file mode 100644
index 00000000000..aaeb6c0cdb3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srli64-fail.s
+#error_output: zc-zca-srli64-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.l
new file mode 100644
index 00000000000..3049e8559b6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-rv64-fail.l
@@ -0,0 +1,6 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.srli64'
+.*: Error: illegal operands `c.srli64 x8,'
+.*: Error: illegal operands `c.srli64 x7'
+.*: Error: illegal operands `c.srli64 x16'
+.*: Error: illegal operands `c.srli64 3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d b/gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d
new file mode 100644
index 00000000000..00112dbf978
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64-rv64.d
@@ -0,0 +1,13 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-srli64.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8001[ 	]+c.srli64[ 	]+s0
+[ 	]+2:[ 	]+8101[ 	]+c.srli64[ 	]+a0
+[ 	]+4:[ 	]+8381[ 	]+c.srli64[ 	]+a5
diff --git a/gas/testsuite/gas/riscv/zc-zca-srli64.s b/gas/testsuite/gas/riscv/zc-zca-srli64.s
new file mode 100644
index 00000000000..429fb337524
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-srli64.s
@@ -0,0 +1,4 @@
+target:
+    c.srli64 x8
+    c.srli64 x10
+    c.srli64 x15
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-fail.s b/gas/testsuite/gas/riscv/zc-zca-sub-fail.s
new file mode 100644
index 00000000000..c6e46b3c997
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.sub
+    c.sub ,
+    c.sub , x8
+    c.sub x8,
+    c.sub , ,
+
+    c.sub x7, x8
+    c.sub x16, x8
+    c.sub 3, x8
+
+    c.sub x8, x7
+    c.sub x8, x16
+    c.sub x8, 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.d
new file mode 100644
index 00000000000..13e6ae0ee0e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-sub-fail.s
+#error_output: zc-zca-sub-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.l
new file mode 100644
index 00000000000..03474606cf8
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.sub'
+.*: Error: illegal operands `c.sub ,'
+.*: Error: illegal operands `c.sub ,x8'
+.*: Error: illegal operands `c.sub x8,'
+.*: Error: illegal operands `c.sub ,,'
+.*: Error: illegal operands `c.sub x7,x8'
+.*: Error: illegal operands `c.sub x16,x8'
+.*: Error: illegal operands `c.sub 3,x8'
+.*: Error: illegal operands `c.sub x8,x7'
+.*: Error: illegal operands `c.sub x8,x16'
+.*: Error: illegal operands `c.sub x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-rv32.d b/gas/testsuite/gas/riscv/zc-zca-sub-rv32.d
new file mode 100644
index 00000000000..f43921cf434
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-sub.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c05[ 	]+c.sub[ 	]+s0,s1
+[ 	]+2:[ 	]+8d0d[ 	]+c.sub[ 	]+a0,a1
+[ 	]+4:[ 	]+8f9d[ 	]+c.sub[ 	]+a5,a5
+[ 	]+6:[ 	]+40a48433[ 	]+sub[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.d
new file mode 100644
index 00000000000..ed81c03e236
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sub-fail.s
+#error_output: zc-zca-sub-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.l
new file mode 100644
index 00000000000..03474606cf8
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.sub'
+.*: Error: illegal operands `c.sub ,'
+.*: Error: illegal operands `c.sub ,x8'
+.*: Error: illegal operands `c.sub x8,'
+.*: Error: illegal operands `c.sub ,,'
+.*: Error: illegal operands `c.sub x7,x8'
+.*: Error: illegal operands `c.sub x16,x8'
+.*: Error: illegal operands `c.sub 3,x8'
+.*: Error: illegal operands `c.sub x8,x7'
+.*: Error: illegal operands `c.sub x8,x16'
+.*: Error: illegal operands `c.sub x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub-rv64.d b/gas/testsuite/gas/riscv/zc-zca-sub-rv64.d
new file mode 100644
index 00000000000..2ffe6900d72
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sub.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c05[ 	]+c.sub[ 	]+s0,s1
+[ 	]+2:[ 	]+8d0d[ 	]+c.sub[ 	]+a0,a1
+[ 	]+4:[ 	]+8f9d[ 	]+c.sub[ 	]+a5,a5
+[ 	]+6:[ 	]+40a48433[ 	]+sub[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-sub.s b/gas/testsuite/gas/riscv/zc-zca-sub.s
new file mode 100644
index 00000000000..700dd6c51a6
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sub.s
@@ -0,0 +1,5 @@
+target:
+    c.sub x8, x9
+    c.sub x10,x11
+    c.sub x15,x15
+    sub x8,x9,x10
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-fail.s b/gas/testsuite/gas/riscv/zc-zca-sw-fail.s
new file mode 100644
index 00000000000..99cc3e0178a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-fail.s
@@ -0,0 +1,27 @@
+target:
+    c.sw
+    c.sw , (x9)
+    c.sw x8,
+    c.sw x8, 124
+    c.sw x8, x9
+
+    c.sw x0, (x9)
+    c.sw x1, (x9)
+    c.sw x7, (x9)
+    c.sw x16, (x8)
+    c.sw 4, (x8)
+
+    c.sw x10, (x7)
+    c.sw x10, (x16)
+    c.sw x10, (x0)
+    c.sw x10, (x2)
+    c.sw x10, (x31)
+
+    c.sw x11, 1(x8)
+    c.sw x11, 2(x8)
+    c.sw x11, 3(x8)
+    c.sw x11, -4(x8)
+    c.sw x11, 5(x8)
+    c.sw x11, 123(x8)
+    c.sw x11, 125(x8)
+    c.sw x11, 128(x8)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d
new file mode 100644
index 00000000000..8e3e6407f76
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-sw-fail.s
+#error_output: zc-zca-sw-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l
new file mode 100644
index 00000000000..42751881819
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-rv32-fail.l
@@ -0,0 +1,24 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.sw'
+.*: Error: illegal operands `c.sw ,\(x9\)'
+.*: Error: illegal operands `c.sw x8,'
+.*: Error: illegal operands `c.sw x8,124'
+.*: Error: illegal operands `c.sw x8,x9'
+.*: Error: illegal operands `c.sw x0,\(x9\)'
+.*: Error: illegal operands `c.sw x1,\(x9\)'
+.*: Error: illegal operands `c.sw x7,\(x9\)'
+.*: Error: illegal operands `c.sw x16,\(x8\)'
+.*: Error: illegal operands `c.sw 4,\(x8\)'
+.*: Error: illegal operands `c.sw x10,\(x7\)'
+.*: Error: illegal operands `c.sw x10,\(x16\)'
+.*: Error: illegal operands `c.sw x10,\(x0\)'
+.*: Error: illegal operands `c.sw x10,\(x2\)'
+.*: Error: illegal operands `c.sw x10,\(x31\)'
+.*: Error: illegal operands `c.sw x11,1\(x8\)'
+.*: Error: illegal operands `c.sw x11,2\(x8\)'
+.*: Error: illegal operands `c.sw x11,3\(x8\)'
+.*: Error: illegal operands `c.sw x11,-4\(x8\)'
+.*: Error: illegal operands `c.sw x11,5\(x8\)'
+.*: Error: illegal operands `c.sw x11,123\(x8\)'
+.*: Error: illegal operands `c.sw x11,125\(x8\)'
+.*: Error: illegal operands `c.sw x11,128\(x8\)'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-rv32.d b/gas/testsuite/gas/riscv/zc-zca-sw-rv32.d
new file mode 100644
index 00000000000..e1c5b586ffc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-rv32.d
@@ -0,0 +1,19 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-sw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+c080[ 	]+c.sw[ 	]+s0,0\(s1\)
+[ 	]+2:[ 	]+d104[ 	]+c.sw[ 	]+s1,32\(a0\)
+[ 	]+4:[ 	]+dde8[ 	]+c.sw[ 	]+a0,124\(a1\)
+[ 	]+6:[ 	]+c22c[ 	]+c.sw[ 	]+a1,64\(a2\)
+[ 	]+8:[ 	]+c2f0[ 	]+c.sw[ 	]+a2,68\(a3\)
+[ 	]+a:[ 	]+c354[ 	]+c.sw[ 	]+a3,4\(a4\)
+[ 	]+c:[ 	]+c798[ 	]+c.sw[ 	]+a4,8\(a5\)
+[ 	]+e:[ 	]+c81c[ 	]+c.sw[ 	]+a5,16\(s0\)
+[ 	]+10:[ 	]+c02a[ 	]+c.swsp[ 	]+a0,0\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d
new file mode 100644
index 00000000000..b908b5f0edf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sw-fail.s
+#error_output: zc-zca-sw-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l
new file mode 100644
index 00000000000..42751881819
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-rv64-fail.l
@@ -0,0 +1,24 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.sw'
+.*: Error: illegal operands `c.sw ,\(x9\)'
+.*: Error: illegal operands `c.sw x8,'
+.*: Error: illegal operands `c.sw x8,124'
+.*: Error: illegal operands `c.sw x8,x9'
+.*: Error: illegal operands `c.sw x0,\(x9\)'
+.*: Error: illegal operands `c.sw x1,\(x9\)'
+.*: Error: illegal operands `c.sw x7,\(x9\)'
+.*: Error: illegal operands `c.sw x16,\(x8\)'
+.*: Error: illegal operands `c.sw 4,\(x8\)'
+.*: Error: illegal operands `c.sw x10,\(x7\)'
+.*: Error: illegal operands `c.sw x10,\(x16\)'
+.*: Error: illegal operands `c.sw x10,\(x0\)'
+.*: Error: illegal operands `c.sw x10,\(x2\)'
+.*: Error: illegal operands `c.sw x10,\(x31\)'
+.*: Error: illegal operands `c.sw x11,1\(x8\)'
+.*: Error: illegal operands `c.sw x11,2\(x8\)'
+.*: Error: illegal operands `c.sw x11,3\(x8\)'
+.*: Error: illegal operands `c.sw x11,-4\(x8\)'
+.*: Error: illegal operands `c.sw x11,5\(x8\)'
+.*: Error: illegal operands `c.sw x11,123\(x8\)'
+.*: Error: illegal operands `c.sw x11,125\(x8\)'
+.*: Error: illegal operands `c.sw x11,128\(x8\)'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw-rv64.d b/gas/testsuite/gas/riscv/zc-zca-sw-rv64.d
new file mode 100644
index 00000000000..ffbf6ae2b82
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw-rv64.d
@@ -0,0 +1,19 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-sw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+c080[ 	]+c.sw[ 	]+s0,0\(s1\)
+[ 	]+2:[ 	]+d104[ 	]+c.sw[ 	]+s1,32\(a0\)
+[ 	]+4:[ 	]+dde8[ 	]+c.sw[ 	]+a0,124\(a1\)
+[ 	]+6:[ 	]+c22c[ 	]+c.sw[ 	]+a1,64\(a2\)
+[ 	]+8:[ 	]+c2f0[ 	]+c.sw[ 	]+a2,68\(a3\)
+[ 	]+a:[ 	]+c354[ 	]+c.sw[ 	]+a3,4\(a4\)
+[ 	]+c:[ 	]+c798[ 	]+c.sw[ 	]+a4,8\(a5\)
+[ 	]+e:[ 	]+c81c[ 	]+c.sw[ 	]+a5,16\(s0\)
+[ 	]+10:[ 	]+c02a[ 	]+c.swsp[ 	]+a0,0\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-sw.s b/gas/testsuite/gas/riscv/zc-zca-sw.s
new file mode 100644
index 00000000000..481f80257b2
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-sw.s
@@ -0,0 +1,10 @@
+target:
+    c.sw x8, (x9)
+    c.sw x9, 32(x10)
+    c.sw x10, 124(x11)
+    c.sw x11, 64(x12)
+    c.sw x12, 68(x13)
+    c.sw x13, 4(x14)
+    c.sw x14, 8(x15)
+    c.sw x15, 16(x8)
+    sw a0, (sp)
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-fail.s b/gas/testsuite/gas/riscv/zc-zca-swsp-fail.s
new file mode 100644
index 00000000000..84aa866377e
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-fail.s
@@ -0,0 +1,21 @@
+target:
+    c.swsp
+    c.swsp , (x2)
+    c.swsp x1,
+    c.swsp x1, 4
+
+    c.swsp 4, (x2)
+    c.swsp x32, (x2)
+
+    c.swsp x12, 1(x2)
+    c.swsp x12, -1(x2)
+    c.swsp x12, 2(x2)
+    c.swsp x12, 3(x2)
+    c.swsp x12, 4(x3)
+    c.swsp x12, 8(x1)
+    c.swsp x12, 12(x0)
+    c.swsp x12, 5(x2)
+    c.swsp x12, 253(x2)
+    c.swsp x12, 254(x2)
+    c.swsp x12, 255(x2)
+    c.swsp x12, 256(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.d
new file mode 100644
index 00000000000..131cbba03d2
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-swsp-fail.s
+#error_output: zc-zca-swsp-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.l
new file mode 100644
index 00000000000..73d3f3b25fc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-rv32-fail.l
@@ -0,0 +1,19 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.swsp'
+.*: Error: illegal operands `c.swsp ,\(x2\)'
+.*: Error: illegal operands `c.swsp x1,'
+.*: Error: illegal operands `c.swsp x1,4'
+.*: Error: illegal operands `c.swsp 4,\(x2\)'
+.*: Error: illegal operands `c.swsp x32,\(x2\)'
+.*: Error: illegal operands `c.swsp x12,1\(x2\)'
+.*: Error: illegal operands `c.swsp x12,-1\(x2\)'
+.*: Error: illegal operands `c.swsp x12,2\(x2\)'
+.*: Error: illegal operands `c.swsp x12,3\(x2\)'
+.*: Error: illegal operands `c.swsp x12,4\(x3\)'
+.*: Error: illegal operands `c.swsp x12,8\(x1\)'
+.*: Error: illegal operands `c.swsp x12,12\(x0\)'
+.*: Error: illegal operands `c.swsp x12,5\(x2\)'
+.*: Error: illegal operands `c.swsp x12,253\(x2\)'
+.*: Error: illegal operands `c.swsp x12,254\(x2\)'
+.*: Error: illegal operands `c.swsp x12,255\(x2\)'
+.*: Error: illegal operands `c.swsp x12,256\(x2\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d b/gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d
new file mode 100644
index 00000000000..e6585ed2e88
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-rv32.d
@@ -0,0 +1,19 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-swsp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+c002[ 	]+c.swsp[ 	]+zero,0\(sp\)
+[ 	]+2:[ 	]+c006[ 	]+c.swsp[ 	]+ra,0\(sp\)
+[ 	]+4:[ 	]+c20a[ 	]+c.swsp[ 	]+sp,4\(sp\)
+[ 	]+6:[ 	]+c40e[ 	]+c.swsp[ 	]+gp,8\(sp\)
+[ 	]+8:[ 	]+d012[ 	]+c.swsp[ 	]+tp,32\(sp\)
+[ 	]+a:[ 	]+d426[ 	]+c.swsp[ 	]+s1,40\(sp\)
+[ 	]+c:[ 	]+deaa[ 	]+c.swsp[ 	]+a0,124\(sp\)
+[ 	]+e:[ 	]+c12e[ 	]+c.swsp[ 	]+a1,128\(sp\)
+[ 	]+10:[ 	]+dffe[ 	]+c.swsp[ 	]+t6,252\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.d
new file mode 100644
index 00000000000..f192f11db52
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-swsp-fail.s
+#error_output: zc-zca-swsp-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.l
new file mode 100644
index 00000000000..73d3f3b25fc
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-rv64-fail.l
@@ -0,0 +1,19 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.swsp'
+.*: Error: illegal operands `c.swsp ,\(x2\)'
+.*: Error: illegal operands `c.swsp x1,'
+.*: Error: illegal operands `c.swsp x1,4'
+.*: Error: illegal operands `c.swsp 4,\(x2\)'
+.*: Error: illegal operands `c.swsp x32,\(x2\)'
+.*: Error: illegal operands `c.swsp x12,1\(x2\)'
+.*: Error: illegal operands `c.swsp x12,-1\(x2\)'
+.*: Error: illegal operands `c.swsp x12,2\(x2\)'
+.*: Error: illegal operands `c.swsp x12,3\(x2\)'
+.*: Error: illegal operands `c.swsp x12,4\(x3\)'
+.*: Error: illegal operands `c.swsp x12,8\(x1\)'
+.*: Error: illegal operands `c.swsp x12,12\(x0\)'
+.*: Error: illegal operands `c.swsp x12,5\(x2\)'
+.*: Error: illegal operands `c.swsp x12,253\(x2\)'
+.*: Error: illegal operands `c.swsp x12,254\(x2\)'
+.*: Error: illegal operands `c.swsp x12,255\(x2\)'
+.*: Error: illegal operands `c.swsp x12,256\(x2\)'
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d b/gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d
new file mode 100644
index 00000000000..0b2fe2b50f3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp-rv64.d
@@ -0,0 +1,19 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-swsp.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+c002[ 	]+c.swsp[ 	]+zero,0\(sp\)
+[ 	]+2:[ 	]+c006[ 	]+c.swsp[ 	]+ra,0\(sp\)
+[ 	]+4:[ 	]+c20a[ 	]+c.swsp[ 	]+sp,4\(sp\)
+[ 	]+6:[ 	]+c40e[ 	]+c.swsp[ 	]+gp,8\(sp\)
+[ 	]+8:[ 	]+d012[ 	]+c.swsp[ 	]+tp,32\(sp\)
+[ 	]+a:[ 	]+d426[ 	]+c.swsp[ 	]+s1,40\(sp\)
+[ 	]+c:[ 	]+deaa[ 	]+c.swsp[ 	]+a0,124\(sp\)
+[ 	]+e:[ 	]+c12e[ 	]+c.swsp[ 	]+a1,128\(sp\)
+[ 	]+10:[ 	]+dffe[ 	]+c.swsp[ 	]+t6,252\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zca-swsp.s b/gas/testsuite/gas/riscv/zc-zca-swsp.s
new file mode 100644
index 00000000000..c3589d73d16
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-swsp.s
@@ -0,0 +1,10 @@
+target:
+    c.swsp x0, (x2)
+    c.swsp x1, (x2)
+    c.swsp x2, 4(x2)
+    c.swsp x3, 8(x2)
+    c.swsp x4, 32(x2)
+    c.swsp x9, 40(x2)
+    c.swsp x10, 124(x2)
+    c.swsp x11, 128(x2)
+    c.swsp x31, 252(x2)
diff --git a/gas/testsuite/gas/riscv/zc-zca-unimp-fail.s b/gas/testsuite/gas/riscv/zc-zca-unimp-fail.s
new file mode 100644
index 00000000000..309ed27e084
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-unimp-fail.s
@@ -0,0 +1,3 @@
+target:
+	c.unimp 1
+	c.unimp a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.d
new file mode 100644
index 00000000000..96b69d95f4a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-unimp-fail.s
+#error_output: zc-zca-unimp-rv32-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.l
new file mode 100644
index 00000000000..488b84a8148
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-unimp-rv32-fail.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.unimp 1'
+.*: Error: illegal operands `c.unimp a0'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.d
new file mode 100644
index 00000000000..e2a029db823
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-unimp-fail.s
+#error_output: zc-zca-unimp-rv64-fail.l
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.l
new file mode 100644
index 00000000000..488b84a8148
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-unimp-rv64-fail.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.unimp 1'
+.*: Error: illegal operands `c.unimp a0'
\ No newline at end of file
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-fail.s b/gas/testsuite/gas/riscv/zc-zca-xor-fail.s
new file mode 100644
index 00000000000..f0dc27f5ffe
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-fail.s
@@ -0,0 +1,14 @@
+target:
+    c.xor
+    c.xor ,
+    c.xor , x8
+    c.xor x8,
+    c.xor , ,
+
+    c.xor x7, x8
+    c.xor x16, x8
+    c.xor 3, x8
+
+    c.xor x8, x7
+    c.xor x8, x16
+    c.xor x8, 3
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.d
new file mode 100644
index 00000000000..3abbd1e78aa
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-xor-fail.s
+#error_output: zc-zca-xor-rv32-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.l
new file mode 100644
index 00000000000..818bdc68573
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-rv32-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.xor'
+.*: Error: illegal operands `c.xor ,'
+.*: Error: illegal operands `c.xor ,x8'
+.*: Error: illegal operands `c.xor x8,'
+.*: Error: illegal operands `c.xor ,,'
+.*: Error: illegal operands `c.xor x7,x8'
+.*: Error: illegal operands `c.xor x16,x8'
+.*: Error: illegal operands `c.xor 3,x8'
+.*: Error: illegal operands `c.xor x8,x7'
+.*: Error: illegal operands `c.xor x8,x16'
+.*: Error: illegal operands `c.xor x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-rv32.d b/gas/testsuite/gas/riscv/zc-zca-xor-rv32.d
new file mode 100644
index 00000000000..0f6ec1b5ddf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-rv32.d
@@ -0,0 +1,14 @@
+#as: -march=rv32ifd_zca
+#source: zc-zca-xor.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c25[ 	]+c.xor[ 	]+s0,s1
+[ 	]+2:[ 	]+8d2d[ 	]+c.xor[ 	]+a0,a1
+[ 	]+4:[ 	]+8fbd[ 	]+c.xor[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4c433[ 	]+xor[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.d
new file mode 100644
index 00000000000..142a60ebf17
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.d
@@ -0,0 +1,3 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-xor-fail.s
+#error_output: zc-zca-xor-rv64-fail.l
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.l
new file mode 100644
index 00000000000..818bdc68573
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-rv64-fail.l
@@ -0,0 +1,12 @@
+.*: Assembler messages:
+.*: Error: illegal operands `c.xor'
+.*: Error: illegal operands `c.xor ,'
+.*: Error: illegal operands `c.xor ,x8'
+.*: Error: illegal operands `c.xor x8,'
+.*: Error: illegal operands `c.xor ,,'
+.*: Error: illegal operands `c.xor x7,x8'
+.*: Error: illegal operands `c.xor x16,x8'
+.*: Error: illegal operands `c.xor 3,x8'
+.*: Error: illegal operands `c.xor x8,x7'
+.*: Error: illegal operands `c.xor x8,x16'
+.*: Error: illegal operands `c.xor x8,3'
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor-rv64.d b/gas/testsuite/gas/riscv/zc-zca-xor-rv64.d
new file mode 100644
index 00000000000..78046c5d5be
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor-rv64.d
@@ -0,0 +1,14 @@
+#as: -march=rv64ifd_zca
+#source: zc-zca-xor.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+8c25[ 	]+c.xor[ 	]+s0,s1
+[ 	]+2:[ 	]+8d2d[ 	]+c.xor[ 	]+a0,a1
+[ 	]+4:[ 	]+8fbd[ 	]+c.xor[ 	]+a5,a5
+[ 	]+6:[ 	]+00a4c433[ 	]+xor[ 	]+s0,s1,a0
diff --git a/gas/testsuite/gas/riscv/zc-zca-xor.s b/gas/testsuite/gas/riscv/zc-zca-xor.s
new file mode 100644
index 00000000000..9bb6e0a4641
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zca-xor.s
@@ -0,0 +1,5 @@
+target:
+    c.xor x8, x9
+    c.xor x10,x11
+    c.xor x15,x15
+    xor x8,x9,x10
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 3/4] RISC-V: Add Zcf extension testcases.
  2023-06-13 13:23 [PATCH 0/4] RISC-V: Support ZC* extensions Jiawei
  2023-06-13 13:23 ` [PATCH 1/4] RISC-V: Minimal support of ZC extensions Jiawei
  2023-06-13 13:23 ` [PATCH 2/4] RISC-V: Add Zca extension testcases Jiawei
@ 2023-06-13 13:23 ` Jiawei
  2023-06-13 13:23 ` [PATCH 4/4] RISC-V: Add Zcd " Jiawei
  3 siblings, 0 replies; 6+ messages in thread
From: Jiawei @ 2023-06-13 13:23 UTC (permalink / raw)
  To: binutils
  Cc: nelson, kito.cheng, palmer, christoph.muellner, jeremy.bennett,
	mary.bennett, nandni.jamnadas, charlie.keaney, simon.cook,
	tariq.kurd, ibrahim.abu.kharmeh1, gaofei, sinan.lin, wuwei2016,
	shihua, shiyulong, chenyixuan, Jiawei

Add Zcf extension testcases, notice that zcf only uses in rv32 with f
extension.

Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com>
Co-Authored by: Mary Bennett <mary.bennett@embecosm.com>
Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com>
Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com>
Co-Authored by: Simon Cook <simon.cook@embecosm.com>
Co-Authored by: Shihua Liao <shihua@iscas.ac.cn>
Co-Authored by: Yulong Shi <yulong@iscas.ac.cn>

gas/ChangeLog:

        * testsuite/gas/riscv/zc-zcf-flw-32.d: New test.
        * testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.d: New test.
        * testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.l: New test.
        * testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.s: New test.
        * testsuite/gas/riscv/zc-zcf-flw.s: New test.
        * testsuite/gas/riscv/zc-zcf-fsw-32.d: New test.
        * testsuite/gas/riscv/zc-zcf-fsw.s: New test.

---
 gas/testsuite/gas/riscv/zc-zcf-flw-32.d          | 16 ++++++++++++++++
 .../gas/riscv/zc-zcf-flw-fsw-fail-march.d        |  3 +++
 .../gas/riscv/zc-zcf-flw-fsw-fail-march.l        | 13 +++++++++++++
 .../gas/riscv/zc-zcf-flw-fsw-fail-march.s        | 15 +++++++++++++++
 gas/testsuite/gas/riscv/zc-zcf-flw.s             |  8 ++++++++
 gas/testsuite/gas/riscv/zc-zcf-fsw-32.d          | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zcf-fsw.s             |  8 ++++++++
 7 files changed, 79 insertions(+)
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-flw.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-fsw-32.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcf-fsw.s

diff --git a/gas/testsuite/gas/riscv/zc-zcf-flw-32.d b/gas/testsuite/gas/riscv/zc-zcf-flw-32.d
new file mode 100644
index 00000000000..ec2997301f3
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-flw-32.d
@@ -0,0 +1,16 @@
+#as: -march=rv32ifd_zcf
+#source: zc-zcf-flw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+6108[ 	]+c.flw[ 	]+fa0,0\(a0\)
+[ 	]+2:[ 	]+7d48[ 	]+c.flw[ 	]+fa0,60\(a0\)
+[ 	]+4:[ 	]+7168[ 	]+c.flw[ 	]+fa0,100\(a0\)
+[ 	]+6:[ 	]+6502[ 	]+c.flwsp[ 	]+fa0,0\(sp\)
+[ 	]+8:[ 	]+7572[ 	]+c.flwsp[ 	]+fa0,60\(sp\)
+[ 	]+a:[ 	]+7516[ 	]+c.flwsp[ 	]+fa0,100\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.d b/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.d
new file mode 100644
index 00000000000..4fde8143b4f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.d
@@ -0,0 +1,3 @@
+#as: -march=rv32i
+#source: zc-zcf-flw-fsw-fail-march.s
+#error_output: zc-zcf-flw-fsw-fail-march.l
diff --git a/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.l b/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.l
new file mode 100644
index 00000000000..b3c1db2d4c2
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.l
@@ -0,0 +1,13 @@
+.*: Assembler messages:
+.*: Error: unrecognized opcode `flw fa0,0\(a0\)', extension `f' required
+.*: Error: unrecognized opcode `flw fa0,60\(a0\)', extension `f' required
+.*: Error: unrecognized opcode `flw fa0,100\(a0\)', extension `f' required
+.*: Error: unrecognized opcode `flw fa0,0\(sp\)', extension `f' required
+.*: Error: unrecognized opcode `flw fa0,60\(sp\)', extension `f' required
+.*: Error: unrecognized opcode `flw fa0,100\(sp\)', extension `f' required
+.*: Error: unrecognized opcode `fsw fa0,0\(a0\)', extension `f' required
+.*: Error: unrecognized opcode `fsw fa0,60\(a0\)', extension `f' required
+.*: Error: unrecognized opcode `fsw fa0,100\(a0\)', extension `f' required
+.*: Error: unrecognized opcode `fsw fs2,0\(sp\)', extension `f' required
+.*: Error: unrecognized opcode `fsw fs2,100\(sp\)', extension `f' required
+.*: Error: unrecognized opcode `fsw fs2,248\(sp\)', extension `f' required
diff --git a/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.s b/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.s
new file mode 100644
index 00000000000..569d721bc99
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-flw-fsw-fail-march.s
@@ -0,0 +1,15 @@
+# Absence of zcf or fc march option disables all zcf
+target:
+	# ZCF only compress single float instructions
+        flw fa0, 0(a0)
+        flw fa0, 60(a0)
+        flw fa0, 100(a0)
+        flw fa0, 0(sp)
+        flw fa0, 60(sp)
+        flw fa0, 100(sp)
+        fsw fa0, 0(a0)
+        fsw fa0, 60(a0)
+        fsw fa0, 100(a0)
+        fsw fs2, 0(sp)
+        fsw fs2, 100(sp)
+        fsw fs2, 248(sp)
diff --git a/gas/testsuite/gas/riscv/zc-zcf-flw.s b/gas/testsuite/gas/riscv/zc-zcf-flw.s
new file mode 100644
index 00000000000..c3a110caad1
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-flw.s
@@ -0,0 +1,8 @@
+target:
+	# ZCF only compress single float instructions
+        flw fa0, 0(a0)   #CM
+        flw fa0, 60(a0)   #CM
+        flw fa0, 100(a0) #CM
+        flw fa0, 0(sp)   #CK
+        flw fa0, 60(sp)   #CK
+        flw fa0, 100(sp) #CK
diff --git a/gas/testsuite/gas/riscv/zc-zcf-fsw-32.d b/gas/testsuite/gas/riscv/zc-zcf-fsw-32.d
new file mode 100644
index 00000000000..0907dd9773c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-fsw-32.d
@@ -0,0 +1,16 @@
+#as: -march=rv32ifd_zcf
+#source: zc-zcf-fsw.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+e108[ 	]+c.fsw[ 	]+fa0,0\(a0\)
+[ 	]+2:[ 	]+fd48[ 	]+c.fsw[ 	]+fa0,60\(a0\)
+[ 	]+4:[ 	]+f168[ 	]+c.fsw[ 	]+fa0,100\(a0\)
+[ 	]+6:[ 	]+e04a[ 	]+c.fswsp[ 	]+fs2,0\(sp\)
+[ 	]+8:[ 	]+f2ca[ 	]+c.fswsp[ 	]+fs2,100\(sp\)
+[ 	]+a:[ 	]+fdca[ 	]+c.fswsp[ 	]+fs2,248\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zcf-fsw.s b/gas/testsuite/gas/riscv/zc-zcf-fsw.s
new file mode 100644
index 00000000000..a4f199ca30f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcf-fsw.s
@@ -0,0 +1,8 @@
+target:
+	# ZCF only compress single float instructions
+        fsw fa0, 0(a0)
+        fsw fa0, 60(a0)
+        fsw fa0, 100(a0)
+        fsw fs2, 0(sp)
+        fsw fs2, 100(sp)
+        fsw fs2, 248(sp)
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 4/4] RISC-V: Add Zcd extension testcases.
  2023-06-13 13:23 [PATCH 0/4] RISC-V: Support ZC* extensions Jiawei
                   ` (2 preceding siblings ...)
  2023-06-13 13:23 ` [PATCH 3/4] RISC-V: Add Zcf " Jiawei
@ 2023-06-13 13:23 ` Jiawei
  3 siblings, 0 replies; 6+ messages in thread
From: Jiawei @ 2023-06-13 13:23 UTC (permalink / raw)
  To: binutils
  Cc: nelson, kito.cheng, palmer, christoph.muellner, jeremy.bennett,
	mary.bennett, nandni.jamnadas, charlie.keaney, simon.cook,
	tariq.kurd, ibrahim.abu.kharmeh1, gaofei, sinan.lin, wuwei2016,
	shihua, shiyulong, chenyixuan, Jiawei

Add Zcd extension testcases, Zcd only compress double float
instructions.

Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com>
Co-Authored by: Mary Bennett <mary.bennett@embecosm.com>
Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com>
Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com>
Co-Authored by: Simon Cook <simon.cook@embecosm.com>
Co-Authored by: Shihua Liao <shihua@iscas.ac.cn>
Co-Authored by: Yulong Shi <yulong@iscas.ac.cn>

gas/ChangeLog:

        * testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.d: New test.
        * testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.l: New test.
        * testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.s: New test.
        * testsuite/gas/riscv/zc-zcd-fld.d: New test.
        * testsuite/gas/riscv/zc-zcd-fld.s: New test.
        * testsuite/gas/riscv/zc-zcd-fsd.d: New test.
        * testsuite/gas/riscv/zc-zcd-fsd.s: New test

---
 .../gas/riscv/zc-zcd-fld-fsd-fail-march.d        |  3 +++
 .../gas/riscv/zc-zcd-fld-fsd-fail-march.l        | 13 +++++++++++++
 .../gas/riscv/zc-zcd-fld-fsd-fail-march.s        | 15 +++++++++++++++
 gas/testsuite/gas/riscv/zc-zcd-fld.d             | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zcd-fld.s             |  8 ++++++++
 gas/testsuite/gas/riscv/zc-zcd-fsd.d             | 16 ++++++++++++++++
 gas/testsuite/gas/riscv/zc-zcd-fsd.s             |  8 ++++++++
 7 files changed, 79 insertions(+)
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.l
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fld.s
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fsd.d
 create mode 100644 gas/testsuite/gas/riscv/zc-zcd-fsd.s

diff --git a/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.d b/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.d
new file mode 100644
index 00000000000..ed8ff7d1a09
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.d
@@ -0,0 +1,3 @@
+#as: -march=rv32i
+#source: zc-zcd-fld-fsd-fail-march.s
+#error_output: zc-zcd-fld-fsd-fail-march.l
diff --git a/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.l b/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.l
new file mode 100644
index 00000000000..2a36dc9ffb1
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.l
@@ -0,0 +1,13 @@
+.*: Assembler messages:
+.*: Error: unrecognized opcode `fld fa0,0\(a0\)', extension `d' required
+.*: Error: unrecognized opcode `fld fa0,64\(a0\)', extension `d' required
+.*: Error: unrecognized opcode `fld fa0,128\(a0\)', extension `d' required
+.*: Error: unrecognized opcode `fld fa0,0\(sp\)', extension `d' required
+.*: Error: unrecognized opcode `fld fa0,64\(sp\)', extension `d' required
+.*: Error: unrecognized opcode `fld fa0,128\(sp\)', extension `d' required
+.*: Error: unrecognized opcode `fsd fa0,0\(a0\)', extension `d' required
+.*: Error: unrecognized opcode `fsd fa0,64\(a0\)', extension `d' required
+.*: Error: unrecognized opcode `fsd fa0,128\(a0\)', extension `d' required
+.*: Error: unrecognized opcode `fsd fs2,0\(sp\)', extension `d' required
+.*: Error: unrecognized opcode `fsd fs2,64\(sp\)', extension `d' required
+.*: Error: unrecognized opcode `fsd fs2,128\(sp\)', extension `d' required
diff --git a/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.s b/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.s
new file mode 100644
index 00000000000..6c772a82e9d
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fld-fsd-fail-march.s
@@ -0,0 +1,15 @@
+# Absence of zcd or dc march option disables all zcd
+target:
+	# ZCD only compress double float instructions
+        fld fa0, 0(a0)
+        fld fa0, 64(a0)
+        fld fa0, 128(a0)
+        fld fa0, 0(sp)
+        fld fa0, 64(sp)
+        fld fa0, 128(sp)
+        fsd fa0, 0(a0)
+        fsd fa0, 64(a0)
+        fsd fa0, 128(a0)
+        fsd fs2, 0(sp)
+        fsd fs2, 64(sp)
+        fsd fs2, 128(sp)
diff --git a/gas/testsuite/gas/riscv/zc-zcd-fld.d b/gas/testsuite/gas/riscv/zc-zcd-fld.d
new file mode 100644
index 00000000000..1ea287ca019
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fld.d
@@ -0,0 +1,16 @@
+#as: -march=rv64ifd_zcd
+#source: zc-zcd-fld.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+2108[ 	]+c.fld[ 	]+fa0,0\(a0\)
+[ 	]+2:[ 	]+2128[ 	]+c.fld[ 	]+fa0,64\(a0\)
+[ 	]+4:[ 	]+2148[ 	]+c.fld[ 	]+fa0,128\(a0\)
+[ 	]+6:[ 	]+2502[ 	]+c.fldsp[ 	]+fa0,0\(sp\)
+[ 	]+8:[ 	]+2506[ 	]+c.fldsp[ 	]+fa0,64\(sp\)
+[ 	]+a:[ 	]+250a[ 	]+c.fldsp[ 	]+fa0,128\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zcd-fld.s b/gas/testsuite/gas/riscv/zc-zcd-fld.s
new file mode 100644
index 00000000000..b185f5f6763
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fld.s
@@ -0,0 +1,8 @@
+target:
+	# ZCD only compress double float instructions
+        fld fa0, 0(a0)   #CM
+        fld fa0, 64(a0)   #CM
+        fld fa0, 128(a0) #CM
+        fld fa0, 0(sp)   #CK
+        fld fa0, 64(sp)   #CK
+        fld fa0, 128(sp) #CK
diff --git a/gas/testsuite/gas/riscv/zc-zcd-fsd.d b/gas/testsuite/gas/riscv/zc-zcd-fsd.d
new file mode 100644
index 00000000000..76879b82f13
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fsd.d
@@ -0,0 +1,16 @@
+#as: -march=rv64ifd_zcd
+#source: zc-zcd-fsd.s
+#objdump: -d -Mno-aliases
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+0:[ 	]+a108[ 	]+c.fsd[ 	]+fa0,0\(a0\)
+[ 	]+2:[ 	]+a128[ 	]+c.fsd[ 	]+fa0,64\(a0\)
+[ 	]+4:[ 	]+a148[ 	]+c.fsd[ 	]+fa0,128\(a0\)
+[ 	]+6:[ 	]+a04a[ 	]+c.fsdsp[ 	]+fs2,0\(sp\)
+[ 	]+8:[ 	]+a0ca[ 	]+c.fsdsp[ 	]+fs2,64\(sp\)
+[ 	]+a:[ 	]+a14a[ 	]+c.fsdsp[ 	]+fs2,128\(sp\)
diff --git a/gas/testsuite/gas/riscv/zc-zcd-fsd.s b/gas/testsuite/gas/riscv/zc-zcd-fsd.s
new file mode 100644
index 00000000000..53a77174b15
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zc-zcd-fsd.s
@@ -0,0 +1,8 @@
+target:
+	# ZCD only compress double float instructions
+        fsd fa0, 0(a0)
+        fsd fa0, 64(a0)
+        fsd fa0, 128(a0)
+        fsd fs2, 0(sp)
+        fsd fs2, 64(sp)
+        fsd fs2, 128(sp)
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/4] RISC-V: Minimal support of ZC extensions.
  2023-06-13 13:23 ` [PATCH 1/4] RISC-V: Minimal support of ZC extensions Jiawei
@ 2023-06-16  3:58   ` Nelson Chu
  0 siblings, 0 replies; 6+ messages in thread
From: Nelson Chu @ 2023-06-16  3:58 UTC (permalink / raw)
  To: Jiawei
  Cc: binutils, kito.cheng, palmer, christoph.muellner, jeremy.bennett,
	mary.bennett, nandni.jamnadas, charlie.keaney, simon.cook,
	tariq.kurd, ibrahim.abu.kharmeh1, gaofei, sinan.lin, wuwei2016,
	shihua, shiyulong, chenyixuan, Jan Beulich, Fangrui Song

[-- Attachment #1: Type: text/plain, Size: 7098 bytes --]

Generally, minimal support is useless.  It would be better to be merged
until we have the full support for the extensions.  According to the
currently sent patches, you divide the current c extension into three sub
extensions - zca, zcf, zcd, and also add test cases for them, and then add
new zcb support.  So ideally, there is no need to have the minimal support
here, a better way is to add the architecture strings with the full support
into the same patch.  As for the zce, zcmt, zcmp, you can let the parser
recognize them until you send the latter patches which truly support them.

Btw, separating the test cases into separate patches is also kind of
useless.  Generally, we should add the test cases to make sure the new
feature or the fix is correct in the same patch.  If you see that - there
were some patches that only added the test cases, that means we forgot to
add them when we supported before.  So it would be good if you can,

1. Has one patch to separate the current z extension into zca, zcf, zcd,
and then add the missing test cases for them, and also make sure there
won't be any overlapped tests with
the current ones.  If you decide to use three separate patches, that's also
fine, one for zca with the test cases and arch support, one for the zcf,
and the remaining for the zcd.

2. Try to merge the whole zca/zcf/zcd test cases into one, or at most two
(for rv32 and rv64), it looks messy and hard to maintain if there are lots
of test cases separately.  That means zca-rv32, zca-rv64, zcf-r32,
zcf-rv64, ....  Or if you can just use c-rv32, c-rv64, then that would be
the perfect situation.  If my understanding is correct, Jan is right.  if
we accept to add the test cases for each instruction, then there is another
problem of consistency - we will need hundreds, or more exaggerated
thousands of test cases, depending on the number of instructions we
supported.  Maksray also discussed this with me a long time ago, he
suggested we should merge the test cases as possible as we can.  And now I
figured that what Jan pointed out is a worthy problem - lots of small tests
generally cost more time and space.  So if we can speed up the test times,
and easily maintain the tests, why not?

3. For the zcb operand, it may be good to follows this commit,
https://github.com/bminor/binutils-gdb/commit/54bca63b5c3714e1032bf32754dbadaff424221a.
So the operand you added, CZb and CZh, can be changed to something like,
Wcb and Wch, which looks more consistent.  Btw, adding the arch string
support of zcb into the same patch here would also look better.


Thanks
Nelson


On Tue, Jun 13, 2023 at 9:24 PM Jiawei <jiawei@iscas.ac.cn> wrote:

> This patch add all ZC* extension base support, and enable compress
> feature when Zca extension enabled.
>
> Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com>
> Co-Authored by: Mary Bennett <mary.bennett@embecosm.com>
> Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com>
> Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com>
> Co-Authored by: Simon Cook <simon.cook@embecosm.com>
> Co-Authored by: Shihua Liao <shihua@iscas.ac.cn>
> Co-Authored by: Yulong Shi <yulong@iscas.ac.cn>
>
> bfd/ChangeLog:
>
>         * elfxx-riscv.c (riscv_multi_subset_supports): New extensions.
>
> gas/ChangeLog:
>
>         * config/tc-riscv.c (riscv_set_arch): Extend compress check.
>
> ---
>  bfd/elfxx-riscv.c     | 26 +++++++++++++++++++++++---
>  gas/config/tc-riscv.c |  3 ++-
>  2 files changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index 7f453246449..4a7407b8a34 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1155,6 +1155,16 @@ static struct riscv_implicit_subset
> riscv_implicit_subsets[] =
>    {"zks", "zbkx",      check_implicit_always},
>    {"zks", "zksed",     check_implicit_always},
>    {"zks", "zksh",      check_implicit_always},
> +  {"zce", "zca",       check_implicit_always},
> +  {"zce", "zcb",       check_implicit_always},
> +  {"zce", "zcf",        check_implicit_always},
> +  {"zce", "zcmp",      check_implicit_always},
> +  {"zce", "zcmt",      check_implicit_always},
> +  {"zcf", "zca",       check_implicit_always},
> +  {"zcd", "zca",       check_implicit_always},
> +  {"zcb", "zca",       check_implicit_always},
> +  {"zcmp", "zca",      check_implicit_always},
> +  {"zcmt", "zca",      check_implicit_always},
>    {"smaia", "ssaia",           check_implicit_always},
>    {"smstateen", "ssstateen",   check_implicit_always},
>    {"smepmp", "zicsr",          check_implicit_always},
> @@ -1272,6 +1282,13 @@ static struct riscv_supported_ext
> riscv_supported_std_z_ext[] =
>    {"zvl32768b",                ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
>    {"zvl65536b",                ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
>    {"ztso",             ISA_SPEC_CLASS_DRAFT,           0, 1,  0 },
> +  {"zca",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
> +  {"zcb",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
> +  {"zce",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
> +  {"zcf",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
> +  {"zcd",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
> +  {"zcmp",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
> +  {"zcmt",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
>    {NULL, 0, 0, 0, 0}
>  };
>
> @@ -2335,13 +2352,16 @@ riscv_multi_subset_supports (riscv_parse_subset_t
> *rps,
>      case INSN_CLASS_Q:
>        return riscv_subset_supports (rps, "q");
>      case INSN_CLASS_C:
> -      return riscv_subset_supports (rps, "c");
> +      return riscv_subset_supports (rps, "c")
> +               || riscv_subset_supports (rps, "zca");
>      case INSN_CLASS_F_AND_C:
>        return (riscv_subset_supports (rps, "f")
> -             && riscv_subset_supports (rps, "c"));
> +             && (riscv_subset_supports (rps, "c")
> +                 || riscv_subset_supports (rps, "zcf")));
>      case INSN_CLASS_D_AND_C:
>        return (riscv_subset_supports (rps, "d")
> -             && riscv_subset_supports (rps, "c"));
> +             && (riscv_subset_supports (rps, "c")
> +                 || riscv_subset_supports (rps, "zcd")));
>      case INSN_CLASS_F_INX:
>        return (riscv_subset_supports (rps, "f")
>               || riscv_subset_supports (rps, "zfinx"));
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 7684fa7e06d..1d3860b332f 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -337,7 +337,8 @@ riscv_set_arch (const char *s)
>    riscv_reset_subsets_list_arch_str ();
>
>    riscv_set_rvc (false);
> -  if (riscv_subset_supports (&riscv_rps_as, "c"))
> +  if (riscv_subset_supports (&riscv_rps_as, "c")
> +      || riscv_subset_supports (&riscv_rps_as, "zca"))
>      riscv_set_rvc (true);
>
>    if (riscv_subset_supports (&riscv_rps_as, "ztso"))
> --
> 2.25.1
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-06-16  3:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-13 13:23 [PATCH 0/4] RISC-V: Support ZC* extensions Jiawei
2023-06-13 13:23 ` [PATCH 1/4] RISC-V: Minimal support of ZC extensions Jiawei
2023-06-16  3:58   ` Nelson Chu
2023-06-13 13:23 ` [PATCH 2/4] RISC-V: Add Zca extension testcases Jiawei
2023-06-13 13:23 ` [PATCH 3/4] RISC-V: Add Zcf " Jiawei
2023-06-13 13:23 ` [PATCH 4/4] RISC-V: Add Zcd " Jiawei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).