[binutils-gdb] aarch64: Add new test conditional-compare.d

Alice Carlotti acarlotti@sourceware.org
Fri May 9 19:39:20 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=87d10eecf9db0e77948e701387111d20c1211da0

commit 87d10eecf9db0e77948e701387111d20c1211da0
Author: Alice Carlotti <alice.carlotti@arm.com>
Date:   Sun Apr 20 23:11:29 2025 +0100

    aarch64: Add new test conditional-compare.d
    
    The register form of ccmp was already tested.

Diff:
---
 gas/testsuite/gas/aarch64/conditional-compare.d | 77 +++++++++++++++++++++++++
 gas/testsuite/gas/aarch64/conditional-compare.s | 76 ++++++++++++++++++++++++
 2 files changed, 153 insertions(+)

diff --git a/gas/testsuite/gas/aarch64/conditional-compare.d b/gas/testsuite/gas/aarch64/conditional-compare.d
new file mode 100644
index 00000000000..294e0c94c30
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/conditional-compare.d
@@ -0,0 +1,77 @@
+#as: -march=armv8-a
+#objdump: -dr
+
+.*:     file format .*
+
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+ *[0-9a-f]+:	3a400800 	ccmn	w0, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a400be0 	ccmn	wzr, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a5f0800 	ccmn	w0, #0x1f, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a40080f 	ccmn	w0, #0x0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	3a40f800 	ccmn	w0, #0x0, #0x0, nv
+ *[0-9a-f]+:	ba400800 	ccmn	x0, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	ba400be0 	ccmn	xzr, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	ba5f0800 	ccmn	x0, #0x1f, #0x0, eq	// eq = none
+ *[0-9a-f]+:	ba40080f 	ccmn	x0, #0x0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	ba40f800 	ccmn	x0, #0x0, #0x0, nv
+ *[0-9a-f]+:	7a400800 	ccmp	w0, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	7a400be0 	ccmp	wzr, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	7a5f0800 	ccmp	w0, #0x1f, #0x0, eq	// eq = none
+ *[0-9a-f]+:	7a40080f 	ccmp	w0, #0x0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	7a40f800 	ccmp	w0, #0x0, #0x0, nv
+ *[0-9a-f]+:	fa400800 	ccmp	x0, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	fa400be0 	ccmp	xzr, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	fa5f0800 	ccmp	x0, #0x1f, #0x0, eq	// eq = none
+ *[0-9a-f]+:	fa40080f 	ccmp	x0, #0x0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	fa40f800 	ccmp	x0, #0x0, #0x0, nv
+ *[0-9a-f]+:	3a400000 	ccmn	w0, w0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a4003e0 	ccmn	wzr, w0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a5f0000 	ccmn	w0, wzr, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a40000f 	ccmn	w0, w0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	3a40f000 	ccmn	w0, w0, #0x0, nv
+ *[0-9a-f]+:	ba400000 	ccmn	x0, x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	ba4003e0 	ccmn	xzr, x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	ba5f0000 	ccmn	x0, xzr, #0x0, eq	// eq = none
+ *[0-9a-f]+:	ba40000f 	ccmn	x0, x0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	ba40f000 	ccmn	x0, x0, #0x0, nv
+ *[0-9a-f]+:	7a400000 	ccmp	w0, w0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	7a4003e0 	ccmp	wzr, w0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	7a5f0000 	ccmp	w0, wzr, #0x0, eq	// eq = none
+ *[0-9a-f]+:	7a40000f 	ccmp	w0, w0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	7a40f000 	ccmp	w0, w0, #0x0, nv
+ *[0-9a-f]+:	fa400000 	ccmp	x0, x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	fa4003e0 	ccmp	xzr, x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	fa5f0000 	ccmp	x0, xzr, #0x0, eq	// eq = none
+ *[0-9a-f]+:	fa40000f 	ccmp	x0, x0, #0xf, eq	// eq = none
+ *[0-9a-f]+:	fa40f000 	ccmp	x0, x0, #0x0, nv
+ *[0-9a-f]+:	3a400800 	ccmn	w0, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a400800 	ccmn	w0, #0x0, #0x0, eq	// eq = none
+ *[0-9a-f]+:	3a401800 	ccmn	w0, #0x0, #0x0, ne	// ne = any
+ *[0-9a-f]+:	3a401800 	ccmn	w0, #0x0, #0x0, ne	// ne = any
+ *[0-9a-f]+:	3a402800 	ccmn	w0, #0x0, #0x0, cs	// cs = hs, nlast
+ *[0-9a-f]+:	3a402800 	ccmn	w0, #0x0, #0x0, cs	// cs = hs, nlast
+ *[0-9a-f]+:	3a402800 	ccmn	w0, #0x0, #0x0, cs	// cs = hs, nlast
+ *[0-9a-f]+:	3a403800 	ccmn	w0, #0x0, #0x0, cc	// cc = lo, ul, last
+ *[0-9a-f]+:	3a403800 	ccmn	w0, #0x0, #0x0, cc	// cc = lo, ul, last
+ *[0-9a-f]+:	3a403800 	ccmn	w0, #0x0, #0x0, cc	// cc = lo, ul, last
+ *[0-9a-f]+:	3a404800 	ccmn	w0, #0x0, #0x0, mi	// mi = first
+ *[0-9a-f]+:	3a404800 	ccmn	w0, #0x0, #0x0, mi	// mi = first
+ *[0-9a-f]+:	3a405800 	ccmn	w0, #0x0, #0x0, pl	// pl = nfrst
+ *[0-9a-f]+:	3a405800 	ccmn	w0, #0x0, #0x0, pl	// pl = nfrst
+ *[0-9a-f]+:	3a406800 	ccmn	w0, #0x0, #0x0, vs
+ *[0-9a-f]+:	3a407800 	ccmn	w0, #0x0, #0x0, vc
+ *[0-9a-f]+:	3a408800 	ccmn	w0, #0x0, #0x0, hi	// hi = pmore
+ *[0-9a-f]+:	3a408800 	ccmn	w0, #0x0, #0x0, hi	// hi = pmore
+ *[0-9a-f]+:	3a409800 	ccmn	w0, #0x0, #0x0, ls	// ls = plast
+ *[0-9a-f]+:	3a409800 	ccmn	w0, #0x0, #0x0, ls	// ls = plast
+ *[0-9a-f]+:	3a40a800 	ccmn	w0, #0x0, #0x0, ge	// ge = tcont
+ *[0-9a-f]+:	3a40a800 	ccmn	w0, #0x0, #0x0, ge	// ge = tcont
+ *[0-9a-f]+:	3a40b800 	ccmn	w0, #0x0, #0x0, lt	// lt = tstop
+ *[0-9a-f]+:	3a40b800 	ccmn	w0, #0x0, #0x0, lt	// lt = tstop
+ *[0-9a-f]+:	3a40c800 	ccmn	w0, #0x0, #0x0, gt
+ *[0-9a-f]+:	3a40d800 	ccmn	w0, #0x0, #0x0, le
+ *[0-9a-f]+:	3a40e800 	ccmn	w0, #0x0, #0x0, al
+ *[0-9a-f]+:	3a40f800 	ccmn	w0, #0x0, #0x0, nv
diff --git a/gas/testsuite/gas/aarch64/conditional-compare.s b/gas/testsuite/gas/aarch64/conditional-compare.s
new file mode 100644
index 00000000000..1fe23d3e701
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/conditional-compare.s
@@ -0,0 +1,76 @@
+	ccmn	w0, #0, #0, eq
+	ccmn	wzr, #0, #0, eq
+	ccmn	w0, #31, #0, eq
+	ccmn	w0, #0, #15, eq
+	ccmn	w0, #0, #0, nv
+
+	ccmn	x0, #0, #0, eq
+	ccmn	xzr, #0, #0, eq
+	ccmn	x0, #31, #0, eq
+	ccmn	x0, #0, #15, eq
+	ccmn	x0, #0, #0, nv
+
+	ccmp	w0, #0, #0, eq
+	ccmp	wzr, #0, #0, eq
+	ccmp	w0, #31, #0, eq
+	ccmp	w0, #0, #15, eq
+	ccmp	w0, #0, #0, nv
+
+	ccmp	x0, #0, #0, eq
+	ccmp	xzr, #0, #0, eq
+	ccmp	x0, #31, #0, eq
+	ccmp	x0, #0, #15, eq
+	ccmp	x0, #0, #0, nv
+
+	ccmn	w0, w0, #0, eq
+	ccmn	wzr, w0, #0, eq
+	ccmn	w0, wzr, #0, eq
+	ccmn	w0, w0, #15, eq
+	ccmn	w0, w0, #0, nv
+
+	ccmn	x0, x0, #0, eq
+	ccmn	xzr, x0, #0, eq
+	ccmn	x0, xzr, #0, eq
+	ccmn	x0, x0, #15, eq
+	ccmn	x0, x0, #0, nv
+
+	ccmp	w0, w0, #0, eq
+	ccmp	wzr, w0, #0, eq
+	ccmp	w0, wzr, #0, eq
+	ccmp	w0, w0, #15, eq
+	ccmp	w0, w0, #0, nv
+
+	ccmp	x0, x0, #0, eq
+	ccmp	xzr, x0, #0, eq
+	ccmp	x0, xzr, #0, eq
+	ccmp	x0, x0, #15, eq
+	ccmp	x0, x0, #0, nv
+
+	ccmn	w0, #0, #0, eq
+	ccmn	w0, #0, #0, none
+	ccmn	w0, #0, #0, ne
+	ccmn	w0, #0, #0, any
+	ccmn	w0, #0, #0, hs
+	ccmn	w0, #0, #0, cs
+	ccmn	w0, #0, #0, nlast
+	ccmn	w0, #0, #0, lo
+	ccmn	w0, #0, #0, cc
+	ccmn	w0, #0, #0, last
+	ccmn	w0, #0, #0, mi
+	ccmn	w0, #0, #0, first
+	ccmn	w0, #0, #0, pl
+	ccmn	w0, #0, #0, nfrst
+	ccmn	w0, #0, #0, vs
+	ccmn	w0, #0, #0, vc
+	ccmn	w0, #0, #0, hi
+	ccmn	w0, #0, #0, pmore
+	ccmn	w0, #0, #0, ls
+	ccmn	w0, #0, #0, plast
+	ccmn	w0, #0, #0, ge
+	ccmn	w0, #0, #0, tcont
+	ccmn	w0, #0, #0, lt
+	ccmn	w0, #0, #0, tstop
+	ccmn	w0, #0, #0, gt
+	ccmn	w0, #0, #0, le
+	ccmn	w0, #0, #0, al
+	ccmn	w0, #0, #0, nv


More information about the Binutils-cvs mailing list