diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.d new file mode 100644 index 00000000000..14e7a9c5125 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-pop-rv32-fail.s +#error_output: zc-zcmp-pop-rv32-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.l new file mode 100644 index 00000000000..5e268bd8d35 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.l @@ -0,0 +1,63 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.pop \{zero\},64' +.*: Error: illegal operands `cm.pop \{sp,s0\},64' +.*: Error: illegal operands `cm.pop \{gp,s0-s1\},64' +.*: Error: illegal operands `cm.pop \{tp,s0-s2\},64' +.*: Error: illegal operands `cm.pop \{t1,s0-s8\},64' +.*: Error: illegal operands `cm.pop \{s1,s0-s11\},64' +.*: Error: illegal operands `cm.pop \{a9,s0-s5\},64' +.*: Error: illegal operands `cm.pop \{ra,zero\},64' +.*: Error: illegal operands `cm.pop \{ra,ra\},64' +.*: Error: illegal operands `cm.pop \{ra,sp\},64' +.*: Error: illegal operands `cm.pop \{ra,gp\},64' +.*: Error: illegal operands `cm.pop \{ra,tp\},64' +.*: Error: illegal operands `cm.pop \{ra,a0\},64' +.*: Error: illegal operands `cm.pop \{ra,t0\},64' +.*: Error: illegal operands `cm.pop \{ra,s1\},64' +.*: Error: illegal operands `cm.pop \{ra,a0-a2\},64' +.*: Error: illegal operands `cm.pop \{ra,t0-t6\},64' +.*: Error: illegal operands `cm.pop \{ra,s1-s11\},64' +.*: Error: illegal operands `cm.pop \{x0\},64' +.*: Error: illegal operands `cm.pop \{x2,x8\},64' +.*: Error: illegal operands `cm.pop \{x3,x8-x9\},64' +.*: Error: illegal operands `cm.pop \{x4,x8-x9,x18\},64' +.*: Error: illegal operands `cm.pop \{x7,x8-x9,x18-x24\},64' +.*: Error: illegal operands `cm.pop \{x9,x8-x9,x18-x20\},64' +.*: Error: illegal operands `cm.pop \{x17,x8-x9,x18-x24\},64' +.*: Error: illegal operands `cm.pop \{x31,x8-x9,x18-x27\},64' +.*: Error: illegal operands `cm.pop \{x1,x9\},64' +.*: Error: illegal operands `cm.pop \{x1,x7-x9\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x10,x18\},64' +.*: Error: illegal operands `cm.pop \{x1,x5-x7,x18-x24\},64' +.*: Error: illegal operands `cm.pop \{x1,x10-x17,x18-x27\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x19\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x17-x24\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x18-x28\},64' +.*: Error: illegal operands `cm.pop \{ra\},0' +.*: Error: illegal operands `cm.pop \{ra\},80' +.*: Error: illegal operands `cm.pop \{ra\},15' +.*: Error: illegal operands `cm.pop \{ra\},65' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},0' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},80' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},15' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},65' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},16' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},96' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},31' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},81' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},16' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},96' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},31' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},81' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},32' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},112' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},47' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},97' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},32' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},112' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},47' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},97' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},48' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},128' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},63' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},113' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.s new file mode 100644 index 00000000000..ee456a2af89 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32-fail.s @@ -0,0 +1,75 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.pop {zero}, 64 + cm.pop {sp, s0}, 64 + cm.pop {gp, s0-s1}, 64 + cm.pop {tp, s0-s2}, 64 + cm.pop {t1, s0-s8}, 64 + cm.pop {s1, s0-s11}, 64 + cm.pop {a9, s0-s5}, 64 + + cm.pop {ra, zero}, 64 + cm.pop {ra, ra}, 64 + cm.pop {ra, sp}, 64 + cm.pop {ra, gp}, 64 + cm.pop {ra, tp}, 64 + cm.pop {ra, a0}, 64 + cm.pop {ra, t0}, 64 + cm.pop {ra, s1}, 64 + cm.pop {ra, a0-a2}, 64 + cm.pop {ra, t0-t6}, 64 + cm.pop {ra, s1-s11}, 64 + + # numeric names + cm.pop {x0}, 64 + cm.pop {x2, x8}, 64 + cm.pop {x3, x8-x9}, 64 + cm.pop {x4, x8-x9, x18}, 64 + cm.pop {x7, x8-x9, x18-x24}, 64 + cm.pop {x9, x8-x9, x18-x20}, 64 + cm.pop {x17, x8-x9, x18-x24}, 64 + cm.pop {x31, x8-x9, x18-x27}, 64 + + cm.pop {x1, x9}, 64 + cm.pop {x1, x7-x9}, 64 + cm.pop {x1, x8-x10, x18}, 64 + cm.pop {x1, x5-x7, x18-x24}, 64 + cm.pop {x1, x10-x17, x18-x27}, 64 + + cm.pop {x1, x8-x9, x19}, 64 + cm.pop {x1, x8-x9, x17-x24}, 64 + cm.pop {x1, x8-x9, x18-x28}, 64 + + # spimm + cm.pop {ra}, 0 + cm.pop {ra}, 80 + cm.pop {ra}, 15 + cm.pop {ra}, 65 + cm.pop {ra, s0-s2}, 0 + cm.pop {ra, s0-s2}, 80 + cm.pop {ra, s0-s2}, 15 + cm.pop {ra, s0-s2}, 65 + + cm.pop {ra, s0-s3}, 16 + cm.pop {ra, s0-s3}, 96 + cm.pop {ra, s0-s3}, 31 + cm.pop {ra, s0-s3}, 81 + cm.pop {ra, s0-s6}, 16 + cm.pop {ra, s0-s6}, 96 + cm.pop {ra, s0-s6}, 31 + cm.pop {ra, s0-s6}, 81 + + cm.pop {ra, s0-s7}, 32 + cm.pop {ra, s0-s7}, 112 + cm.pop {ra, s0-s7}, 47 + cm.pop {ra, s0-s7}, 97 + cm.pop {ra, s0-s9}, 32 + cm.pop {ra, s0-s9}, 112 + cm.pop {ra, s0-s9}, 47 + cm.pop {ra, s0-s9}, 97 + + cm.pop {ra, s0-s11}, 48 + cm.pop {ra, s0-s11}, 128 + cm.pop {ra, s0-s11}, 63 + cm.pop {ra, s0-s11}, 113 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32.d b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32.d new file mode 100644 index 00000000000..2d6471eee9d --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32.d @@ -0,0 +1,44 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-pop-rv32.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+ba4e[ ]+cm.pop[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+ba5e[ ]+cm.pop[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+ba6e[ ]+cm.pop[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+ba7e[ ]+cm.pop[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bad6[ ]+cm.pop[ ]+\{ra,s0-s8\},64 +[ ]*[0-9a-f]+:[ ]+baf2[ ]+cm.pop[ ]+\{ra,s0-s11\},64 +[ ]*[0-9a-f]+:[ ]+ba4e[ ]+cm.pop[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+ba5e[ ]+cm.pop[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+ba6e[ ]+cm.pop[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+ba7e[ ]+cm.pop[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bad6[ ]+cm.pop[ ]+\{ra,s0-s8\},64 +[ ]*[0-9a-f]+:[ ]+baf2[ ]+cm.pop[ ]+\{ra,s0-s11},64 +[ ]*[0-9a-f]+:[ ]+ba42[ ]+cm.pop[ ]+\{ra\},16 +[ ]*[0-9a-f]+:[ ]+ba46[ ]+cm.pop[ ]+\{ra\},32 +[ ]*[0-9a-f]+:[ ]+ba4e[ ]+cm.pop[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+ba72[ ]+cm.pop[ ]+\{ra,s0-s2\},16 +[ ]*[0-9a-f]+:[ ]+ba76[ ]+cm.pop[ ]+\{ra,s0-s2\},32 +[ ]*[0-9a-f]+:[ ]+ba7e[ ]+cm.pop[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+ba82[ ]+cm.pop[ ]+\{ra,s0-s3\},32 +[ ]*[0-9a-f]+:[ ]+ba8a[ ]+cm.pop[ ]+\{ra,s0-s3\},64 +[ ]*[0-9a-f]+:[ ]+ba8e[ ]+cm.pop[ ]+\{ra,s0-s3\},80 +[ ]*[0-9a-f]+:[ ]+bab2[ ]+cm.pop[ ]+\{ra,s0-s6\},32 +[ ]*[0-9a-f]+:[ ]+baba[ ]+cm.pop[ ]+\{ra,s0-s6\},64 +[ ]*[0-9a-f]+:[ ]+babe[ ]+cm.pop[ ]+\{ra,s0-s6\},80 +[ ]*[0-9a-f]+:[ ]+bac2[ ]+cm.pop[ ]+\{ra,s0-s7\},48 +[ ]*[0-9a-f]+:[ ]+bac6[ ]+cm.pop[ ]+\{ra,s0-s7\},64 +[ ]*[0-9a-f]+:[ ]+bace[ ]+cm.pop[ ]+\{ra,s0-s7\},96 +[ ]*[0-9a-f]+:[ ]+bae2[ ]+cm.pop[ ]+\{ra,s0-s9\},48 +[ ]*[0-9a-f]+:[ ]+bae6[ ]+cm.pop[ ]+\{ra,s0-s9\},64 +[ ]*[0-9a-f]+:[ ]+baee[ ]+cm.pop[ ]+\{ra,s0-s9\},96 +[ ]*[0-9a-f]+:[ ]+baf2[ ]+cm.pop[ ]+\{ra,s0-s11\},64 +[ ]*[0-9a-f]+:[ ]+baf6[ ]+cm.pop[ ]+\{ra,s0-s11\},80 +[ ]*[0-9a-f]+:[ ]+bafa[ ]+cm.pop[ ]+\{ra,s0-s11\},96 +[ ]*[0-9a-f]+:[ ]+bafe[ ]+cm.pop[ ]+\{ra,s0-s11\},112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32.s b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32.s new file mode 100644 index 00000000000..1afb0c8e57c --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv32.s @@ -0,0 +1,43 @@ +zcmp32: + # abi names + cm.pop {ra}, 64 + cm.pop {ra, s0}, 64 + cm.pop {ra, s0-s1}, 64 + cm.pop {ra, s0-s2}, 64 + cm.pop {ra, s0-s8}, 64 + cm.pop {ra, s0-s11}, 64 + + # numeric names + cm.pop {x1}, 64 + cm.pop {x1, x8}, 64 + cm.pop {x1, x8-x9}, 64 + cm.pop {x1, x8-x9, x18}, 64 + cm.pop {x1, x8-x9, x18-x24}, 64 + cm.pop {x1, x8-x9, x18-x27}, 64 + + # spimm + cm.pop {ra}, 16 + cm.pop {ra}, 32 + cm.pop {ra}, 64 + cm.pop {ra, s0-s2}, 16 + cm.pop {ra, s0-s2}, 32 + cm.pop {ra, s0-s2}, 64 + + cm.pop {ra, s0-s3}, 32 + cm.pop {ra, s0-s3}, 64 + cm.pop {ra, s0-s3}, 80 + cm.pop {ra, s0-s6}, 32 + cm.pop {ra, s0-s6}, 64 + cm.pop {ra, s0-s6}, 80 + + cm.pop {ra, s0-s7}, 48 + cm.pop {ra, s0-s7}, 64 + cm.pop {ra, s0-s7}, 96 + cm.pop {ra, s0-s9}, 48 + cm.pop {ra, s0-s9}, 64 + cm.pop {ra, s0-s9}, 96 + + cm.pop {ra, s0-s11}, 64 + cm.pop {ra, s0-s11}, 80 + cm.pop {ra, s0-s11}, 96 + cm.pop {ra, s0-s11}, 112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.d new file mode 100644 index 00000000000..6a57b518f59 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-pop-rv64-fail.s +#error_output: zc-zcmp-pop-rv64-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.l new file mode 100644 index 00000000000..cba45c6df80 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.l @@ -0,0 +1,83 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.pop \{zero\},64' +.*: Error: illegal operands `cm.pop \{sp\},64' +.*: Error: illegal operands `cm.pop \{gp\},64' +.*: Error: illegal operands `cm.pop \{tp\},64' +.*: Error: illegal operands `cm.pop \{t1\},64' +.*: Error: illegal operands `cm.pop \{s1\},64' +.*: Error: illegal operands `cm.pop \{a9\},64' +.*: Error: illegal operands `cm.pop \{ra,zero\},64' +.*: Error: illegal operands `cm.pop \{ra,ra\},64' +.*: Error: illegal operands `cm.pop \{ra,sp\},64' +.*: Error: illegal operands `cm.pop \{ra,gp\},64' +.*: Error: illegal operands `cm.pop \{ra,tp\},64' +.*: Error: illegal operands `cm.pop \{ra,a0\},64' +.*: Error: illegal operands `cm.pop \{ra,t0\},64' +.*: Error: illegal operands `cm.pop \{ra,s1\},64' +.*: Error: illegal operands `cm.pop \{ra,s1-s2\},64' +.*: Error: illegal operands `cm.pop \{ra,t0-t2\},64' +.*: Error: illegal operands `cm.pop \{ra,t0-s8\},112' +.*: Error: illegal operands `cm.pop \{ra,s0-s12\},112' +.*: Error: illegal operands `cm.pop \{x0\},64' +.*: Error: illegal operands `cm.pop \{x2\},64' +.*: Error: illegal operands `cm.pop \{x3\},64' +.*: Error: illegal operands `cm.pop \{x4\},64' +.*: Error: illegal operands `cm.pop \{x31\},64' +.*: Error: illegal operands `cm.pop \{x17\},64' +.*: Error: illegal operands `cm.pop \{x1,x7\},64' +.*: Error: illegal operands `cm.pop \{x1,x9\},64' +.*: Error: illegal operands `cm.pop \{x1,x7-x9\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x10,x18\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x17\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x19\},64' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x17-x24\},112' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x19-x25\},112' +.*: Error: illegal operands `cm.pop \{x1,x8-x9,x18-x28\},112' +.*: Error: illegal operands `cm.pop \{ra\},0' +.*: Error: illegal operands `cm.pop \{ra\},80' +.*: Error: illegal operands `cm.pop \{ra\},15' +.*: Error: illegal operands `cm.pop \{ra\},65' +.*: Error: illegal operands `cm.pop \{ra,s0\},0' +.*: Error: illegal operands `cm.pop \{ra,s0\},80' +.*: Error: illegal operands `cm.pop \{ra,s0\},15' +.*: Error: illegal operands `cm.pop \{ra,s0\},65' +.*: Error: illegal operands `cm.pop \{ra,s0-s1\},16' +.*: Error: illegal operands `cm.pop \{ra,s0-s1\},96' +.*: Error: illegal operands `cm.pop \{ra,s0-s1\},31' +.*: Error: illegal operands `cm.pop \{ra,s0-s1\},81' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},16' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},96' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},31' +.*: Error: illegal operands `cm.pop \{ra,s0-s2\},81' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},32' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},112' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},47' +.*: Error: illegal operands `cm.pop \{ra,s0-s3\},97' +.*: Error: illegal operands `cm.pop \{ra,s0-s4\},32' +.*: Error: illegal operands `cm.pop \{ra,s0-s4\},112' +.*: Error: illegal operands `cm.pop \{ra,s0-s4\},47' +.*: Error: illegal operands `cm.pop \{ra,s0-s4\},97' +.*: Error: illegal operands `cm.pop \{ra,s0-s5\},48' +.*: Error: illegal operands `cm.pop \{ra,s0-s5\},128' +.*: Error: illegal operands `cm.pop \{ra,s0-s5\},63' +.*: Error: illegal operands `cm.pop \{ra,s0-s5\},113' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},48' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},128' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},63' +.*: Error: illegal operands `cm.pop \{ra,s0-s6\},113' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},64' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},144' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},79' +.*: Error: illegal operands `cm.pop \{ra,s0-s7\},129' +.*: Error: illegal operands `cm.pop \{ra,s0-s8\},64' +.*: Error: illegal operands `cm.pop \{ra,s0-s8\},144' +.*: Error: illegal operands `cm.pop \{ra,s0-s8\},79' +.*: Error: illegal operands `cm.pop \{ra,s0-s8\},129' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},80' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},160' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},95' +.*: Error: illegal operands `cm.pop \{ra,s0-s9\},145' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},96' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},176' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},111' +.*: Error: illegal operands `cm.pop \{ra,s0-s11\},161' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.s new file mode 100644 index 00000000000..8e1d548b84c --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64-fail.s @@ -0,0 +1,98 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.pop {zero}, 64 + cm.pop {sp}, 64 + cm.pop {gp}, 64 + cm.pop {tp}, 64 + cm.pop {t1}, 64 + cm.pop {s1}, 64 + cm.pop {a9}, 64 + + cm.pop {ra, zero}, 64 + cm.pop {ra, ra}, 64 + cm.pop {ra, sp}, 64 + cm.pop {ra, gp}, 64 + cm.pop {ra, tp}, 64 + cm.pop {ra, a0}, 64 + cm.pop {ra, t0}, 64 + cm.pop {ra, s1}, 64 + cm.pop {ra, s1-s2}, 64 + cm.pop {ra, t0-t2}, 64 + cm.pop {ra, t0-s8}, 112 + cm.pop {ra, s0-s12}, 112 + + # numeric names + cm.pop {x0}, 64 + cm.pop {x2}, 64 + cm.pop {x3}, 64 + cm.pop {x4}, 64 + cm.pop {x31}, 64 + cm.pop {x17}, 64 + + cm.pop {x1, x7}, 64 + cm.pop {x1, x9}, 64 + cm.pop {x1, x7-x9}, 64 + cm.pop {x1, x8-x10, x18}, 64 + + cm.pop {x1, x8-x9, x17}, 64 + cm.pop {x1, x8-x9, x19}, 64 + cm.pop {x1, x8-x9, x17-x24}, 112 + cm.pop {x1, x8-x9, x19-x25}, 112 + cm.pop {x1, x8-x9, x18-x28}, 112 + + # spimm + cm.pop {ra}, 0 + cm.pop {ra}, 80 + cm.pop {ra}, 15 + cm.pop {ra}, 65 + cm.pop {ra, s0}, 0 + cm.pop {ra, s0}, 80 + cm.pop {ra, s0}, 15 + cm.pop {ra, s0}, 65 + + cm.pop {ra, s0-s1}, 16 + cm.pop {ra, s0-s1}, 96 + cm.pop {ra, s0-s1}, 31 + cm.pop {ra, s0-s1}, 81 + cm.pop {ra, s0-s2}, 16 + cm.pop {ra, s0-s2}, 96 + cm.pop {ra, s0-s2}, 31 + cm.pop {ra, s0-s2}, 81 + + cm.pop {ra, s0-s3}, 32 + cm.pop {ra, s0-s3}, 112 + cm.pop {ra, s0-s3}, 47 + cm.pop {ra, s0-s3}, 97 + cm.pop {ra, s0-s4}, 32 + cm.pop {ra, s0-s4}, 112 + cm.pop {ra, s0-s4}, 47 + cm.pop {ra, s0-s4}, 97 + + cm.pop {ra, s0-s5}, 48 + cm.pop {ra, s0-s5}, 128 + cm.pop {ra, s0-s5}, 63 + cm.pop {ra, s0-s5}, 113 + cm.pop {ra, s0-s6}, 48 + cm.pop {ra, s0-s6}, 128 + cm.pop {ra, s0-s6}, 63 + cm.pop {ra, s0-s6}, 113 + + cm.pop {ra, s0-s7}, 64 + cm.pop {ra, s0-s7}, 144 + cm.pop {ra, s0-s7}, 79 + cm.pop {ra, s0-s7}, 129 + cm.pop {ra, s0-s8}, 64 + cm.pop {ra, s0-s8}, 144 + cm.pop {ra, s0-s8}, 79 + cm.pop {ra, s0-s8}, 129 + + cm.pop {ra, s0-s9}, 80 + cm.pop {ra, s0-s9}, 160 + cm.pop {ra, s0-s9}, 95 + cm.pop {ra, s0-s9}, 145 + + cm.pop {ra, s0-s11}, 96 + cm.pop {ra, s0-s11}, 176 + cm.pop {ra, s0-s11}, 111 + cm.pop {ra, s0-s11}, 161 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64.d b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64.d new file mode 100644 index 00000000000..e6c28082bc8 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64.d @@ -0,0 +1,46 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-pop-rv64.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+ba4e[ ]+cm.pop[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+ba5e[ ]+cm.pop[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+ba6a[ ]+cm.pop[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+ba7a[ ]+cm.pop[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bada[ ]+cm.pop[ ]+\{ra,s0-s8\},112 +[ ]*[0-9a-f]+:[ ]+bae6[ ]+cm.pop[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+baf2[ ]+cm.pop[ ]+\{ra,s0-s11\},112 +[ ]*[0-9a-f]+:[ ]+ba4e[ ]+cm.pop[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+ba5e[ ]+cm.pop[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+ba6a[ ]+cm.pop[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+ba7a[ ]+cm.pop[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bada[ ]+cm.pop[ ]+\{ra,s0-s8\},112 +[ ]*[0-9a-f]+:[ ]+bae6[ ]+cm.pop[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+baf2[ ]+cm.pop[ ]+\{ra,s0-s11},112 +[ ]*[0-9a-f]+:[ ]+ba42[ ]+cm.pop[ ]+\{ra\},16 +[ ]*[0-9a-f]+:[ ]+ba46[ ]+cm.pop[ ]+\{ra\},32 +[ ]*[0-9a-f]+:[ ]+ba4e[ ]+cm.pop[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+ba72[ ]+cm.pop[ ]+\{ra,s0-s2\},32 +[ ]*[0-9a-f]+:[ ]+ba7a[ ]+cm.pop[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+ba7e[ ]+cm.pop[ ]+\{ra,s0-s2\},80 +[ ]*[0-9a-f]+:[ ]+ba82[ ]+cm.pop[ ]+\{ra,s0-s3\},48 +[ ]*[0-9a-f]+:[ ]+ba86[ ]+cm.pop[ ]+\{ra,s0-s3\},64 +[ ]*[0-9a-f]+:[ ]+ba8e[ ]+cm.pop[ ]+\{ra,s0-s3\},96 +[ ]*[0-9a-f]+:[ ]+bab2[ ]+cm.pop[ ]+\{ra,s0-s6\},64 +[ ]*[0-9a-f]+:[ ]+bab6[ ]+cm.pop[ ]+\{ra,s0-s6\},80 +[ ]*[0-9a-f]+:[ ]+babe[ ]+cm.pop[ ]+\{ra,s0-s6\},112 +[ ]*[0-9a-f]+:[ ]+bac2[ ]+cm.pop[ ]+\{ra,s0-s7\},80 +[ ]*[0-9a-f]+:[ ]+bac6[ ]+cm.pop[ ]+\{ra,s0-s7\},96 +[ ]*[0-9a-f]+:[ ]+bace[ ]+cm.pop[ ]+\{ra,s0-s7\},128 +[ ]*[0-9a-f]+:[ ]+bae2[ ]+cm.pop[ ]+\{ra,s0-s9\},96 +[ ]*[0-9a-f]+:[ ]+bae6[ ]+cm.pop[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+baee[ ]+cm.pop[ ]+\{ra,s0-s9\},144 +[ ]*[0-9a-f]+:[ ]+baf2[ ]+cm.pop[ ]+\{ra,s0-s11\},112 +[ ]*[0-9a-f]+:[ ]+baf6[ ]+cm.pop[ ]+\{ra,s0-s11\},128 +[ ]*[0-9a-f]+:[ ]+bafa[ ]+cm.pop[ ]+\{ra,s0-s11\},144 +[ ]*[0-9a-f]+:[ ]+bafe[ ]+cm.pop[ ]+\{ra,s0-s11\},160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64.s b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64.s new file mode 100644 index 00000000000..2973242d2af --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-pop-rv64.s @@ -0,0 +1,48 @@ +zcmp64: + # abi names + cm.pop {ra}, 64 + cm.pop {ra, s0}, 64 + cm.pop {ra, s0-s1}, 64 + cm.pop {ra, s0-s2}, 64 + cm.pop {ra, s0-s8}, 112 + cm.pop {ra, s0-s9}, 112 + cm.pop {ra, s0-s11}, 112 + + # numeric names + cm.pop {x1}, 64 + cm.pop {x1, x8}, 64 + cm.pop {x1, x8-x9}, 64 + cm.pop {x1, x8-x9, x18}, 64 + cm.pop {x1, x8-x9, x18-x24}, 112 + cm.pop {x1, x8-x9, x18-x25}, 112 + cm.pop {x1, x8-x9, x18-x27}, 112 + + # spimm + cm.pop {ra}, 16 + cm.pop {ra}, 32 + cm.pop {ra}, 64 + + cm.pop {ra, s0-s2}, 32 + cm.pop {ra, s0-s2}, 64 + cm.pop {ra, s0-s2}, 80 + + cm.pop {ra, s0-s3}, 48 + cm.pop {ra, s0-s3}, 64 + cm.pop {ra, s0-s3}, 96 + + cm.pop {ra, s0-s6}, 64 + cm.pop {ra, s0-s6}, 80 + cm.pop {ra, s0-s6}, 112 + + cm.pop {ra, s0-s7}, 80 + cm.pop {ra, s0-s7}, 96 + cm.pop {ra, s0-s7}, 128 + + cm.pop {ra, s0-s9}, 96 + cm.pop {ra, s0-s9}, 112 + cm.pop {ra, s0-s9}, 144 + + cm.pop {ra, s0-s11}, 112 + cm.pop {ra, s0-s11}, 128 + cm.pop {ra, s0-s11}, 144 + cm.pop {ra, s0-s11}, 160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.d new file mode 100644 index 00000000000..55248f70106 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-popret-rv32-fail.s +#error_output: zc-zcmp-popret-rv32-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.l new file mode 100644 index 00000000000..a8938f1a28c --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.l @@ -0,0 +1,63 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.popret \{zero\},64' +.*: Error: illegal operands `cm.popret \{sp,s0\},64' +.*: Error: illegal operands `cm.popret \{gp,s0-s1\},64' +.*: Error: illegal operands `cm.popret \{tp,s0-s2\},64' +.*: Error: illegal operands `cm.popret \{t1,s0-s8\},64' +.*: Error: illegal operands `cm.popret \{s1,s0-s11\},64' +.*: Error: illegal operands `cm.popret \{a9,s0-s5\},64' +.*: Error: illegal operands `cm.popret \{ra,zero\},64' +.*: Error: illegal operands `cm.popret \{ra,ra\},64' +.*: Error: illegal operands `cm.popret \{ra,sp\},64' +.*: Error: illegal operands `cm.popret \{ra,gp\},64' +.*: Error: illegal operands `cm.popret \{ra,tp\},64' +.*: Error: illegal operands `cm.popret \{ra,a0\},64' +.*: Error: illegal operands `cm.popret \{ra,t0\},64' +.*: Error: illegal operands `cm.popret \{ra,s1\},64' +.*: Error: illegal operands `cm.popret \{ra,a0-a2\},64' +.*: Error: illegal operands `cm.popret \{ra,t0-t6\},64' +.*: Error: illegal operands `cm.popret \{ra,s1-s11\},64' +.*: Error: illegal operands `cm.popret \{x0\},64' +.*: Error: illegal operands `cm.popret \{x2,x8\},64' +.*: Error: illegal operands `cm.popret \{x3,x8-x9\},64' +.*: Error: illegal operands `cm.popret \{x4,x8-x9,x18\},64' +.*: Error: illegal operands `cm.popret \{x7,x8-x9,x18-x24\},64' +.*: Error: illegal operands `cm.popret \{x9,x8-x9,x18-x20\},64' +.*: Error: illegal operands `cm.popret \{x17,x8-x9,x18-x24\},64' +.*: Error: illegal operands `cm.popret \{x31,x8-x9,x18-x27\},64' +.*: Error: illegal operands `cm.popret \{x1,x9\},64' +.*: Error: illegal operands `cm.popret \{x1,x7-x9\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x10,x18\},64' +.*: Error: illegal operands `cm.popret \{x1,x5-x7,x18-x24\},64' +.*: Error: illegal operands `cm.popret \{x1,x10-x17,x18-x27\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x19\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x17-x24\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x18-x28\},64' +.*: Error: illegal operands `cm.popret \{ra\},0' +.*: Error: illegal operands `cm.popret \{ra\},80' +.*: Error: illegal operands `cm.popret \{ra\},15' +.*: Error: illegal operands `cm.popret \{ra\},65' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},0' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},80' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},15' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},65' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},16' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},96' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},31' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},81' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},16' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},96' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},31' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},81' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},32' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},112' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},47' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},97' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},32' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},112' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},47' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},97' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},48' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},128' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},63' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},113' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.s new file mode 100644 index 00000000000..bcdd9b38aa4 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32-fail.s @@ -0,0 +1,75 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.popret {zero}, 64 + cm.popret {sp, s0}, 64 + cm.popret {gp, s0-s1}, 64 + cm.popret {tp, s0-s2}, 64 + cm.popret {t1, s0-s8}, 64 + cm.popret {s1, s0-s11}, 64 + cm.popret {a9, s0-s5}, 64 + + cm.popret {ra, zero}, 64 + cm.popret {ra, ra}, 64 + cm.popret {ra, sp}, 64 + cm.popret {ra, gp}, 64 + cm.popret {ra, tp}, 64 + cm.popret {ra, a0}, 64 + cm.popret {ra, t0}, 64 + cm.popret {ra, s1}, 64 + cm.popret {ra, a0-a2}, 64 + cm.popret {ra, t0-t6}, 64 + cm.popret {ra, s1-s11}, 64 + + # numeric names + cm.popret {x0}, 64 + cm.popret {x2, x8}, 64 + cm.popret {x3, x8-x9}, 64 + cm.popret {x4, x8-x9, x18}, 64 + cm.popret {x7, x8-x9, x18-x24}, 64 + cm.popret {x9, x8-x9, x18-x20}, 64 + cm.popret {x17, x8-x9, x18-x24}, 64 + cm.popret {x31, x8-x9, x18-x27}, 64 + + cm.popret {x1, x9}, 64 + cm.popret {x1, x7-x9}, 64 + cm.popret {x1, x8-x10, x18}, 64 + cm.popret {x1, x5-x7, x18-x24}, 64 + cm.popret {x1, x10-x17, x18-x27}, 64 + + cm.popret {x1, x8-x9, x19}, 64 + cm.popret {x1, x8-x9, x17-x24}, 64 + cm.popret {x1, x8-x9, x18-x28}, 64 + + # spimm + cm.popret {ra}, 0 + cm.popret {ra}, 80 + cm.popret {ra}, 15 + cm.popret {ra}, 65 + cm.popret {ra, s0-s2}, 0 + cm.popret {ra, s0-s2}, 80 + cm.popret {ra, s0-s2}, 15 + cm.popret {ra, s0-s2}, 65 + + cm.popret {ra, s0-s3}, 16 + cm.popret {ra, s0-s3}, 96 + cm.popret {ra, s0-s3}, 31 + cm.popret {ra, s0-s3}, 81 + cm.popret {ra, s0-s6}, 16 + cm.popret {ra, s0-s6}, 96 + cm.popret {ra, s0-s6}, 31 + cm.popret {ra, s0-s6}, 81 + + cm.popret {ra, s0-s7}, 32 + cm.popret {ra, s0-s7}, 112 + cm.popret {ra, s0-s7}, 47 + cm.popret {ra, s0-s7}, 97 + cm.popret {ra, s0-s9}, 32 + cm.popret {ra, s0-s9}, 112 + cm.popret {ra, s0-s9}, 47 + cm.popret {ra, s0-s9}, 97 + + cm.popret {ra, s0-s11}, 48 + cm.popret {ra, s0-s11}, 128 + cm.popret {ra, s0-s11}, 63 + cm.popret {ra, s0-s11}, 113 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32.d b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32.d new file mode 100644 index 00000000000..52a783e6c31 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32.d @@ -0,0 +1,44 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-popret-rv32.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+be4e[ ]+cm.popret[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+be5e[ ]+cm.popret[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+be6e[ ]+cm.popret[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+be7e[ ]+cm.popret[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bed6[ ]+cm.popret[ ]+\{ra,s0-s8\},64 +[ ]*[0-9a-f]+:[ ]+bef2[ ]+cm.popret[ ]+\{ra,s0-s11\},64 +[ ]*[0-9a-f]+:[ ]+be4e[ ]+cm.popret[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+be5e[ ]+cm.popret[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+be6e[ ]+cm.popret[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+be7e[ ]+cm.popret[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bed6[ ]+cm.popret[ ]+\{ra,s0-s8\},64 +[ ]*[0-9a-f]+:[ ]+bef2[ ]+cm.popret[ ]+\{ra,s0-s11},64 +[ ]*[0-9a-f]+:[ ]+be42[ ]+cm.popret[ ]+\{ra\},16 +[ ]*[0-9a-f]+:[ ]+be46[ ]+cm.popret[ ]+\{ra\},32 +[ ]*[0-9a-f]+:[ ]+be4e[ ]+cm.popret[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+be72[ ]+cm.popret[ ]+\{ra,s0-s2\},16 +[ ]*[0-9a-f]+:[ ]+be76[ ]+cm.popret[ ]+\{ra,s0-s2\},32 +[ ]*[0-9a-f]+:[ ]+be7e[ ]+cm.popret[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+be82[ ]+cm.popret[ ]+\{ra,s0-s3\},32 +[ ]*[0-9a-f]+:[ ]+be8a[ ]+cm.popret[ ]+\{ra,s0-s3\},64 +[ ]*[0-9a-f]+:[ ]+be8e[ ]+cm.popret[ ]+\{ra,s0-s3\},80 +[ ]*[0-9a-f]+:[ ]+beb2[ ]+cm.popret[ ]+\{ra,s0-s6\},32 +[ ]*[0-9a-f]+:[ ]+beba[ ]+cm.popret[ ]+\{ra,s0-s6\},64 +[ ]*[0-9a-f]+:[ ]+bebe[ ]+cm.popret[ ]+\{ra,s0-s6\},80 +[ ]*[0-9a-f]+:[ ]+bec2[ ]+cm.popret[ ]+\{ra,s0-s7\},48 +[ ]*[0-9a-f]+:[ ]+bec6[ ]+cm.popret[ ]+\{ra,s0-s7\},64 +[ ]*[0-9a-f]+:[ ]+bece[ ]+cm.popret[ ]+\{ra,s0-s7\},96 +[ ]*[0-9a-f]+:[ ]+bee2[ ]+cm.popret[ ]+\{ra,s0-s9\},48 +[ ]*[0-9a-f]+:[ ]+bee6[ ]+cm.popret[ ]+\{ra,s0-s9\},64 +[ ]*[0-9a-f]+:[ ]+beee[ ]+cm.popret[ ]+\{ra,s0-s9\},96 +[ ]*[0-9a-f]+:[ ]+bef2[ ]+cm.popret[ ]+\{ra,s0-s11\},64 +[ ]*[0-9a-f]+:[ ]+bef6[ ]+cm.popret[ ]+\{ra,s0-s11\},80 +[ ]*[0-9a-f]+:[ ]+befa[ ]+cm.popret[ ]+\{ra,s0-s11\},96 +[ ]*[0-9a-f]+:[ ]+befe[ ]+cm.popret[ ]+\{ra,s0-s11\},112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32.s b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32.s new file mode 100644 index 00000000000..bf621413b1b --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv32.s @@ -0,0 +1,44 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.popret {ra}, 64 + cm.popret {ra, s0}, 64 + cm.popret {ra, s0-s1}, 64 + cm.popret {ra, s0-s2}, 64 + cm.popret {ra, s0-s8}, 64 + cm.popret {ra, s0-s11}, 64 + + # numeric names + cm.popret {x1}, 64 + cm.popret {x1, x8}, 64 + cm.popret {x1, x8-x9}, 64 + cm.popret {x1, x8-x9, x18}, 64 + cm.popret {x1, x8-x9, x18-x24}, 64 + cm.popret {x1, x8-x9, x18-x27}, 64 + + # spimm + cm.popret {ra}, 16 + cm.popret {ra}, 32 + cm.popret {ra}, 64 + cm.popret {ra, s0-s2}, 16 + cm.popret {ra, s0-s2}, 32 + cm.popret {ra, s0-s2}, 64 + + cm.popret {ra, s0-s3}, 32 + cm.popret {ra, s0-s3}, 64 + cm.popret {ra, s0-s3}, 80 + cm.popret {ra, s0-s6}, 32 + cm.popret {ra, s0-s6}, 64 + cm.popret {ra, s0-s6}, 80 + + cm.popret {ra, s0-s7}, 48 + cm.popret {ra, s0-s7}, 64 + cm.popret {ra, s0-s7}, 96 + cm.popret {ra, s0-s9}, 48 + cm.popret {ra, s0-s9}, 64 + cm.popret {ra, s0-s9}, 96 + + cm.popret {ra, s0-s11}, 64 + cm.popret {ra, s0-s11}, 80 + cm.popret {ra, s0-s11}, 96 + cm.popret {ra, s0-s11}, 112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.d new file mode 100644 index 00000000000..f1305c10507 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-popret-rv64-fail.s +#error_output: zc-zcmp-popret-rv64-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.l new file mode 100644 index 00000000000..a2ef072a956 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.l @@ -0,0 +1,83 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.popret \{zero\},64' +.*: Error: illegal operands `cm.popret \{sp\},64' +.*: Error: illegal operands `cm.popret \{gp\},64' +.*: Error: illegal operands `cm.popret \{tp\},64' +.*: Error: illegal operands `cm.popret \{t1\},64' +.*: Error: illegal operands `cm.popret \{s1\},64' +.*: Error: illegal operands `cm.popret \{a9\},64' +.*: Error: illegal operands `cm.popret \{ra,zero\},64' +.*: Error: illegal operands `cm.popret \{ra,ra\},64' +.*: Error: illegal operands `cm.popret \{ra,sp\},64' +.*: Error: illegal operands `cm.popret \{ra,gp\},64' +.*: Error: illegal operands `cm.popret \{ra,tp\},64' +.*: Error: illegal operands `cm.popret \{ra,a0\},64' +.*: Error: illegal operands `cm.popret \{ra,t0\},64' +.*: Error: illegal operands `cm.popret \{ra,s1\},64' +.*: Error: illegal operands `cm.popret \{ra,s1-s2\},64' +.*: Error: illegal operands `cm.popret \{ra,t0-t2\},64' +.*: Error: illegal operands `cm.popret \{ra,t0-s8\},112' +.*: Error: illegal operands `cm.popret \{ra,s0-s12\},112' +.*: Error: illegal operands `cm.popret \{x0\},64' +.*: Error: illegal operands `cm.popret \{x2\},64' +.*: Error: illegal operands `cm.popret \{x3\},64' +.*: Error: illegal operands `cm.popret \{x4\},64' +.*: Error: illegal operands `cm.popret \{x31\},64' +.*: Error: illegal operands `cm.popret \{x17\},64' +.*: Error: illegal operands `cm.popret \{x1,x7\},64' +.*: Error: illegal operands `cm.popret \{x1,x9\},64' +.*: Error: illegal operands `cm.popret \{x1,x7-x9\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x10,x18\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x17\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x19\},64' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x17-x24\},112' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x19-x25\},112' +.*: Error: illegal operands `cm.popret \{x1,x8-x9,x18-x28\},112' +.*: Error: illegal operands `cm.popret \{ra\},0' +.*: Error: illegal operands `cm.popret \{ra\},80' +.*: Error: illegal operands `cm.popret \{ra\},15' +.*: Error: illegal operands `cm.popret \{ra\},65' +.*: Error: illegal operands `cm.popret \{ra,s0\},0' +.*: Error: illegal operands `cm.popret \{ra,s0\},80' +.*: Error: illegal operands `cm.popret \{ra,s0\},15' +.*: Error: illegal operands `cm.popret \{ra,s0\},65' +.*: Error: illegal operands `cm.popret \{ra,s0-s1\},16' +.*: Error: illegal operands `cm.popret \{ra,s0-s1\},96' +.*: Error: illegal operands `cm.popret \{ra,s0-s1\},31' +.*: Error: illegal operands `cm.popret \{ra,s0-s1\},81' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},16' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},96' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},31' +.*: Error: illegal operands `cm.popret \{ra,s0-s2\},81' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},32' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},112' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},47' +.*: Error: illegal operands `cm.popret \{ra,s0-s3\},97' +.*: Error: illegal operands `cm.popret \{ra,s0-s4\},32' +.*: Error: illegal operands `cm.popret \{ra,s0-s4\},112' +.*: Error: illegal operands `cm.popret \{ra,s0-s4\},47' +.*: Error: illegal operands `cm.popret \{ra,s0-s4\},97' +.*: Error: illegal operands `cm.popret \{ra,s0-s5\},48' +.*: Error: illegal operands `cm.popret \{ra,s0-s5\},128' +.*: Error: illegal operands `cm.popret \{ra,s0-s5\},63' +.*: Error: illegal operands `cm.popret \{ra,s0-s5\},113' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},48' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},128' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},63' +.*: Error: illegal operands `cm.popret \{ra,s0-s6\},113' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},64' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},144' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},79' +.*: Error: illegal operands `cm.popret \{ra,s0-s7\},129' +.*: Error: illegal operands `cm.popret \{ra,s0-s8\},64' +.*: Error: illegal operands `cm.popret \{ra,s0-s8\},144' +.*: Error: illegal operands `cm.popret \{ra,s0-s8\},79' +.*: Error: illegal operands `cm.popret \{ra,s0-s8\},129' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},80' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},160' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},95' +.*: Error: illegal operands `cm.popret \{ra,s0-s9\},145' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},96' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},176' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},111' +.*: Error: illegal operands `cm.popret \{ra,s0-s11\},161' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.s new file mode 100644 index 00000000000..b4f7d9b85b1 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64-fail.s @@ -0,0 +1,98 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.popret {zero}, 64 + cm.popret {sp}, 64 + cm.popret {gp}, 64 + cm.popret {tp}, 64 + cm.popret {t1}, 64 + cm.popret {s1}, 64 + cm.popret {a9}, 64 + + cm.popret {ra, zero}, 64 + cm.popret {ra, ra}, 64 + cm.popret {ra, sp}, 64 + cm.popret {ra, gp}, 64 + cm.popret {ra, tp}, 64 + cm.popret {ra, a0}, 64 + cm.popret {ra, t0}, 64 + cm.popret {ra, s1}, 64 + cm.popret {ra, s1-s2}, 64 + cm.popret {ra, t0-t2}, 64 + cm.popret {ra, t0-s8}, 112 + cm.popret {ra, s0-s12}, 112 + + # numeric names + cm.popret {x0}, 64 + cm.popret {x2}, 64 + cm.popret {x3}, 64 + cm.popret {x4}, 64 + cm.popret {x31}, 64 + cm.popret {x17}, 64 + + cm.popret {x1, x7}, 64 + cm.popret {x1, x9}, 64 + cm.popret {x1, x7-x9}, 64 + cm.popret {x1, x8-x10, x18}, 64 + + cm.popret {x1, x8-x9, x17}, 64 + cm.popret {x1, x8-x9, x19}, 64 + cm.popret {x1, x8-x9, x17-x24}, 112 + cm.popret {x1, x8-x9, x19-x25}, 112 + cm.popret {x1, x8-x9, x18-x28}, 112 + + # spimm + cm.popret {ra}, 0 + cm.popret {ra}, 80 + cm.popret {ra}, 15 + cm.popret {ra}, 65 + cm.popret {ra, s0}, 0 + cm.popret {ra, s0}, 80 + cm.popret {ra, s0}, 15 + cm.popret {ra, s0}, 65 + + cm.popret {ra, s0-s1}, 16 + cm.popret {ra, s0-s1}, 96 + cm.popret {ra, s0-s1}, 31 + cm.popret {ra, s0-s1}, 81 + cm.popret {ra, s0-s2}, 16 + cm.popret {ra, s0-s2}, 96 + cm.popret {ra, s0-s2}, 31 + cm.popret {ra, s0-s2}, 81 + + cm.popret {ra, s0-s3}, 32 + cm.popret {ra, s0-s3}, 112 + cm.popret {ra, s0-s3}, 47 + cm.popret {ra, s0-s3}, 97 + cm.popret {ra, s0-s4}, 32 + cm.popret {ra, s0-s4}, 112 + cm.popret {ra, s0-s4}, 47 + cm.popret {ra, s0-s4}, 97 + + cm.popret {ra, s0-s5}, 48 + cm.popret {ra, s0-s5}, 128 + cm.popret {ra, s0-s5}, 63 + cm.popret {ra, s0-s5}, 113 + cm.popret {ra, s0-s6}, 48 + cm.popret {ra, s0-s6}, 128 + cm.popret {ra, s0-s6}, 63 + cm.popret {ra, s0-s6}, 113 + + cm.popret {ra, s0-s7}, 64 + cm.popret {ra, s0-s7}, 144 + cm.popret {ra, s0-s7}, 79 + cm.popret {ra, s0-s7}, 129 + cm.popret {ra, s0-s8}, 64 + cm.popret {ra, s0-s8}, 144 + cm.popret {ra, s0-s8}, 79 + cm.popret {ra, s0-s8}, 129 + + cm.popret {ra, s0-s9}, 80 + cm.popret {ra, s0-s9}, 160 + cm.popret {ra, s0-s9}, 95 + cm.popret {ra, s0-s9}, 145 + + cm.popret {ra, s0-s11}, 96 + cm.popret {ra, s0-s11}, 176 + cm.popret {ra, s0-s11}, 111 + cm.popret {ra, s0-s11}, 161 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64.d b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64.d new file mode 100644 index 00000000000..d0a66abf15c --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64.d @@ -0,0 +1,46 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-popret-rv64.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+be4e[ ]+cm.popret[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+be5e[ ]+cm.popret[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+be6a[ ]+cm.popret[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+be7a[ ]+cm.popret[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+beda[ ]+cm.popret[ ]+\{ra,s0-s8\},112 +[ ]*[0-9a-f]+:[ ]+bee6[ ]+cm.popret[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+bef2[ ]+cm.popret[ ]+\{ra,s0-s11\},112 +[ ]*[0-9a-f]+:[ ]+be4e[ ]+cm.popret[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+be5e[ ]+cm.popret[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+be6a[ ]+cm.popret[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+be7a[ ]+cm.popret[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+beda[ ]+cm.popret[ ]+\{ra,s0-s8\},112 +[ ]*[0-9a-f]+:[ ]+bee6[ ]+cm.popret[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+bef2[ ]+cm.popret[ ]+\{ra,s0-s11},112 +[ ]*[0-9a-f]+:[ ]+be42[ ]+cm.popret[ ]+\{ra\},16 +[ ]*[0-9a-f]+:[ ]+be46[ ]+cm.popret[ ]+\{ra\},32 +[ ]*[0-9a-f]+:[ ]+be4e[ ]+cm.popret[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+be72[ ]+cm.popret[ ]+\{ra,s0-s2\},32 +[ ]*[0-9a-f]+:[ ]+be7a[ ]+cm.popret[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+be7e[ ]+cm.popret[ ]+\{ra,s0-s2\},80 +[ ]*[0-9a-f]+:[ ]+be82[ ]+cm.popret[ ]+\{ra,s0-s3\},48 +[ ]*[0-9a-f]+:[ ]+be86[ ]+cm.popret[ ]+\{ra,s0-s3\},64 +[ ]*[0-9a-f]+:[ ]+be8e[ ]+cm.popret[ ]+\{ra,s0-s3\},96 +[ ]*[0-9a-f]+:[ ]+beb2[ ]+cm.popret[ ]+\{ra,s0-s6\},64 +[ ]*[0-9a-f]+:[ ]+beb6[ ]+cm.popret[ ]+\{ra,s0-s6\},80 +[ ]*[0-9a-f]+:[ ]+bebe[ ]+cm.popret[ ]+\{ra,s0-s6\},112 +[ ]*[0-9a-f]+:[ ]+bec2[ ]+cm.popret[ ]+\{ra,s0-s7\},80 +[ ]*[0-9a-f]+:[ ]+bec6[ ]+cm.popret[ ]+\{ra,s0-s7\},96 +[ ]*[0-9a-f]+:[ ]+bece[ ]+cm.popret[ ]+\{ra,s0-s7\},128 +[ ]*[0-9a-f]+:[ ]+bee2[ ]+cm.popret[ ]+\{ra,s0-s9\},96 +[ ]*[0-9a-f]+:[ ]+bee6[ ]+cm.popret[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+beee[ ]+cm.popret[ ]+\{ra,s0-s9\},144 +[ ]*[0-9a-f]+:[ ]+bef2[ ]+cm.popret[ ]+\{ra,s0-s11\},112 +[ ]*[0-9a-f]+:[ ]+bef6[ ]+cm.popret[ ]+\{ra,s0-s11\},128 +[ ]*[0-9a-f]+:[ ]+befa[ ]+cm.popret[ ]+\{ra,s0-s11\},144 +[ ]*[0-9a-f]+:[ ]+befe[ ]+cm.popret[ ]+\{ra,s0-s11\},160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64.s b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64.s new file mode 100644 index 00000000000..55ea2a28bba --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popret-rv64.s @@ -0,0 +1,49 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.popret {ra}, 64 + cm.popret {ra, s0}, 64 + cm.popret {ra, s0-s1}, 64 + cm.popret {ra, s0-s2}, 64 + cm.popret {ra, s0-s8}, 112 + cm.popret {ra, s0-s9}, 112 + cm.popret {ra, s0-s11}, 112 + + # numeric names + cm.popret {x1}, 64 + cm.popret {x1, x8}, 64 + cm.popret {x1, x8-x9}, 64 + cm.popret {x1, x8-x9, x18}, 64 + cm.popret {x1, x8-x9, x18-x24}, 112 + cm.popret {x1, x8-x9, x18-x25}, 112 + cm.popret {x1, x8-x9, x18-x27}, 112 + + # spimm + cm.popret {ra}, 16 + cm.popret {ra}, 32 + cm.popret {ra}, 64 + + cm.popret {ra, s0-s2}, 32 + cm.popret {ra, s0-s2}, 64 + cm.popret {ra, s0-s2}, 80 + + cm.popret {ra, s0-s3}, 48 + cm.popret {ra, s0-s3}, 64 + cm.popret {ra, s0-s3}, 96 + + cm.popret {ra, s0-s6}, 64 + cm.popret {ra, s0-s6}, 80 + cm.popret {ra, s0-s6}, 112 + + cm.popret {ra, s0-s7}, 80 + cm.popret {ra, s0-s7}, 96 + cm.popret {ra, s0-s7}, 128 + + cm.popret {ra, s0-s9}, 96 + cm.popret {ra, s0-s9}, 112 + cm.popret {ra, s0-s9}, 144 + + cm.popret {ra, s0-s11}, 112 + cm.popret {ra, s0-s11}, 128 + cm.popret {ra, s0-s11}, 144 + cm.popret {ra, s0-s11}, 160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.d new file mode 100644 index 00000000000..c8e76c86871 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-popretz-rv32-fail.s +#error_output: zc-zcmp-popretz-rv32-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.l new file mode 100644 index 00000000000..11f61d826ed --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.l @@ -0,0 +1,63 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.popretz \{zero\},64' +.*: Error: illegal operands `cm.popretz \{sp,s0\},64' +.*: Error: illegal operands `cm.popretz \{gp,s0-s1\},64' +.*: Error: illegal operands `cm.popretz \{tp,s0-s2\},64' +.*: Error: illegal operands `cm.popretz \{t1,s0-s8\},64' +.*: Error: illegal operands `cm.popretz \{s1,s0-s11\},64' +.*: Error: illegal operands `cm.popretz \{a9,s0-s5\},64' +.*: Error: illegal operands `cm.popretz \{ra,zero\},64' +.*: Error: illegal operands `cm.popretz \{ra,ra\},64' +.*: Error: illegal operands `cm.popretz \{ra,sp\},64' +.*: Error: illegal operands `cm.popretz \{ra,gp\},64' +.*: Error: illegal operands `cm.popretz \{ra,tp\},64' +.*: Error: illegal operands `cm.popretz \{ra,a0\},64' +.*: Error: illegal operands `cm.popretz \{ra,t0\},64' +.*: Error: illegal operands `cm.popretz \{ra,s1\},64' +.*: Error: illegal operands `cm.popretz \{ra,a0-a2\},64' +.*: Error: illegal operands `cm.popretz \{ra,t0-t6\},64' +.*: Error: illegal operands `cm.popretz \{ra,s1-s11\},64' +.*: Error: illegal operands `cm.popretz \{x0\},64' +.*: Error: illegal operands `cm.popretz \{x2,x8\},64' +.*: Error: illegal operands `cm.popretz \{x3,x8-x9\},64' +.*: Error: illegal operands `cm.popretz \{x4,x8-x9,x18\},64' +.*: Error: illegal operands `cm.popretz \{x7,x8-x9,x18-x24\},64' +.*: Error: illegal operands `cm.popretz \{x9,x8-x9,x18-x20\},64' +.*: Error: illegal operands `cm.popretz \{x17,x8-x9,x18-x24\},64' +.*: Error: illegal operands `cm.popretz \{x31,x8-x9,x18-x27\},64' +.*: Error: illegal operands `cm.popretz \{x1,x9\},64' +.*: Error: illegal operands `cm.popretz \{x1,x7-x9\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x10,x18\},64' +.*: Error: illegal operands `cm.popretz \{x1,x5-x7,x18-x24\},64' +.*: Error: illegal operands `cm.popretz \{x1,x10-x17,x18-x27\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x19\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x17-x24\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x18-x28\},64' +.*: Error: illegal operands `cm.popretz \{ra\},0' +.*: Error: illegal operands `cm.popretz \{ra\},80' +.*: Error: illegal operands `cm.popretz \{ra\},15' +.*: Error: illegal operands `cm.popretz \{ra\},65' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},0' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},80' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},15' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},65' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},16' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},96' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},31' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},81' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},16' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},96' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},31' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},81' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},32' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},112' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},47' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},97' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},32' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},112' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},47' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},97' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},48' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},128' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},63' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},113' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.s new file mode 100644 index 00000000000..e28fc4402ef --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32-fail.s @@ -0,0 +1,75 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.popretz {zero}, 64 + cm.popretz {sp, s0}, 64 + cm.popretz {gp, s0-s1}, 64 + cm.popretz {tp, s0-s2}, 64 + cm.popretz {t1, s0-s8}, 64 + cm.popretz {s1, s0-s11}, 64 + cm.popretz {a9, s0-s5}, 64 + + cm.popretz {ra, zero}, 64 + cm.popretz {ra, ra}, 64 + cm.popretz {ra, sp}, 64 + cm.popretz {ra, gp}, 64 + cm.popretz {ra, tp}, 64 + cm.popretz {ra, a0}, 64 + cm.popretz {ra, t0}, 64 + cm.popretz {ra, s1}, 64 + cm.popretz {ra, a0-a2}, 64 + cm.popretz {ra, t0-t6}, 64 + cm.popretz {ra, s1-s11}, 64 + + # numeric names + cm.popretz {x0}, 64 + cm.popretz {x2, x8}, 64 + cm.popretz {x3, x8-x9}, 64 + cm.popretz {x4, x8-x9, x18}, 64 + cm.popretz {x7, x8-x9, x18-x24}, 64 + cm.popretz {x9, x8-x9, x18-x20}, 64 + cm.popretz {x17, x8-x9, x18-x24}, 64 + cm.popretz {x31, x8-x9, x18-x27}, 64 + + cm.popretz {x1, x9}, 64 + cm.popretz {x1, x7-x9}, 64 + cm.popretz {x1, x8-x10, x18}, 64 + cm.popretz {x1, x5-x7, x18-x24}, 64 + cm.popretz {x1, x10-x17, x18-x27}, 64 + + cm.popretz {x1, x8-x9, x19}, 64 + cm.popretz {x1, x8-x9, x17-x24}, 64 + cm.popretz {x1, x8-x9, x18-x28}, 64 + + # spimm + cm.popretz {ra}, 0 + cm.popretz {ra}, 80 + cm.popretz {ra}, 15 + cm.popretz {ra}, 65 + cm.popretz {ra, s0-s2}, 0 + cm.popretz {ra, s0-s2}, 80 + cm.popretz {ra, s0-s2}, 15 + cm.popretz {ra, s0-s2}, 65 + + cm.popretz {ra, s0-s3}, 16 + cm.popretz {ra, s0-s3}, 96 + cm.popretz {ra, s0-s3}, 31 + cm.popretz {ra, s0-s3}, 81 + cm.popretz {ra, s0-s6}, 16 + cm.popretz {ra, s0-s6}, 96 + cm.popretz {ra, s0-s6}, 31 + cm.popretz {ra, s0-s6}, 81 + + cm.popretz {ra, s0-s7}, 32 + cm.popretz {ra, s0-s7}, 112 + cm.popretz {ra, s0-s7}, 47 + cm.popretz {ra, s0-s7}, 97 + cm.popretz {ra, s0-s9}, 32 + cm.popretz {ra, s0-s9}, 112 + cm.popretz {ra, s0-s9}, 47 + cm.popretz {ra, s0-s9}, 97 + + cm.popretz {ra, s0-s11}, 48 + cm.popretz {ra, s0-s11}, 128 + cm.popretz {ra, s0-s11}, 63 + cm.popretz {ra, s0-s11}, 113 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32.d b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32.d new file mode 100644 index 00000000000..41034e3f342 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32.d @@ -0,0 +1,44 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-popretz-rv32.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+bc4e[ ]+cm.popretz[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+bc5e[ ]+cm.popretz[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+bc6e[ ]+cm.popretz[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+bc7e[ ]+cm.popretz[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bcd6[ ]+cm.popretz[ ]+\{ra,s0-s8\},64 +[ ]*[0-9a-f]+:[ ]+bcf2[ ]+cm.popretz[ ]+\{ra,s0-s11\},64 +[ ]*[0-9a-f]+:[ ]+bc4e[ ]+cm.popretz[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+bc5e[ ]+cm.popretz[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+bc6e[ ]+cm.popretz[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+bc7e[ ]+cm.popretz[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bcd6[ ]+cm.popretz[ ]+\{ra,s0-s8\},64 +[ ]*[0-9a-f]+:[ ]+bcf2[ ]+cm.popretz[ ]+\{ra,s0-s11},64 +[ ]*[0-9a-f]+:[ ]+bc42[ ]+cm.popretz[ ]+\{ra\},16 +[ ]*[0-9a-f]+:[ ]+bc46[ ]+cm.popretz[ ]+\{ra\},32 +[ ]*[0-9a-f]+:[ ]+bc4e[ ]+cm.popretz[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+bc72[ ]+cm.popretz[ ]+\{ra,s0-s2\},16 +[ ]*[0-9a-f]+:[ ]+bc76[ ]+cm.popretz[ ]+\{ra,s0-s2\},32 +[ ]*[0-9a-f]+:[ ]+bc7e[ ]+cm.popretz[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bc82[ ]+cm.popretz[ ]+\{ra,s0-s3\},32 +[ ]*[0-9a-f]+:[ ]+bc8a[ ]+cm.popretz[ ]+\{ra,s0-s3\},64 +[ ]*[0-9a-f]+:[ ]+bc8e[ ]+cm.popretz[ ]+\{ra,s0-s3\},80 +[ ]*[0-9a-f]+:[ ]+bcb2[ ]+cm.popretz[ ]+\{ra,s0-s6\},32 +[ ]*[0-9a-f]+:[ ]+bcba[ ]+cm.popretz[ ]+\{ra,s0-s6\},64 +[ ]*[0-9a-f]+:[ ]+bcbe[ ]+cm.popretz[ ]+\{ra,s0-s6\},80 +[ ]*[0-9a-f]+:[ ]+bcc2[ ]+cm.popretz[ ]+\{ra,s0-s7\},48 +[ ]*[0-9a-f]+:[ ]+bcc6[ ]+cm.popretz[ ]+\{ra,s0-s7\},64 +[ ]*[0-9a-f]+:[ ]+bcce[ ]+cm.popretz[ ]+\{ra,s0-s7\},96 +[ ]*[0-9a-f]+:[ ]+bce2[ ]+cm.popretz[ ]+\{ra,s0-s9\},48 +[ ]*[0-9a-f]+:[ ]+bce6[ ]+cm.popretz[ ]+\{ra,s0-s9\},64 +[ ]*[0-9a-f]+:[ ]+bcee[ ]+cm.popretz[ ]+\{ra,s0-s9\},96 +[ ]*[0-9a-f]+:[ ]+bcf2[ ]+cm.popretz[ ]+\{ra,s0-s11\},64 +[ ]*[0-9a-f]+:[ ]+bcf6[ ]+cm.popretz[ ]+\{ra,s0-s11\},80 +[ ]*[0-9a-f]+:[ ]+bcfa[ ]+cm.popretz[ ]+\{ra,s0-s11\},96 +[ ]*[0-9a-f]+:[ ]+bcfe[ ]+cm.popretz[ ]+\{ra,s0-s11\},112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32.s b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32.s new file mode 100644 index 00000000000..15810c0e736 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv32.s @@ -0,0 +1,44 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.popretz {ra}, 64 + cm.popretz {ra, s0}, 64 + cm.popretz {ra, s0-s1}, 64 + cm.popretz {ra, s0-s2}, 64 + cm.popretz {ra, s0-s8}, 64 + cm.popretz {ra, s0-s11}, 64 + + # numeric names + cm.popretz {x1}, 64 + cm.popretz {x1, x8}, 64 + cm.popretz {x1, x8-x9}, 64 + cm.popretz {x1, x8-x9, x18}, 64 + cm.popretz {x1, x8-x9, x18-x24}, 64 + cm.popretz {x1, x8-x9, x18-x27}, 64 + + # spimm + cm.popretz {ra}, 16 + cm.popretz {ra}, 32 + cm.popretz {ra}, 64 + cm.popretz {ra, s0-s2}, 16 + cm.popretz {ra, s0-s2}, 32 + cm.popretz {ra, s0-s2}, 64 + + cm.popretz {ra, s0-s3}, 32 + cm.popretz {ra, s0-s3}, 64 + cm.popretz {ra, s0-s3}, 80 + cm.popretz {ra, s0-s6}, 32 + cm.popretz {ra, s0-s6}, 64 + cm.popretz {ra, s0-s6}, 80 + + cm.popretz {ra, s0-s7}, 48 + cm.popretz {ra, s0-s7}, 64 + cm.popretz {ra, s0-s7}, 96 + cm.popretz {ra, s0-s9}, 48 + cm.popretz {ra, s0-s9}, 64 + cm.popretz {ra, s0-s9}, 96 + + cm.popretz {ra, s0-s11}, 64 + cm.popretz {ra, s0-s11}, 80 + cm.popretz {ra, s0-s11}, 96 + cm.popretz {ra, s0-s11}, 112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.d new file mode 100644 index 00000000000..f054c0f5348 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-popretz-rv64-fail.s +#error_output: zc-zcmp-popretz-rv64-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.l new file mode 100644 index 00000000000..013ce45fb9e --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.l @@ -0,0 +1,83 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.popretz \{zero\},64' +.*: Error: illegal operands `cm.popretz \{sp\},64' +.*: Error: illegal operands `cm.popretz \{gp\},64' +.*: Error: illegal operands `cm.popretz \{tp\},64' +.*: Error: illegal operands `cm.popretz \{t1\},64' +.*: Error: illegal operands `cm.popretz \{s1\},64' +.*: Error: illegal operands `cm.popretz \{a9\},64' +.*: Error: illegal operands `cm.popretz \{ra,zero\},64' +.*: Error: illegal operands `cm.popretz \{ra,ra\},64' +.*: Error: illegal operands `cm.popretz \{ra,sp\},64' +.*: Error: illegal operands `cm.popretz \{ra,gp\},64' +.*: Error: illegal operands `cm.popretz \{ra,tp\},64' +.*: Error: illegal operands `cm.popretz \{ra,a0\},64' +.*: Error: illegal operands `cm.popretz \{ra,t0\},64' +.*: Error: illegal operands `cm.popretz \{ra,s1\},64' +.*: Error: illegal operands `cm.popretz \{ra,s1-s2\},64' +.*: Error: illegal operands `cm.popretz \{ra,t0-t2\},64' +.*: Error: illegal operands `cm.popretz \{ra,t0-s8\},112' +.*: Error: illegal operands `cm.popretz \{ra,s0-s12\},112' +.*: Error: illegal operands `cm.popretz \{x0\},64' +.*: Error: illegal operands `cm.popretz \{x2\},64' +.*: Error: illegal operands `cm.popretz \{x3\},64' +.*: Error: illegal operands `cm.popretz \{x4\},64' +.*: Error: illegal operands `cm.popretz \{x31\},64' +.*: Error: illegal operands `cm.popretz \{x17\},64' +.*: Error: illegal operands `cm.popretz \{x1,x7\},64' +.*: Error: illegal operands `cm.popretz \{x1,x9\},64' +.*: Error: illegal operands `cm.popretz \{x1,x7-x9\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x10,x18\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x17\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x19\},64' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x17-x24\},112' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x19-x25\},112' +.*: Error: illegal operands `cm.popretz \{x1,x8-x9,x18-x28\},112' +.*: Error: illegal operands `cm.popretz \{ra\},0' +.*: Error: illegal operands `cm.popretz \{ra\},80' +.*: Error: illegal operands `cm.popretz \{ra\},15' +.*: Error: illegal operands `cm.popretz \{ra\},65' +.*: Error: illegal operands `cm.popretz \{ra,s0\},0' +.*: Error: illegal operands `cm.popretz \{ra,s0\},80' +.*: Error: illegal operands `cm.popretz \{ra,s0\},15' +.*: Error: illegal operands `cm.popretz \{ra,s0\},65' +.*: Error: illegal operands `cm.popretz \{ra,s0-s1\},16' +.*: Error: illegal operands `cm.popretz \{ra,s0-s1\},96' +.*: Error: illegal operands `cm.popretz \{ra,s0-s1\},31' +.*: Error: illegal operands `cm.popretz \{ra,s0-s1\},81' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},16' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},96' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},31' +.*: Error: illegal operands `cm.popretz \{ra,s0-s2\},81' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},32' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},112' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},47' +.*: Error: illegal operands `cm.popretz \{ra,s0-s3\},97' +.*: Error: illegal operands `cm.popretz \{ra,s0-s4\},32' +.*: Error: illegal operands `cm.popretz \{ra,s0-s4\},112' +.*: Error: illegal operands `cm.popretz \{ra,s0-s4\},47' +.*: Error: illegal operands `cm.popretz \{ra,s0-s4\},97' +.*: Error: illegal operands `cm.popretz \{ra,s0-s5\},48' +.*: Error: illegal operands `cm.popretz \{ra,s0-s5\},128' +.*: Error: illegal operands `cm.popretz \{ra,s0-s5\},63' +.*: Error: illegal operands `cm.popretz \{ra,s0-s5\},113' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},48' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},128' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},63' +.*: Error: illegal operands `cm.popretz \{ra,s0-s6\},113' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},64' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},144' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},79' +.*: Error: illegal operands `cm.popretz \{ra,s0-s7\},129' +.*: Error: illegal operands `cm.popretz \{ra,s0-s8\},64' +.*: Error: illegal operands `cm.popretz \{ra,s0-s8\},144' +.*: Error: illegal operands `cm.popretz \{ra,s0-s8\},79' +.*: Error: illegal operands `cm.popretz \{ra,s0-s8\},129' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},80' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},160' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},95' +.*: Error: illegal operands `cm.popretz \{ra,s0-s9\},145' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},96' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},176' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},111' +.*: Error: illegal operands `cm.popretz \{ra,s0-s11\},161' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.s new file mode 100644 index 00000000000..c45541ac614 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64-fail.s @@ -0,0 +1,98 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.popretz {zero}, 64 + cm.popretz {sp}, 64 + cm.popretz {gp}, 64 + cm.popretz {tp}, 64 + cm.popretz {t1}, 64 + cm.popretz {s1}, 64 + cm.popretz {a9}, 64 + + cm.popretz {ra, zero}, 64 + cm.popretz {ra, ra}, 64 + cm.popretz {ra, sp}, 64 + cm.popretz {ra, gp}, 64 + cm.popretz {ra, tp}, 64 + cm.popretz {ra, a0}, 64 + cm.popretz {ra, t0}, 64 + cm.popretz {ra, s1}, 64 + cm.popretz {ra, s1-s2}, 64 + cm.popretz {ra, t0-t2}, 64 + cm.popretz {ra, t0-s8}, 112 + cm.popretz {ra, s0-s12}, 112 + + # numeric names + cm.popretz {x0}, 64 + cm.popretz {x2}, 64 + cm.popretz {x3}, 64 + cm.popretz {x4}, 64 + cm.popretz {x31}, 64 + cm.popretz {x17}, 64 + + cm.popretz {x1, x7}, 64 + cm.popretz {x1, x9}, 64 + cm.popretz {x1, x7-x9}, 64 + cm.popretz {x1, x8-x10, x18}, 64 + + cm.popretz {x1, x8-x9, x17}, 64 + cm.popretz {x1, x8-x9, x19}, 64 + cm.popretz {x1, x8-x9, x17-x24}, 112 + cm.popretz {x1, x8-x9, x19-x25}, 112 + cm.popretz {x1, x8-x9, x18-x28}, 112 + + # spimm + cm.popretz {ra}, 0 + cm.popretz {ra}, 80 + cm.popretz {ra}, 15 + cm.popretz {ra}, 65 + cm.popretz {ra, s0}, 0 + cm.popretz {ra, s0}, 80 + cm.popretz {ra, s0}, 15 + cm.popretz {ra, s0}, 65 + + cm.popretz {ra, s0-s1}, 16 + cm.popretz {ra, s0-s1}, 96 + cm.popretz {ra, s0-s1}, 31 + cm.popretz {ra, s0-s1}, 81 + cm.popretz {ra, s0-s2}, 16 + cm.popretz {ra, s0-s2}, 96 + cm.popretz {ra, s0-s2}, 31 + cm.popretz {ra, s0-s2}, 81 + + cm.popretz {ra, s0-s3}, 32 + cm.popretz {ra, s0-s3}, 112 + cm.popretz {ra, s0-s3}, 47 + cm.popretz {ra, s0-s3}, 97 + cm.popretz {ra, s0-s4}, 32 + cm.popretz {ra, s0-s4}, 112 + cm.popretz {ra, s0-s4}, 47 + cm.popretz {ra, s0-s4}, 97 + + cm.popretz {ra, s0-s5}, 48 + cm.popretz {ra, s0-s5}, 128 + cm.popretz {ra, s0-s5}, 63 + cm.popretz {ra, s0-s5}, 113 + cm.popretz {ra, s0-s6}, 48 + cm.popretz {ra, s0-s6}, 128 + cm.popretz {ra, s0-s6}, 63 + cm.popretz {ra, s0-s6}, 113 + + cm.popretz {ra, s0-s7}, 64 + cm.popretz {ra, s0-s7}, 144 + cm.popretz {ra, s0-s7}, 79 + cm.popretz {ra, s0-s7}, 129 + cm.popretz {ra, s0-s8}, 64 + cm.popretz {ra, s0-s8}, 144 + cm.popretz {ra, s0-s8}, 79 + cm.popretz {ra, s0-s8}, 129 + + cm.popretz {ra, s0-s9}, 80 + cm.popretz {ra, s0-s9}, 160 + cm.popretz {ra, s0-s9}, 95 + cm.popretz {ra, s0-s9}, 145 + + cm.popretz {ra, s0-s11}, 96 + cm.popretz {ra, s0-s11}, 176 + cm.popretz {ra, s0-s11}, 111 + cm.popretz {ra, s0-s11}, 161 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64.d b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64.d new file mode 100644 index 00000000000..ea554f77248 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64.d @@ -0,0 +1,46 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-popretz-rv64.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+bc4e[ ]+cm.popretz[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+bc5e[ ]+cm.popretz[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+bc6a[ ]+cm.popretz[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+bc7a[ ]+cm.popretz[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bcda[ ]+cm.popretz[ ]+\{ra,s0-s8\},112 +[ ]*[0-9a-f]+:[ ]+bce6[ ]+cm.popretz[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+bcf2[ ]+cm.popretz[ ]+\{ra,s0-s11\},112 +[ ]*[0-9a-f]+:[ ]+bc4e[ ]+cm.popretz[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+bc5e[ ]+cm.popretz[ ]+\{ra,s0\},64 +[ ]*[0-9a-f]+:[ ]+bc6a[ ]+cm.popretz[ ]+\{ra,s0-s1\},64 +[ ]*[0-9a-f]+:[ ]+bc7a[ ]+cm.popretz[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bcda[ ]+cm.popretz[ ]+\{ra,s0-s8\},112 +[ ]*[0-9a-f]+:[ ]+bce6[ ]+cm.popretz[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+bcf2[ ]+cm.popretz[ ]+\{ra,s0-s11},112 +[ ]*[0-9a-f]+:[ ]+bc42[ ]+cm.popretz[ ]+\{ra\},16 +[ ]*[0-9a-f]+:[ ]+bc46[ ]+cm.popretz[ ]+\{ra\},32 +[ ]*[0-9a-f]+:[ ]+bc4e[ ]+cm.popretz[ ]+\{ra\},64 +[ ]*[0-9a-f]+:[ ]+bc72[ ]+cm.popretz[ ]+\{ra,s0-s2\},32 +[ ]*[0-9a-f]+:[ ]+bc7a[ ]+cm.popretz[ ]+\{ra,s0-s2\},64 +[ ]*[0-9a-f]+:[ ]+bc7e[ ]+cm.popretz[ ]+\{ra,s0-s2\},80 +[ ]*[0-9a-f]+:[ ]+bc82[ ]+cm.popretz[ ]+\{ra,s0-s3\},48 +[ ]*[0-9a-f]+:[ ]+bc86[ ]+cm.popretz[ ]+\{ra,s0-s3\},64 +[ ]*[0-9a-f]+:[ ]+bc8e[ ]+cm.popretz[ ]+\{ra,s0-s3\},96 +[ ]*[0-9a-f]+:[ ]+bcb2[ ]+cm.popretz[ ]+\{ra,s0-s6\},64 +[ ]*[0-9a-f]+:[ ]+bcb6[ ]+cm.popretz[ ]+\{ra,s0-s6\},80 +[ ]*[0-9a-f]+:[ ]+bcbe[ ]+cm.popretz[ ]+\{ra,s0-s6\},112 +[ ]*[0-9a-f]+:[ ]+bcc2[ ]+cm.popretz[ ]+\{ra,s0-s7\},80 +[ ]*[0-9a-f]+:[ ]+bcc6[ ]+cm.popretz[ ]+\{ra,s0-s7\},96 +[ ]*[0-9a-f]+:[ ]+bcce[ ]+cm.popretz[ ]+\{ra,s0-s7\},128 +[ ]*[0-9a-f]+:[ ]+bce2[ ]+cm.popretz[ ]+\{ra,s0-s9\},96 +[ ]*[0-9a-f]+:[ ]+bce6[ ]+cm.popretz[ ]+\{ra,s0-s9\},112 +[ ]*[0-9a-f]+:[ ]+bcee[ ]+cm.popretz[ ]+\{ra,s0-s9\},144 +[ ]*[0-9a-f]+:[ ]+bcf2[ ]+cm.popretz[ ]+\{ra,s0-s11\},112 +[ ]*[0-9a-f]+:[ ]+bcf6[ ]+cm.popretz[ ]+\{ra,s0-s11\},128 +[ ]*[0-9a-f]+:[ ]+bcfa[ ]+cm.popretz[ ]+\{ra,s0-s11\},144 +[ ]*[0-9a-f]+:[ ]+bcfe[ ]+cm.popretz[ ]+\{ra,s0-s11\},160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64.s b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64.s new file mode 100644 index 00000000000..5f19731fd07 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-popretz-rv64.s @@ -0,0 +1,49 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.popretz {ra}, 64 + cm.popretz {ra, s0}, 64 + cm.popretz {ra, s0-s1}, 64 + cm.popretz {ra, s0-s2}, 64 + cm.popretz {ra, s0-s8}, 112 + cm.popretz {ra, s0-s9}, 112 + cm.popretz {ra, s0-s11}, 112 + + # numeric names + cm.popretz {x1}, 64 + cm.popretz {x1, x8}, 64 + cm.popretz {x1, x8-x9}, 64 + cm.popretz {x1, x8-x9, x18}, 64 + cm.popretz {x1, x8-x9, x18-x24}, 112 + cm.popretz {x1, x8-x9, x18-x25}, 112 + cm.popretz {x1, x8-x9, x18-x27}, 112 + + # spimm + cm.popretz {ra}, 16 + cm.popretz {ra}, 32 + cm.popretz {ra}, 64 + + cm.popretz {ra, s0-s2}, 32 + cm.popretz {ra, s0-s2}, 64 + cm.popretz {ra, s0-s2}, 80 + + cm.popretz {ra, s0-s3}, 48 + cm.popretz {ra, s0-s3}, 64 + cm.popretz {ra, s0-s3}, 96 + + cm.popretz {ra, s0-s6}, 64 + cm.popretz {ra, s0-s6}, 80 + cm.popretz {ra, s0-s6}, 112 + + cm.popretz {ra, s0-s7}, 80 + cm.popretz {ra, s0-s7}, 96 + cm.popretz {ra, s0-s7}, 128 + + cm.popretz {ra, s0-s9}, 96 + cm.popretz {ra, s0-s9}, 112 + cm.popretz {ra, s0-s9}, 144 + + cm.popretz {ra, s0-s11}, 112 + cm.popretz {ra, s0-s11}, 128 + cm.popretz {ra, s0-s11}, 144 + cm.popretz {ra, s0-s11}, 160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.d new file mode 100644 index 00000000000..164bda0f5dc --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-push-rv32-fail.s +#error_output: zc-zcmp-push-rv32-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.l new file mode 100644 index 00000000000..40b92bf8e77 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.l @@ -0,0 +1,63 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.push \{zero\},-64' +.*: Error: illegal operands `cm.push \{sp,s0\},-64' +.*: Error: illegal operands `cm.push \{gp,s0-s1\},-64' +.*: Error: illegal operands `cm.push \{tp,s0-s2\},-64' +.*: Error: illegal operands `cm.push \{t1,s0-s8\},-64' +.*: Error: illegal operands `cm.push \{s1,s0-s11\},-64' +.*: Error: illegal operands `cm.push \{a9,s0-s5\},-64' +.*: Error: illegal operands `cm.push \{ra,zero\},-64' +.*: Error: illegal operands `cm.push \{ra,ra\},-64' +.*: Error: illegal operands `cm.push \{ra,sp\},-64' +.*: Error: illegal operands `cm.push \{ra,gp\},-64' +.*: Error: illegal operands `cm.push \{ra,tp\},-64' +.*: Error: illegal operands `cm.push \{ra,a0\},-64' +.*: Error: illegal operands `cm.push \{ra,t0\},-64' +.*: Error: illegal operands `cm.push \{ra,s1\},-64' +.*: Error: illegal operands `cm.push \{ra,a0-a2\},-64' +.*: Error: illegal operands `cm.push \{ra,t0-t6\},-64' +.*: Error: illegal operands `cm.push \{ra,s1-s11\},-64' +.*: Error: illegal operands `cm.push \{x0\},-64' +.*: Error: illegal operands `cm.push \{x2,x8\},-64' +.*: Error: illegal operands `cm.push \{x3,x8-x9\},-64' +.*: Error: illegal operands `cm.push \{x4,x8-x9,x18\},-64' +.*: Error: illegal operands `cm.push \{x7,x8-x9,x18-x24\},-64' +.*: Error: illegal operands `cm.push \{x9,x8-x9,x18-x20\},-64' +.*: Error: illegal operands `cm.push \{x17,x8-x9,x18-x24\},-64' +.*: Error: illegal operands `cm.push \{x31,x8-x9,x18-x27\},-64' +.*: Error: illegal operands `cm.push \{x1,x9\},-64' +.*: Error: illegal operands `cm.push \{x1,x7-x9\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x10,x18\},-64' +.*: Error: illegal operands `cm.push \{x1,x5-x7,x18-x24\},-64' +.*: Error: illegal operands `cm.push \{x1,x10-x17,x18-x27\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x19\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x17-x24\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x18-x28\},-64' +.*: Error: illegal operands `cm.push \{ra\},-0' +.*: Error: illegal operands `cm.push \{ra\},-80' +.*: Error: illegal operands `cm.push \{ra\},-15' +.*: Error: illegal operands `cm.push \{ra\},-65' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-0' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-80' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-15' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-65' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-16' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-96' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-31' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-81' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-16' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-96' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-31' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-81' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-32' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-112' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-47' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-97' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-32' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-112' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-47' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-97' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-48' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-128' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-63' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-113' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.s new file mode 100644 index 00000000000..6a0c03afd13 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32-fail.s @@ -0,0 +1,75 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.push {zero}, -64 + cm.push {sp, s0}, -64 + cm.push {gp, s0-s1}, -64 + cm.push {tp, s0-s2}, -64 + cm.push {t1, s0-s8}, -64 + cm.push {s1, s0-s11}, -64 + cm.push {a9, s0-s5}, -64 + + cm.push {ra, zero}, -64 + cm.push {ra, ra}, -64 + cm.push {ra, sp}, -64 + cm.push {ra, gp}, -64 + cm.push {ra, tp}, -64 + cm.push {ra, a0}, -64 + cm.push {ra, t0}, -64 + cm.push {ra, s1}, -64 + cm.push {ra, a0-a2}, -64 + cm.push {ra, t0-t6}, -64 + cm.push {ra, s1-s11}, -64 + + # numeric names + cm.push {x0}, -64 + cm.push {x2, x8}, -64 + cm.push {x3, x8-x9}, -64 + cm.push {x4, x8-x9, x18}, -64 + cm.push {x7, x8-x9, x18-x24}, -64 + cm.push {x9, x8-x9, x18-x20}, -64 + cm.push {x17, x8-x9, x18-x24}, -64 + cm.push {x31, x8-x9, x18-x27}, -64 + + cm.push {x1, x9}, -64 + cm.push {x1, x7-x9}, -64 + cm.push {x1, x8-x10, x18}, -64 + cm.push {x1, x5-x7, x18-x24}, -64 + cm.push {x1, x10-x17, x18-x27}, -64 + + cm.push {x1, x8-x9, x19}, -64 + cm.push {x1, x8-x9, x17-x24}, -64 + cm.push {x1, x8-x9, x18-x28}, -64 + + # spimm + cm.push {ra}, -0 + cm.push {ra}, -80 + cm.push {ra}, -15 + cm.push {ra}, -65 + cm.push {ra, s0-s2}, -0 + cm.push {ra, s0-s2}, -80 + cm.push {ra, s0-s2}, -15 + cm.push {ra, s0-s2}, -65 + + cm.push {ra, s0-s3}, -16 + cm.push {ra, s0-s3}, -96 + cm.push {ra, s0-s3}, -31 + cm.push {ra, s0-s3}, -81 + cm.push {ra, s0-s6}, -16 + cm.push {ra, s0-s6}, -96 + cm.push {ra, s0-s6}, -31 + cm.push {ra, s0-s6}, -81 + + cm.push {ra, s0-s7}, -32 + cm.push {ra, s0-s7}, -112 + cm.push {ra, s0-s7}, -47 + cm.push {ra, s0-s7}, -97 + cm.push {ra, s0-s9}, -32 + cm.push {ra, s0-s9}, -112 + cm.push {ra, s0-s9}, -47 + cm.push {ra, s0-s9}, -97 + + cm.push {ra, s0-s11}, -48 + cm.push {ra, s0-s11}, -128 + cm.push {ra, s0-s11}, -63 + cm.push {ra, s0-s11}, -113 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv32.d b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32.d new file mode 100644 index 00000000000..fb3b30682c0 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32.d @@ -0,0 +1,44 @@ +#as: -march=rv32i_zca_zcmp +#source: zc-zcmp-push-rv32.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+b84e[ ]+cm.push[ ]+\{ra\},-64 +[ ]*[0-9a-f]+:[ ]+b85e[ ]+cm.push[ ]+\{ra,s0\},-64 +[ ]*[0-9a-f]+:[ ]+b86e[ ]+cm.push[ ]+\{ra,s0-s1\},-64 +[ ]*[0-9a-f]+:[ ]+b87e[ ]+cm.push[ ]+\{ra,s0-s2\},-64 +[ ]*[0-9a-f]+:[ ]+b8d6[ ]+cm.push[ ]+\{ra,s0-s8\},-64 +[ ]*[0-9a-f]+:[ ]+b8f2[ ]+cm.push[ ]+\{ra,s0-s11\},-64 +[ ]*[0-9a-f]+:[ ]+b84e[ ]+cm.push[ ]+\{ra\},-64 +[ ]*[0-9a-f]+:[ ]+b85e[ ]+cm.push[ ]+\{ra,s0\},-64 +[ ]*[0-9a-f]+:[ ]+b86e[ ]+cm.push[ ]+\{ra,s0-s1\},-64 +[ ]*[0-9a-f]+:[ ]+b87e[ ]+cm.push[ ]+\{ra,s0-s2\},-64 +[ ]*[0-9a-f]+:[ ]+b8d6[ ]+cm.push[ ]+\{ra,s0-s8\},-64 +[ ]*[0-9a-f]+:[ ]+b8f2[ ]+cm.push[ ]+\{ra,s0-s11},-64 +[ ]*[0-9a-f]+:[ ]+b842[ ]+cm.push[ ]+\{ra\},-16 +[ ]*[0-9a-f]+:[ ]+b846[ ]+cm.push[ ]+\{ra\},-32 +[ ]*[0-9a-f]+:[ ]+b84e[ ]+cm.push[ ]+\{ra\},-64 +[ ]*[0-9a-f]+:[ ]+b872[ ]+cm.push[ ]+\{ra,s0-s2\},-16 +[ ]*[0-9a-f]+:[ ]+b876[ ]+cm.push[ ]+\{ra,s0-s2\},-32 +[ ]*[0-9a-f]+:[ ]+b87e[ ]+cm.push[ ]+\{ra,s0-s2\},-64 +[ ]*[0-9a-f]+:[ ]+b882[ ]+cm.push[ ]+\{ra,s0-s3\},-32 +[ ]*[0-9a-f]+:[ ]+b88a[ ]+cm.push[ ]+\{ra,s0-s3\},-64 +[ ]*[0-9a-f]+:[ ]+b88e[ ]+cm.push[ ]+\{ra,s0-s3\},-80 +[ ]*[0-9a-f]+:[ ]+b8b2[ ]+cm.push[ ]+\{ra,s0-s6\},-32 +[ ]*[0-9a-f]+:[ ]+b8ba[ ]+cm.push[ ]+\{ra,s0-s6\},-64 +[ ]*[0-9a-f]+:[ ]+b8be[ ]+cm.push[ ]+\{ra,s0-s6\},-80 +[ ]*[0-9a-f]+:[ ]+b8c2[ ]+cm.push[ ]+\{ra,s0-s7\},-48 +[ ]*[0-9a-f]+:[ ]+b8c6[ ]+cm.push[ ]+\{ra,s0-s7\},-64 +[ ]*[0-9a-f]+:[ ]+b8ce[ ]+cm.push[ ]+\{ra,s0-s7\},-96 +[ ]*[0-9a-f]+:[ ]+b8e2[ ]+cm.push[ ]+\{ra,s0-s9\},-48 +[ ]*[0-9a-f]+:[ ]+b8e6[ ]+cm.push[ ]+\{ra,s0-s9\},-64 +[ ]*[0-9a-f]+:[ ]+b8ee[ ]+cm.push[ ]+\{ra,s0-s9\},-96 +[ ]*[0-9a-f]+:[ ]+b8f2[ ]+cm.push[ ]+\{ra,s0-s11\},-64 +[ ]*[0-9a-f]+:[ ]+b8f6[ ]+cm.push[ ]+\{ra,s0-s11\},-80 +[ ]*[0-9a-f]+:[ ]+b8fa[ ]+cm.push[ ]+\{ra,s0-s11\},-96 +[ ]*[0-9a-f]+:[ ]+b8fe[ ]+cm.push[ ]+\{ra,s0-s11\},-112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv32.s b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32.s new file mode 100644 index 00000000000..b0592a5f470 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv32.s @@ -0,0 +1,44 @@ +zcmp32: + # -march=rv32i_zca_zcmp + # abi names + cm.push {ra}, -64 + cm.push {ra, s0}, -64 + cm.push {ra, s0-s1}, -64 + cm.push {ra, s0-s2}, -64 + cm.push {ra, s0-s8}, -64 + cm.push {ra, s0-s11}, -64 + + # numeric names + cm.push {x1}, -64 + cm.push {x1, x8}, -64 + cm.push {x1, x8-x9}, -64 + cm.push {x1, x8-x9, x18}, -64 + cm.push {x1, x8-x9, x18-x24}, -64 + cm.push {x1, x8-x9, x18-x27}, -64 + + # spimm + cm.push {ra}, -16 + cm.push {ra}, -32 + cm.push {ra}, -64 + cm.push {ra, s0-s2}, -16 + cm.push {ra, s0-s2}, -32 + cm.push {ra, s0-s2}, -64 + + cm.push {ra, s0-s3}, -32 + cm.push {ra, s0-s3}, -64 + cm.push {ra, s0-s3}, -80 + cm.push {ra, s0-s6}, -32 + cm.push {ra, s0-s6}, -64 + cm.push {ra, s0-s6}, -80 + + cm.push {ra, s0-s7}, -48 + cm.push {ra, s0-s7}, -64 + cm.push {ra, s0-s7}, -96 + cm.push {ra, s0-s9}, -48 + cm.push {ra, s0-s9}, -64 + cm.push {ra, s0-s9}, -96 + + cm.push {ra, s0-s11}, -64 + cm.push {ra, s0-s11}, -80 + cm.push {ra, s0-s11}, -96 + cm.push {ra, s0-s11}, -112 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.d b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.d new file mode 100644 index 00000000000..bad1344b5cd --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.d @@ -0,0 +1,3 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-push-rv64-fail.s +#error_output: zc-zcmp-push-rv64-fail.l \ No newline at end of file diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.l b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.l new file mode 100644 index 00000000000..c1d2cc24671 --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.l @@ -0,0 +1,83 @@ +.*: Assembler messages: +.*: Error: illegal operands `cm.push \{zero\},-64' +.*: Error: illegal operands `cm.push \{sp\},-64' +.*: Error: illegal operands `cm.push \{gp\},-64' +.*: Error: illegal operands `cm.push \{tp\},-64' +.*: Error: illegal operands `cm.push \{t1\},-64' +.*: Error: illegal operands `cm.push \{s1\},-64' +.*: Error: illegal operands `cm.push \{a9\},-64' +.*: Error: illegal operands `cm.push \{ra,zero\},-64' +.*: Error: illegal operands `cm.push \{ra,ra\},-64' +.*: Error: illegal operands `cm.push \{ra,sp\},-64' +.*: Error: illegal operands `cm.push \{ra,gp\},-64' +.*: Error: illegal operands `cm.push \{ra,tp\},-64' +.*: Error: illegal operands `cm.push \{ra,a0\},-64' +.*: Error: illegal operands `cm.push \{ra,t0\},-64' +.*: Error: illegal operands `cm.push \{ra,s1\},-64' +.*: Error: illegal operands `cm.push \{ra,s1-s2\},-64' +.*: Error: illegal operands `cm.push \{ra,t0-t2\},-64' +.*: Error: illegal operands `cm.push \{ra,t0-s8\},-112' +.*: Error: illegal operands `cm.push \{ra,s0-s12\},-112' +.*: Error: illegal operands `cm.push \{x0\},-64' +.*: Error: illegal operands `cm.push \{x2\},-64' +.*: Error: illegal operands `cm.push \{x3\},-64' +.*: Error: illegal operands `cm.push \{x4\},-64' +.*: Error: illegal operands `cm.push \{x31\},-64' +.*: Error: illegal operands `cm.push \{x17\},-64' +.*: Error: illegal operands `cm.push \{x1,x7\},-64' +.*: Error: illegal operands `cm.push \{x1,x9\},-64' +.*: Error: illegal operands `cm.push \{x1,x7-x9\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x10,x18\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x17\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x19\},-64' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x17-x24\},-112' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x19-x25\},-112' +.*: Error: illegal operands `cm.push \{x1,x8-x9,x18-x28\},-112' +.*: Error: illegal operands `cm.push \{ra\},-0' +.*: Error: illegal operands `cm.push \{ra\},-80' +.*: Error: illegal operands `cm.push \{ra\},-15' +.*: Error: illegal operands `cm.push \{ra\},-65' +.*: Error: illegal operands `cm.push \{ra,s0\},-0' +.*: Error: illegal operands `cm.push \{ra,s0\},-80' +.*: Error: illegal operands `cm.push \{ra,s0\},-15' +.*: Error: illegal operands `cm.push \{ra,s0\},-65' +.*: Error: illegal operands `cm.push \{ra,s0-s1\},-16' +.*: Error: illegal operands `cm.push \{ra,s0-s1\},-96' +.*: Error: illegal operands `cm.push \{ra,s0-s1\},-31' +.*: Error: illegal operands `cm.push \{ra,s0-s1\},-81' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-16' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-96' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-31' +.*: Error: illegal operands `cm.push \{ra,s0-s2\},-81' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-32' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-112' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-47' +.*: Error: illegal operands `cm.push \{ra,s0-s3\},-97' +.*: Error: illegal operands `cm.push \{ra,s0-s4\},-32' +.*: Error: illegal operands `cm.push \{ra,s0-s4\},-112' +.*: Error: illegal operands `cm.push \{ra,s0-s4\},-47' +.*: Error: illegal operands `cm.push \{ra,s0-s4\},-97' +.*: Error: illegal operands `cm.push \{ra,s0-s5\},-48' +.*: Error: illegal operands `cm.push \{ra,s0-s5\},-128' +.*: Error: illegal operands `cm.push \{ra,s0-s5\},-63' +.*: Error: illegal operands `cm.push \{ra,s0-s5\},-113' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-48' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-128' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-63' +.*: Error: illegal operands `cm.push \{ra,s0-s6\},-113' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-64' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-144' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-79' +.*: Error: illegal operands `cm.push \{ra,s0-s7\},-129' +.*: Error: illegal operands `cm.push \{ra,s0-s8\},-64' +.*: Error: illegal operands `cm.push \{ra,s0-s8\},-144' +.*: Error: illegal operands `cm.push \{ra,s0-s8\},-79' +.*: Error: illegal operands `cm.push \{ra,s0-s8\},-129' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-80' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-160' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-95' +.*: Error: illegal operands `cm.push \{ra,s0-s9\},-145' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-96' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-176' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-111' +.*: Error: illegal operands `cm.push \{ra,s0-s11\},-161' diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.s b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.s new file mode 100644 index 00000000000..dd7a249003a --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64-fail.s @@ -0,0 +1,98 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.push {zero}, -64 + cm.push {sp}, -64 + cm.push {gp}, -64 + cm.push {tp}, -64 + cm.push {t1}, -64 + cm.push {s1}, -64 + cm.push {a9}, -64 + + cm.push {ra, zero}, -64 + cm.push {ra, ra}, -64 + cm.push {ra, sp}, -64 + cm.push {ra, gp}, -64 + cm.push {ra, tp}, -64 + cm.push {ra, a0}, -64 + cm.push {ra, t0}, -64 + cm.push {ra, s1}, -64 + cm.push {ra, s1-s2}, -64 + cm.push {ra, t0-t2}, -64 + cm.push {ra, t0-s8}, -112 + cm.push {ra, s0-s12}, -112 + + # numeric names + cm.push {x0}, -64 + cm.push {x2}, -64 + cm.push {x3}, -64 + cm.push {x4}, -64 + cm.push {x31}, -64 + cm.push {x17}, -64 + + cm.push {x1, x7}, -64 + cm.push {x1, x9}, -64 + cm.push {x1, x7-x9}, -64 + cm.push {x1, x8-x10, x18}, -64 + + cm.push {x1, x8-x9, x17}, -64 + cm.push {x1, x8-x9, x19}, -64 + cm.push {x1, x8-x9, x17-x24}, -112 + cm.push {x1, x8-x9, x19-x25}, -112 + cm.push {x1, x8-x9, x18-x28}, -112 + + # spimm + cm.push {ra}, -0 + cm.push {ra}, -80 + cm.push {ra}, -15 + cm.push {ra}, -65 + cm.push {ra, s0}, -0 + cm.push {ra, s0}, -80 + cm.push {ra, s0}, -15 + cm.push {ra, s0}, -65 + + cm.push {ra, s0-s1}, -16 + cm.push {ra, s0-s1}, -96 + cm.push {ra, s0-s1}, -31 + cm.push {ra, s0-s1}, -81 + cm.push {ra, s0-s2}, -16 + cm.push {ra, s0-s2}, -96 + cm.push {ra, s0-s2}, -31 + cm.push {ra, s0-s2}, -81 + + cm.push {ra, s0-s3}, -32 + cm.push {ra, s0-s3}, -112 + cm.push {ra, s0-s3}, -47 + cm.push {ra, s0-s3}, -97 + cm.push {ra, s0-s4}, -32 + cm.push {ra, s0-s4}, -112 + cm.push {ra, s0-s4}, -47 + cm.push {ra, s0-s4}, -97 + + cm.push {ra, s0-s5}, -48 + cm.push {ra, s0-s5}, -128 + cm.push {ra, s0-s5}, -63 + cm.push {ra, s0-s5}, -113 + cm.push {ra, s0-s6}, -48 + cm.push {ra, s0-s6}, -128 + cm.push {ra, s0-s6}, -63 + cm.push {ra, s0-s6}, -113 + + cm.push {ra, s0-s7}, -64 + cm.push {ra, s0-s7}, -144 + cm.push {ra, s0-s7}, -79 + cm.push {ra, s0-s7}, -129 + cm.push {ra, s0-s8}, -64 + cm.push {ra, s0-s8}, -144 + cm.push {ra, s0-s8}, -79 + cm.push {ra, s0-s8}, -129 + + cm.push {ra, s0-s9}, -80 + cm.push {ra, s0-s9}, -160 + cm.push {ra, s0-s9}, -95 + cm.push {ra, s0-s9}, -145 + + cm.push {ra, s0-s11}, -96 + cm.push {ra, s0-s11}, -176 + cm.push {ra, s0-s11}, -111 + cm.push {ra, s0-s11}, -161 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv64.d b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64.d new file mode 100644 index 00000000000..16dc38695ab --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64.d @@ -0,0 +1,46 @@ +#as: -march=rv64i_zca_zcmp +#source: zc-zcmp-push-rv64.s +#objdump: -dr -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+000 : +[ ]*[0-9a-f]+:[ ]+b84e[ ]+cm.push[ ]+\{ra\},-64 +[ ]*[0-9a-f]+:[ ]+b85e[ ]+cm.push[ ]+\{ra,s0\},-64 +[ ]*[0-9a-f]+:[ ]+b86a[ ]+cm.push[ ]+\{ra,s0-s1\},-64 +[ ]*[0-9a-f]+:[ ]+b87a[ ]+cm.push[ ]+\{ra,s0-s2\},-64 +[ ]*[0-9a-f]+:[ ]+b8da[ ]+cm.push[ ]+\{ra,s0-s8\},-112 +[ ]*[0-9a-f]+:[ ]+b8e6[ ]+cm.push[ ]+\{ra,s0-s9\},-112 +[ ]*[0-9a-f]+:[ ]+b8f2[ ]+cm.push[ ]+\{ra,s0-s11\},-112 +[ ]*[0-9a-f]+:[ ]+b84e[ ]+cm.push[ ]+\{ra\},-64 +[ ]*[0-9a-f]+:[ ]+b85e[ ]+cm.push[ ]+\{ra,s0\},-64 +[ ]*[0-9a-f]+:[ ]+b86a[ ]+cm.push[ ]+\{ra,s0-s1\},-64 +[ ]*[0-9a-f]+:[ ]+b87a[ ]+cm.push[ ]+\{ra,s0-s2\},-64 +[ ]*[0-9a-f]+:[ ]+b8da[ ]+cm.push[ ]+\{ra,s0-s8\},-112 +[ ]*[0-9a-f]+:[ ]+b8e6[ ]+cm.push[ ]+\{ra,s0-s9\},-112 +[ ]*[0-9a-f]+:[ ]+b8f2[ ]+cm.push[ ]+\{ra,s0-s11},-112 +[ ]*[0-9a-f]+:[ ]+b842[ ]+cm.push[ ]+\{ra\},-16 +[ ]*[0-9a-f]+:[ ]+b846[ ]+cm.push[ ]+\{ra\},-32 +[ ]*[0-9a-f]+:[ ]+b84e[ ]+cm.push[ ]+\{ra\},-64 +[ ]*[0-9a-f]+:[ ]+b872[ ]+cm.push[ ]+\{ra,s0-s2\},-32 +[ ]*[0-9a-f]+:[ ]+b87a[ ]+cm.push[ ]+\{ra,s0-s2\},-64 +[ ]*[0-9a-f]+:[ ]+b87e[ ]+cm.push[ ]+\{ra,s0-s2\},-80 +[ ]*[0-9a-f]+:[ ]+b882[ ]+cm.push[ ]+\{ra,s0-s3\},-48 +[ ]*[0-9a-f]+:[ ]+b886[ ]+cm.push[ ]+\{ra,s0-s3\},-64 +[ ]*[0-9a-f]+:[ ]+b88e[ ]+cm.push[ ]+\{ra,s0-s3\},-96 +[ ]*[0-9a-f]+:[ ]+b8b2[ ]+cm.push[ ]+\{ra,s0-s6\},-64 +[ ]*[0-9a-f]+:[ ]+b8b6[ ]+cm.push[ ]+\{ra,s0-s6\},-80 +[ ]*[0-9a-f]+:[ ]+b8be[ ]+cm.push[ ]+\{ra,s0-s6\},-112 +[ ]*[0-9a-f]+:[ ]+b8c2[ ]+cm.push[ ]+\{ra,s0-s7\},-80 +[ ]*[0-9a-f]+:[ ]+b8c6[ ]+cm.push[ ]+\{ra,s0-s7\},-96 +[ ]*[0-9a-f]+:[ ]+b8ce[ ]+cm.push[ ]+\{ra,s0-s7\},-128 +[ ]*[0-9a-f]+:[ ]+b8e2[ ]+cm.push[ ]+\{ra,s0-s9\},-96 +[ ]*[0-9a-f]+:[ ]+b8e6[ ]+cm.push[ ]+\{ra,s0-s9\},-112 +[ ]*[0-9a-f]+:[ ]+b8ee[ ]+cm.push[ ]+\{ra,s0-s9\},-144 +[ ]*[0-9a-f]+:[ ]+b8f2[ ]+cm.push[ ]+\{ra,s0-s11\},-112 +[ ]*[0-9a-f]+:[ ]+b8f6[ ]+cm.push[ ]+\{ra,s0-s11\},-128 +[ ]*[0-9a-f]+:[ ]+b8fa[ ]+cm.push[ ]+\{ra,s0-s11\},-144 +[ ]*[0-9a-f]+:[ ]+b8fe[ ]+cm.push[ ]+\{ra,s0-s11\},-160 diff --git a/gas/testsuite/gas/riscv/zc-zcmp-push-rv64.s b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64.s new file mode 100644 index 00000000000..ab4a7ce8c0b --- /dev/null +++ b/gas/testsuite/gas/riscv/zc-zcmp-push-rv64.s @@ -0,0 +1,49 @@ +zcmp64: + # -march=rv64i_zca_zcmp + # abi names + cm.push {ra}, -64 + cm.push {ra, s0}, -64 + cm.push {ra, s0-s1}, -64 + cm.push {ra, s0-s2}, -64 + cm.push {ra, s0-s8}, -112 + cm.push {ra, s0-s9}, -112 + cm.push {ra, s0-s11}, -112 + + # numeric names + cm.push {x1}, -64 + cm.push {x1, x8}, -64 + cm.push {x1, x8-x9}, -64 + cm.push {x1, x8-x9, x18}, -64 + cm.push {x1, x8-x9, x18-x24}, -112 + cm.push {x1, x8-x9, x18-x25}, -112 + cm.push {x1, x8-x9, x18-x27}, -112 + + # spimm + cm.push {ra}, -16 + cm.push {ra}, -32 + cm.push {ra}, -64 + + cm.push {ra, s0-s2}, -32 + cm.push {ra, s0-s2}, -64 + cm.push {ra, s0-s2}, -80 + + cm.push {ra, s0-s3}, -48 + cm.push {ra, s0-s3}, -64 + cm.push {ra, s0-s3}, -96 + + cm.push {ra, s0-s6}, -64 + cm.push {ra, s0-s6}, -80 + cm.push {ra, s0-s6}, -112 + + cm.push {ra, s0-s7}, -80 + cm.push {ra, s0-s7}, -96 + cm.push {ra, s0-s7}, -128 + + cm.push {ra, s0-s9}, -96 + cm.push {ra, s0-s9}, -112 + cm.push {ra, s0-s9}, -144 + + cm.push {ra, s0-s11}, -112 + cm.push {ra, s0-s11}, -128 + cm.push {ra, s0-s11}, -144 + cm.push {ra, s0-s11}, -160