Power10 byte reverse instructions

Alan Modra amodra@gmail.com
Mon May 11 11:27:35 GMT 2020


opcodes/
	* ppc-opc.c (powerpc_opcodes) <brd, brh, brw>: New mnemonics.
gas/
	* testsuite/gas/ppc/byte_rev.d,
	* testsuite/gas/ppc/byte_rev.s: New test.
	* testsuite/gas/ppc/ppc.exp: Run it.

diff --git a/gas/testsuite/gas/ppc/byte_rev.d b/gas/testsuite/gas/ppc/byte_rev.d
new file mode 100644
index 0000000000..ace537c458
--- /dev/null
+++ b/gas/testsuite/gas/ppc/byte_rev.d
@@ -0,0 +1,13 @@
+#as: -mpower10
+#objdump: -dr -Mpower10
+#name: byte reverse
+
+.*
+
+
+Disassembly of section \.text:
+
+0+0 <_start>:
+.*:	(7c 83 01 76|76 01 83 7c) 	brd     r3,r4
+.*:	(7c a4 01 b6|b6 01 a4 7c) 	brh     r4,r5
+.*:	(7c c5 01 36|36 01 c5 7c) 	brw     r5,r6
diff --git a/gas/testsuite/gas/ppc/byte_rev.s b/gas/testsuite/gas/ppc/byte_rev.s
new file mode 100644
index 0000000000..87d4b9c97f
--- /dev/null
+++ b/gas/testsuite/gas/ppc/byte_rev.s
@@ -0,0 +1,5 @@
+	.text
+_start:
+	brd	3,4
+	brh	4,5
+	brw	5,6
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index 6426996833..2b7af4fe8c 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -131,3 +131,4 @@ run_dump_test "prefix-pcrel"
 if { [supports_ppc64] } then {
     run_dump_test "prefix-reloc"
 }
+run_dump_test "byte_rev"
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 8057f4a9d5..927a8922ab 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -5919,6 +5919,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"prtyw",	X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,		{RA, RS}},
 
+{"brw",		X(31,155),	XRB_MASK,    POWER10,	0,		{RA, RS}},
+
 {"stdepx",	X(31,157),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
 
 {"stwepx",	X(31,159),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
@@ -5955,6 +5957,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"prtyd",	X(31,186),	XRB_MASK, POWER6|PPCA2,	0,		{RA, RS}},
 
+{"brd",		X(31,187),	XRB_MASK,    POWER10,	0,		{RA, RS}},
+
 {"cmprb",	X(31,192),	XCMP_MASK,   POWER9,	0,		{BF, L, RA, RB}},
 
 {"icblq.",	XRC(31,198,1),	X_MASK,	     E6500,	0,		{CT, RA0, RB}},
@@ -5993,6 +5997,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"sleq",	XRC(31,217,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
 {"sleq.",	XRC(31,217,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
 
+{"brh",		X(31,219),	XRB_MASK,    POWER10,	0,		{RA, RS}},
+
 {"stbepx",	X(31,223),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
 
 {"cmpeqb",	X(31,224),	XCMPL_MASK,  POWER9,	0,		{BF, RA, RB}},

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list