[PATCH v2 3/3] RISC-V: Add testcases for z[fdq]inx
Palmer Dabbelt
palmer@dabbelt.com
Thu Nov 18 02:15:03 GMT 2021
On Wed, 17 Nov 2021 04:10:08 PST (-0800), jiawei@iscas.ac.cn wrote:
> Use gpr when the zfinx enable, the testcases contain float
> instructions that reuse by z[fdq]inx.
>
> gas/ChangeLog:
>
> * testsuite/gas/riscv/zdinx.d: New test.
> * testsuite/gas/riscv/zdinx.s: New test.
> * testsuite/gas/riscv/zfinx.d: New test.
> * testsuite/gas/riscv/zfinx.s: New test.
> * testsuite/gas/riscv/zqinx.d: New test.
> * testsuite/gas/riscv/zqinx.s: New test.
>
> ---
> gas/testsuite/gas/riscv/zdinx.d | 42 +++++++++++++++++++++++++++++++
> gas/testsuite/gas/riscv/zdinx.s | 34 +++++++++++++++++++++++++
> gas/testsuite/gas/riscv/zfinx.d | 40 ++++++++++++++++++++++++++++++
> gas/testsuite/gas/riscv/zfinx.s | 32 ++++++++++++++++++++++++
> gas/testsuite/gas/riscv/zqinx.d | 44 +++++++++++++++++++++++++++++++++
> gas/testsuite/gas/riscv/zqinx.s | 36 +++++++++++++++++++++++++++
> 6 files changed, 228 insertions(+)
> create mode 100644 gas/testsuite/gas/riscv/zdinx.d
> create mode 100644 gas/testsuite/gas/riscv/zdinx.s
> create mode 100644 gas/testsuite/gas/riscv/zfinx.d
> create mode 100644 gas/testsuite/gas/riscv/zfinx.s
> create mode 100644 gas/testsuite/gas/riscv/zqinx.d
> create mode 100644 gas/testsuite/gas/riscv/zqinx.s
These generally look good, but we should have some negative tests too --
ie, these should fail on F, and things like "fadd.s a0, a0, a0" should
fail on Zfinx. IMO that doesn't need to block the patch set, though, as
these do work now.
> diff --git a/gas/testsuite/gas/riscv/zdinx.d b/gas/testsuite/gas/riscv/zdinx.d
> new file mode 100644
> index 00000000000..85c270fe913
> --- /dev/null
> +++ b/gas/testsuite/gas/riscv/zdinx.d
> @@ -0,0 +1,42 @@
> +#as: -march=rv64ima_zdinx
> +#source: zdinx.s
> +#objdump: -dr
> +
> +.*:[ ]+file format .*
> +
> +Disassembly of section .text:
> +
> +0+000 <target>:
> +[ ]+[0-9a-f]+:[ ]+02c5f553[ ]+fadd.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+0ac5f553[ ]+fsub.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+12c5f553[ ]+fmul.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+1ac5f553[ ]+fdiv.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+5a057553[ ]+fsqrt.d[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+2ac58553[ ]+fmin.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+2ac59553[ ]+fmax.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+6ac5f543[ ]+fmadd.d[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+6ac5f54f[ ]+fnmadd.d[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+6ac5f547[ ]+fmsub.d[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+6ac5f54b[ ]+fnmsub.d[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+c205f553[ ]+fcvt.w.d[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c215f553[ ]+fcvt.wu.d[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c225f553[ ]+fcvt.l.d[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c235f553[ ]+fcvt.lu.d[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+4015f553[ ]+fcvt.s.d[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+42058553[ ]+fcvt.d.s[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d2058553[ ]+fcvt.d.w[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d2158553[ ]+fcvt.d.wu[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d225f553[ ]+fcvt.d.l[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d235f553[ ]+fcvt.d.lu[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+22c58553[ ]+fsgnj.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+22c59553[ ]+fsgnjn.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+22c5a553[ ]+fsgnjx.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a2c5a553[ ]+feq.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a2c59553[ ]+flt.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a2c58553[ ]+fle.d[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a2b61553[ ]+flt.d[ ]+a0,a2,a1
> +[ ]+[0-9a-f]+:[ ]+a2b60553[ ]+fle.d[ ]+a0,a2,a1
> +[ ]+[0-9a-f]+:[ ]+22a51553[ ]+fneg.d[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+22a52553[ ]+fabs.d[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+e2059553[ ]+fclass.d[ ]+a0,a1
> +
> diff --git a/gas/testsuite/gas/riscv/zdinx.s b/gas/testsuite/gas/riscv/zdinx.s
> new file mode 100644
> index 00000000000..e1bf73cf4bf
> --- /dev/null
> +++ b/gas/testsuite/gas/riscv/zdinx.s
> @@ -0,0 +1,34 @@
> +target:
> + fadd.d a0, a1, a2
> + fsub.d a0, a1, a2
> + fmul.d a0, a1, a2
> + fdiv.d a0, a1, a2
> + fsqrt.d a0, a0
> + fmin.d a0, a1, a2
> + fmax.d a0, a1, a2
> + fmadd.d a0, a1, a2, a3
> + fnmadd.d a0, a1, a2, a3
> + fmsub.d a0, a1, a2, a3
> + fnmsub.d a0, a1, a2, a3
> + fcvt.w.d a0, a1
> + fcvt.wu.d a0, a1
> + fcvt.l.d a0, a1
> + fcvt.lu.d a0, a1
> + fcvt.s.d a0, a1
> + fcvt.d.s a0, a1
> + fcvt.d.w a0, a1
> + fcvt.d.wu a0, a1
> + fcvt.d.l a0, a1
> + fcvt.d.lu a0, a1
> + fsgnj.d a0, a1, a2
> + fsgnjn.d a0, a1, a2
> + fsgnjx.d a0, a1, a2
> + feq.d a0, a1, a2
> + flt.d a0, a1, a2
> + fle.d a0, a1, a2
> + fgt.d a0, a1, a2
> + fge.d a0, a1, a2
> + fneg.d a0, a0
> + fabs.d a0, a0
> + fclass.d a0, a1
> +
> diff --git a/gas/testsuite/gas/riscv/zfinx.d b/gas/testsuite/gas/riscv/zfinx.d
> new file mode 100644
> index 00000000000..7aebe9d5e3e
> --- /dev/null
> +++ b/gas/testsuite/gas/riscv/zfinx.d
> @@ -0,0 +1,40 @@
> +#as: -march=rv64ima_zfinx
> +#source: zfinx.s
> +#objdump: -dr
> +
> +.*:[ ]+file format .*
> +
> +Disassembly of section .text:
> +
> +0+000 <target>:
> +[ ]+[0-9a-f]+:[ ]+00c5f553[ ]+fadd.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+08c5f553[ ]+fsub.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+10c5f553[ ]+fmul.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+18c5f553[ ]+fdiv.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+58057553[ ]+fsqrt.s[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+28c58553[ ]+fmin.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+28c59553[ ]+fmax.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+68c5f543[ ]+fmadd.s[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+68c5f54f[ ]+fnmadd.s[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+68c5f547[ ]+fmsub.s[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+68c5f54b[ ]+fnmsub.s[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+c005f553[ ]+fcvt.w.s[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c015f553[ ]+fcvt.wu.s[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c025f553[ ]+fcvt.l.s[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c035f553[ ]+fcvt.lu.s[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d005f553[ ]+fcvt.s.w[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d015f553[ ]+fcvt.s.wu[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d025f553[ ]+fcvt.s.l[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d035f553[ ]+fcvt.s.lu[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+20c58553[ ]+fsgnj.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+20c59553[ ]+fsgnjn.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+20c5a553[ ]+fsgnjx.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a0c5a553[ ]+feq.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a0c59553[ ]+flt.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a0c58553[ ]+fle.s[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a0b61553[ ]+flt.s[ ]+a0,a2,a1
> +[ ]+[0-9a-f]+:[ ]+a0b60553[ ]+fle.s[ ]+a0,a2,a1
> +[ ]+[0-9a-f]+:[ ]+20a51553[ ]+fneg.s[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+20a52553[ ]+fabs.s[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+e0059553[ ]+fclass.s[ ]+a0,a1
> +
> diff --git a/gas/testsuite/gas/riscv/zfinx.s b/gas/testsuite/gas/riscv/zfinx.s
> new file mode 100644
> index 00000000000..aa5cd386536
> --- /dev/null
> +++ b/gas/testsuite/gas/riscv/zfinx.s
> @@ -0,0 +1,32 @@
> +target:
> + fadd.s a0, a1, a2
> + fsub.s a0, a1, a2
> + fmul.s a0, a1, a2
> + fdiv.s a0, a1, a2
> + fsqrt.s a0, a0
> + fmin.s a0, a1, a2
> + fmax.s a0, a1, a2
> + fmadd.s a0, a1, a2, a3
> + fnmadd.s a0, a1, a2, a3
> + fmsub.s a0, a1, a2, a3
> + fnmsub.s a0, a1, a2, a3
> + fcvt.w.s a0, a1
> + fcvt.wu.s a0, a1
> + fcvt.l.s a0, a1
> + fcvt.lu.s a0, a1
> + fcvt.s.w a0, a1
> + fcvt.s.wu a0, a1
> + fcvt.s.l a0, a1
> + fcvt.s.lu a0, a1
> + fsgnj.s a0, a1, a2
> + fsgnjn.s a0, a1, a2
> + fsgnjx.s a0, a1, a2
> + feq.s a0, a1, a2
> + flt.s a0, a1, a2
> + fle.s a0, a1, a2
> + fgt.s a0, a1, a2
> + fge.s a0, a1, a2
> + fneg.s a0, a0
> + fabs.s a0, a0
> + fclass.s a0, a1
> +
> diff --git a/gas/testsuite/gas/riscv/zqinx.d b/gas/testsuite/gas/riscv/zqinx.d
> new file mode 100644
> index 00000000000..5f5ab7c75cb
> --- /dev/null
> +++ b/gas/testsuite/gas/riscv/zqinx.d
> @@ -0,0 +1,44 @@
> +#as: -march=rv64ima_zqinx
> +#source: zqinx.s
> +#objdump: -dr
> +
> +.*:[ ]+file format .*
> +
> +Disassembly of section .text:
> +
> +0+000 <target>:
> +[ ]+[0-9a-f]+:[ ]+06c5f553[ ]+fadd.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+0ec5f553[ ]+fsub.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+16c5f553[ ]+fmul.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+1ec5f553[ ]+fdiv.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+5e057553[ ]+fsqrt.q[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+2ec58553[ ]+fmin.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+2ec59553[ ]+fmax.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+6ec5f543[ ]+fmadd.q[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+6ec5f54f[ ]+fnmadd.q[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+6ec5f547[ ]+fmsub.q[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+6ec5f54b[ ]+fnmsub.q[ ]+a0,a1,a2,a3
> +[ ]+[0-9a-f]+:[ ]+c605f553[ ]+fcvt.w.q[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c615f553[ ]+fcvt.wu.q[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c625f553[ ]+fcvt.l.q[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+c635f553[ ]+fcvt.lu.q[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+4035f553[ ]+fcvt.s.q[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+4235f553[ ]+fcvt.d.q[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+46058553[ ]+fcvt.q.s[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+46158553[ ]+fcvt.q.d[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d6058553[ ]+fcvt.q.w[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d6158553[ ]+fcvt.q.wu[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d625f553[ ]+fcvt.q.l[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+d635f553[ ]+fcvt.q.lu[ ]+a0,a1
> +[ ]+[0-9a-f]+:[ ]+26c58553[ ]+fsgnj.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+26c59553[ ]+fsgnjn.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+26c5a553[ ]+fsgnjx.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a6c5a553[ ]+feq.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a6c59553[ ]+flt.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a6c58553[ ]+fle.q[ ]+a0,a1,a2
> +[ ]+[0-9a-f]+:[ ]+a6b61553[ ]+flt.q[ ]+a0,a2,a1
> +[ ]+[0-9a-f]+:[ ]+a6b60553[ ]+fle.q[ ]+a0,a2,a1
> +[ ]+[0-9a-f]+:[ ]+26a51553[ ]+fneg.q[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+26a52553[ ]+fabs.q[ ]+a0,a0
> +[ ]+[0-9a-f]+:[ ]+e6059553[ ]+fclass.q[ ]+a0,a1
> +
> diff --git a/gas/testsuite/gas/riscv/zqinx.s b/gas/testsuite/gas/riscv/zqinx.s
> new file mode 100644
> index 00000000000..797bb1f9ed7
> --- /dev/null
> +++ b/gas/testsuite/gas/riscv/zqinx.s
> @@ -0,0 +1,36 @@
> +target:
> + fadd.q a0, a1, a2
> + fsub.q a0, a1, a2
> + fmul.q a0, a1, a2
> + fdiv.q a0, a1, a2
> + fsqrt.q a0, a0
> + fmin.q a0, a1, a2
> + fmax.q a0, a1, a2
> + fmadd.q a0, a1, a2, a3
> + fnmadd.q a0, a1, a2, a3
> + fmsub.q a0, a1, a2, a3
> + fnmsub.q a0, a1, a2, a3
> + fcvt.w.q a0, a1
> + fcvt.wu.q a0, a1
> + fcvt.l.q a0, a1
> + fcvt.lu.q a0, a1
> + fcvt.s.q a0, a1
> + fcvt.d.q a0, a1
> + fcvt.q.s a0, a1
> + fcvt.q.d a0, a1
> + fcvt.q.w a0, a1
> + fcvt.q.wu a0, a1
> + fcvt.q.l a0, a1
> + fcvt.q.lu a0, a1
> + fsgnj.q a0, a1, a2
> + fsgnjn.q a0, a1, a2
> + fsgnjx.q a0, a1, a2
> + feq.q a0, a1, a2
> + flt.q a0, a1, a2
> + fle.q a0, a1, a2
> + fgt.q a0, a1, a2
> + fge.q a0, a1, a2
> + fneg.q a0, a0
> + fabs.q a0, a0
> + fclass.q a0, a1
> +
More information about the Binutils
mailing list