This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] A few ppc assembler fixes
- From: Peter Bergner <bergner at vnet dot ibm dot com>
- To: Alan Modra <amodra at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>, Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>, Hal Finkel <hfinkel at anl dot gov>
- Date: Fri, 24 Apr 2015 16:55:32 -0500
- Subject: Re: [PATCH] A few ppc assembler fixes
- Authentication-results: sourceware.org; auth=none
- References: <1429746727 dot 21947 dot 60 dot camel at otta> <20150423031444 dot GM12627 at bubble dot grove dot modra dot org> <1429761126 dot 21947 dot 74 dot camel at otta> <20150423051331 dot GO12627 at bubble dot grove dot modra dot org>
On Thu, 2015-04-23 at 14:43 +0930, Alan Modra wrote:
> BTW, the following is what I used
>
> for z in `cat ppcgasopt`; do echo "$z"; gas/as-new $z -mregnames dcbt.s && objdump -sj.text a.out | grep -q 7d09 && echo " server"; done
>
> ppcgasopt is a selection of -m options taken from tc-ppc.c, and dcbt.s
> dcbt r9,r6,8
>
Ok, how about this attempt. I added a new alternative that only accepts
the two operand form of the instruction. That way, if you try and use the
3 operand version on one of the older cpus, you'll get an assembler error.
We then have the 3 operand accepting server and embedded ordering, with
just those cpus that accept them (I dug thru pdfs for this info).
I then created 3 test cases, "dcbt r9,r6", "dcbt r9,r6,0" and "dcbt 0,r9,r6".
and used your little script to run it on the 3 test cases. With the CT
field being zero, they should all disassemble to just "dcbt r9,r6" if
they were assembled correctly (ie, accepted the correct insn alternative).
All of the -m* options accepted the two operand form, which was expected.
For the other server and embedded test cases, I saw the following results:
Changes on accepting of 3 operand server ordering:
-m476 -server
-ma2 -server
-me5500 -server
-me6500 -server
...these are all fixes, since they shouldn't accept the server ordering.
Changes on accepting of 3 operand embedded ordering:
-m476 +embedded
-ma2 +embedded
-me5500 +embedded
-me6500 +embedded
...these are all fixes too, since they should accept the embedded ordering.
-m601 -embedded
-m603 -embedded
-m604 -embedded
-m403 -embedded
-m405 -embedded
-m440 -embedded
-m464 -embedded
-m7400 -embedded
-m7410 -embedded
-m7450 -embedded
-m7455 -embedded
-m750cl -embedded
-mppc64 -embedded
-m620 -embedded
-mbooke -embedded
-many -embedded
-mppc -embedded
-mppc32 -embedded
-me300 -embedded
-mspe -embedded
-mtitan -embedded
-mppc64bridge -embedded
I think these are all ok, since all of these real cpu options are for "old"
cpus and they only use the two operand form. I think the only result that
stands out is the -many option now only accepting the 2 operand form of dcbt.
It used to use the embedded alternative, which I don't was correct, but I had
assumed maybe it should now select the server version, since it was first
in the list of alternatives. It doesn't though, because ppc_set_cpu will
implicitly add PPC_OPCODE_PPC to ppc_cpu if all you pass in is -many.
That's probably not a big deal, because who really calls the assembler with
only -many and no other -m<CPU> option? I also left -mspe alone, since it
is just an optional instruction category and it should be used along with a
normal -m<CPU> option, but if you want me to add it to the list of cpus
in DCBT_EO define, I can do that.
The passed build and regtesting with no errors, ok for mainline now?
Peter
opcodes/
* ppc-opc.c (DCBT_EO): New define.
(powerpc_opcodes) <lbarx>: Enable for POWER8 and later.
<lharx>: Likewise.
<stbcx.>: Likewise.
<sthcx.>: Likewise.
<waitrsv>: Do not enable for POWER7 and later.
<waitimpl>: Likewise.
<dcbt>: Default to the two operand form of the instruction for all
"old" cpus. For "new" cpus, use the operand ordering that matches
whether the cpu is server or embedded.
<dcbtst>: Likewise.
gas/testsuite/
* gas/ppc/a2.s: Fixup test case due to dcbt/dcbtst embedded operand
ordering change.
* gas/ppc/a2.d: Likewise.
* gas/ppc/476.d: Likewise.
* gas/ppc/booke.s: Remove invalid 3 operand dcbt tests.
* gas/ppc/booke.d: Likewise.
* gas/ppc/power7.s: Remove lbarx, lharx, stbcx., sthcx., waitrsv
and waitimpl tests.
* gas/ppc/power7.d: Likewise.
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 060223f..2762e65 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -2756,6 +2756,12 @@ extract_vleil (unsigned long insn,
#define E6500 PPC_OPCODE_E6500
#define PPCVLE PPC_OPCODE_VLE
#define PPCHTM PPC_OPCODE_HTM
+/* The list of embedded processors that use the embedded operand ordering
+ for the 3 operand dcbt and dcbtst instructions. */
+#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
+ | PPC_OPCODE_A2 | PPC_OPCODE_VLE)
+
+
/* The opcode table.
@@ -4463,7 +4469,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {RA, VS}},
{"eratilx", X(31,51), X_MASK, PPCA2, PPCNONE, {ERAT_T, RA, RB}},
-{"lbarx", X(31,52), XEH_MASK, POWER7|PPCVLE, PPCNONE, {RT, RA0, RB, EH}},
+{"lbarx", X(31,52), XEH_MASK, POWER8|PPCVLE, PPCNONE, {RT, RA0, RB, EH}},
{"ldux", X(31,53), X_MASK, PPC64|PPCVLE, PPCNONE, {RT, RAL, RB}},
@@ -4478,8 +4484,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"andc", XRC(31,60,0), X_MASK, COM|PPCVLE, PPCNONE, {RA, RS, RB}},
{"andc.", XRC(31,60,1), X_MASK, COM|PPCVLE, PPCNONE, {RA, RS, RB}},
-{"waitrsv", X(31,62)|(1<<21), 0xffffffff, POWER7|E500MC|PPCA2, PPCNONE, {0}},
-{"waitimpl", X(31,62)|(2<<21), 0xffffffff, POWER7|E500MC|PPCA2, PPCNONE, {0}},
+{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, PPCNONE, {0}},
+{"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, PPCNONE, {0}},
{"wait", X(31,62), XWC_MASK, POWER7|E500MC|PPCA2|PPCVLE, PPCNONE, {WC}},
{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2|PPCVLE, PPCNONE, {RA0, RB}},
@@ -4543,7 +4549,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {RA, VS}},
{"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, PPCNONE, {RA, XS6}},
-{"lharx", X(31,116), XEH_MASK, POWER7|PPCVLE, PPCNONE, {RT, RA0, RB, EH}},
+{"lharx", X(31,116), XEH_MASK, POWER8|PPCVLE, PPCNONE, {RT, RA0, RB, EH}},
{"clf", X(31,118), XTO_MASK, POWER, PPCNONE, {RA, RB}},
@@ -4711,9 +4717,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, PPCNONE, {XT6, RA}},
{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, PPCNONE, {RA0, RB}},
-{"dcbtst", X(31,246), X_MASK, POWER4, PPCNONE, {RA0, RB, CT}},
-{"dcbtst", X(31,246), X_MASK, PPC|PPCVLE, POWER4, {CT, RA0, RB}},
-
+{"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
+{"dcbtst", X(31,246), X_MASK, DCBT_EO, PPCNONE, {CT, RA0, RB}},
+{"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
+
{"stbux", X(31,247), X_MASK, COM|PPCVLE, PPCNONE, {RS, RAS, RB}},
{"slliq", XRC(31,248,0), X_MASK, M601, PPCNONE, {RA, RS, SH}},
@@ -4753,9 +4760,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"lscbx.", XRC(31,277,1), X_MASK, M601, PPCNONE, {RT, RA, RB}},
{"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, PPCNONE, {RA0, RB}},
-{"dcbt", X(31,278), X_MASK, POWER4, PPCNONE, {RA0, RB, CT}},
-{"dcbt", X(31,278), X_MASK, PPC|PPCVLE, POWER4, {CT, RA0, RB}},
-
+{"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
+{"dcbt", X(31,278), X_MASK, DCBT_EO, PPCNONE, {CT, RA0, RB}},
+{"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
+
{"lhzx", X(31,279), X_MASK, COM|PPCVLE, PPCNONE, {RT, RA0, RB}},
{"cdtbcd", X(31,282), XRB_MASK, POWER6, PPCNONE, {RA, RS}},
@@ -5531,7 +5539,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, PPCNONE, {0}},
{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, PPCNONE, {HTM_A}},
-{"stbcx.", XRC(31,694,1), X_MASK, POWER7, PPCNONE, {RS, RA0, RB}},
+{"stbcx.", XRC(31,694,1), X_MASK, POWER8, PPCNONE, {RS, RA0, RB}},
{"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
@@ -5561,7 +5569,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"stswi", X(31,725), X_MASK, PPCCOM|PPCVLE, E500|E500MC, {RS, RA0, NB}},
{"stsi", X(31,725), X_MASK, PWRCOM, PPCNONE, {RS, RA0, NB}},
-{"sthcx.", XRC(31,726,1), X_MASK, POWER7, PPCNONE, {RS, RA0, RB}},
+{"sthcx.", XRC(31,726,1), X_MASK, POWER8, PPCNONE, {RS, RA0, RB}},
{"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
diff --git a/gas/testsuite/gas/ppc/476.d b/gas/testsuite/gas/ppc/476.d
index e59e2e9..253323c 100644
--- a/gas/testsuite/gas/ppc/476.d
+++ b/gas/testsuite/gas/ppc/476.d
@@ -90,13 +90,13 @@ Disassembly of section \.text:
140: (7c 06 3b ac|ac 3b 06 7c) dcbi r6,r7
144: (7c 85 33 0c|0c 33 85 7c) dcblc 4,r5,r6
148: (7c 06 38 6c|6c 38 06 7c) dcbst r6,r7
- 14c: (7c c0 2a 2c|2c 2a c0 7c) dcbt 0,r5,6
+ 14c: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
150: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
- 154: (7c c8 2a 2c|2c 2a c8 7c) dcbt r8,r5,6
+ 154: (7d 05 32 2c|2c 32 05 7d) dcbt 8,r5,r6
158: (7c e8 49 4c|4c 49 e8 7c) dcbtls 7,r8,r9
- 15c: (7c e0 31 ec|ec 31 e0 7c) dcbtst 0,r6,7
+ 15c: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7
160: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7
- 164: (7c e9 31 ec|ec 31 e9 7c) dcbtst r9,r6,7
+ 164: (7d 26 39 ec|ec 39 26 7d) dcbtst 9,r6,r7
168: (7d 4b 61 0c|0c 61 4b 7d) dcbtstls 10,r11,r12
16c: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2
170: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6
diff --git a/gas/testsuite/gas/ppc/a2.d b/gas/testsuite/gas/ppc/a2.d
index a743402..700c665 100644
--- a/gas/testsuite/gas/ppc/a2.d
+++ b/gas/testsuite/gas/ppc/a2.d
@@ -117,12 +117,12 @@ Disassembly of section \.text:
164: (7c 0a 58 6c|6c 58 0a 7c) dcbst r10,r11
168: (7c 0a 58 7e|7e 58 0a 7c) dcbstep r10,r11
16c: (7c 0a 5a 2c|2c 5a 0a 7c) dcbt r10,r11
- 170: (7c 2a 5a 2c|2c 5a 2a 7c) dcbt r10,r11,1
+ 170: (7c 2a 5a 2c|2c 5a 2a 7c) dcbt 1,r10,r11
174: (7d 4b 62 7e|7e 62 4b 7d) dcbtep r10,r11,r12
178: (7c 0a 59 4c|4c 59 0a 7c) dcbtls r10,r11
17c: (7c 2a 59 4c|4c 59 2a 7c) dcbtls 1,r10,r11
180: (7c 0a 59 ec|ec 59 0a 7c) dcbtst r10,r11
- 184: (7c 2a 59 ec|ec 59 2a 7c) dcbtst r10,r11,1
+ 184: (7c 2a 59 ec|ec 59 2a 7c) dcbtst 1,r10,r11
188: (7d 4b 61 fe|fe 61 4b 7d) dcbtstep r10,r11,r12
18c: (7c 0a 59 0c|0c 59 0a 7c) dcbtstls r10,r11
190: (7c 2a 59 0c|0c 59 2a 7c) dcbtstls 1,r10,r11
diff --git a/gas/testsuite/gas/ppc/a2.s b/gas/testsuite/gas/ppc/a2.s
index bcab185..7d0ddc7 100644
--- a/gas/testsuite/gas/ppc/a2.s
+++ b/gas/testsuite/gas/ppc/a2.s
@@ -91,13 +91,13 @@ start:
dcblc 1,10,11
dcbst 10,11
dcbstep 10,11
- dcbt 10,11,0
- dcbt 10,11,1
+ dcbt 0,10,11
+ dcbt 1,10,11
dcbtep 10,11,12
dcbtls 0,10,11
dcbtls 1,10,11
- dcbtst 10,11,0
- dcbtst 10,11,1
+ dcbtst 0,10,11
+ dcbtst 1,10,11
dcbtstep 10,11,12
dcbtstls 0,10,11
dcbtstls 1,10,11
diff --git a/gas/testsuite/gas/ppc/booke.d b/gas/testsuite/gas/ppc/booke.d
index c427141..26bbdce 100644
--- a/gas/testsuite/gas/ppc/booke.d
+++ b/gas/testsuite/gas/ppc/booke.d
@@ -39,5 +39,3 @@ Disassembly of section \.text:
6c: (7c 17 43 a6|a6 43 17 7c) mtsprg 7,r0
70: (7c 17 43 a6|a6 43 17 7c) mtsprg 7,r0
74: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
- 78: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
- 7c: (7d 05 32 2c|2c 32 05 7d) dcbt 8,r5,r6
diff --git a/gas/testsuite/gas/ppc/booke.s b/gas/testsuite/gas/ppc/booke.s
index 3947c61..7c8b1ff 100644
--- a/gas/testsuite/gas/ppc/booke.s
+++ b/gas/testsuite/gas/ppc/booke.s
@@ -38,5 +38,3 @@ branch_target_2:
mtsprg7 0
dcbt 5,6
- dcbt 0,5,6
- dcbt 8,5,6
diff --git a/gas/testsuite/gas/ppc/power7.d b/gas/testsuite/gas/ppc/power7.d
index 602da4b..c4f2da3 100644
--- a/gas/testsuite/gas/ppc/power7.d
+++ b/gas/testsuite/gas/ppc/power7.d
@@ -7,118 +7,106 @@
Disassembly of section \.text:
0+00 <power7>:
- 0: (7c 64 2e 98|98 2e 64 7c) lxvd2x vs3,r4,r5
- 4: (7d 64 2e 99|99 2e 64 7d) lxvd2x vs43,r4,r5
- 8: (7c 64 2f 98|98 2f 64 7c) stxvd2x vs3,r4,r5
- c: (7d 64 2f 99|99 2f 64 7d) stxvd2x vs43,r4,r5
- 10: (f0 64 28 50|50 28 64 f0) xxmrghd vs3,vs4,vs5
- 14: (f1 6c 68 57|57 68 6c f1) xxmrghd vs43,vs44,vs45
- 18: (f0 64 2b 50|50 2b 64 f0) xxmrgld vs3,vs4,vs5
- 1c: (f1 6c 6b 57|57 6b 6c f1) xxmrgld vs43,vs44,vs45
- 20: (f0 64 28 50|50 28 64 f0) xxmrghd vs3,vs4,vs5
- 24: (f1 6c 68 57|57 68 6c f1) xxmrghd vs43,vs44,vs45
- 28: (f0 64 2b 50|50 2b 64 f0) xxmrgld vs3,vs4,vs5
- 2c: (f1 6c 6b 57|57 6b 6c f1) xxmrgld vs43,vs44,vs45
- 30: (f0 64 29 50|50 29 64 f0) xxpermdi vs3,vs4,vs5,1
- 34: (f1 6c 69 57|57 69 6c f1) xxpermdi vs43,vs44,vs45,1
- 38: (f0 64 2a 50|50 2a 64 f0) xxpermdi vs3,vs4,vs5,2
- 3c: (f1 6c 6a 57|57 6a 6c f1) xxpermdi vs43,vs44,vs45,2
- 40: (f0 64 27 80|80 27 64 f0) xvmovdp vs3,vs4
- 44: (f1 6c 67 87|87 67 6c f1) xvmovdp vs43,vs44
- 48: (f0 64 27 80|80 27 64 f0) xvmovdp vs3,vs4
- 4c: (f1 6c 67 87|87 67 6c f1) xvmovdp vs43,vs44
- 50: (f0 64 2f 80|80 2f 64 f0) xvcpsgndp vs3,vs4,vs5
- 54: (f1 6c 6f 87|87 6f 6c f1) xvcpsgndp vs43,vs44,vs45
- 58: (7c 00 00 7c|7c 00 00 7c) wait
- 5c: (7c 00 00 7c|7c 00 00 7c) wait
- 60: (7c 20 00 7c|7c 00 20 7c) waitrsv
- 64: (7c 20 00 7c|7c 00 20 7c) waitrsv
- 68: (7c 40 00 7c|7c 00 40 7c) waitimpl
- 6c: (7c 40 00 7c|7c 00 40 7c) waitimpl
- 70: (4c 00 03 24|24 03 00 4c) doze
- 74: (4c 00 03 64|64 03 00 4c) nap
- 78: (4c 00 03 a4|a4 03 00 4c) sleep
- 7c: (4c 00 03 e4|e4 03 00 4c) rvwinkle
- 80: (7c 83 01 34|34 01 83 7c) prtyw r3,r4
- 84: (7d cd 01 74|74 01 cd 7d) prtyd r13,r14
- 88: (7d 5c 02 a6|a6 02 5c 7d) mfcfar r10
- 8c: (7d 7c 03 a6|a6 03 7c 7d) mtcfar r11
- 90: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5
- 94: (7d 4b 66 2a|2a 66 4b 7d) lwzcix r10,r11,r12
- 98: (ee 11 90 04|04 90 11 ee) dadd f16,f17,f18
- 9c: (fe 96 c0 04|04 c0 96 fe) daddq f20,f22,f24
- a0: (7c 60 06 6c|6c 06 60 7c) dss 3
- a4: (7e 00 06 6c|6c 06 00 7e) dssall
- a8: (7c 25 22 ac|ac 22 25 7c) dst r5,r4,1
- ac: (7e 08 3a ac|ac 3a 08 7e) dstt r8,r7,0
- b0: (7c 65 32 ec|ec 32 65 7c) dstst r5,r6,3
- b4: (7e 44 2a ec|ec 2a 44 7e) dststt r4,r5,2
- b8: (7d 4b 63 56|56 63 4b 7d) divwe r10,r11,r12
- bc: (7d 6c 6b 57|57 6b 6c 7d) divwe\. r11,r12,r13
- c0: (7d 8d 77 56|56 77 8d 7d) divweo r12,r13,r14
- c4: (7d ae 7f 57|57 7f ae 7d) divweo\. r13,r14,r15
- c8: (7d 4b 63 16|16 63 4b 7d) divweu r10,r11,r12
- cc: (7d 6c 6b 17|17 6b 6c 7d) divweu\. r11,r12,r13
- d0: (7d 8d 77 16|16 77 8d 7d) divweuo r12,r13,r14
- d4: (7d ae 7f 17|17 7f ae 7d) divweuo\. r13,r14,r15
- d8: (7e 27 d9 f8|f8 d9 27 7e) bpermd r7,r17,r27
- dc: (7e 8a 02 f4|f4 02 8a 7e) popcntw r10,r20
- e0: (7e 8a 03 f4|f4 03 8a 7e) popcntd r10,r20
- e4: (7e 95 b4 28|28 b4 95 7e) ldbrx r20,r21,r22
- e8: (7e 95 b5 28|28 b5 95 7e) stdbrx r20,r21,r22
- ec: (7d 40 56 ee|ee 56 40 7d) lfiwzx f10,0,r10
- f0: (7d 49 56 ee|ee 56 49 7d) lfiwzx f10,r9,r10
- f4: (ec 80 2e 9c|9c 2e 80 ec) fcfids f4,f5
- f8: (ec 80 2e 9d|9d 2e 80 ec) fcfids\. f4,f5
- fc: (ec 80 2f 9c|9c 2f 80 ec) fcfidus f4,f5
- 100: (ec 80 2f 9d|9d 2f 80 ec) fcfidus\. f4,f5
- 104: (fc 80 29 1c|1c 29 80 fc) fctiwu f4,f5
- 108: (fc 80 29 1d|1d 29 80 fc) fctiwu\. f4,f5
- 10c: (fc 80 29 1e|1e 29 80 fc) fctiwuz f4,f5
- 110: (fc 80 29 1f|1f 29 80 fc) fctiwuz\. f4,f5
- 114: (fc 80 2f 5c|5c 2f 80 fc) fctidu f4,f5
- 118: (fc 80 2f 5d|5d 2f 80 fc) fctidu\. f4,f5
- 11c: (fc 80 2f 5e|5e 2f 80 fc) fctiduz f4,f5
- 120: (fc 80 2f 5f|5f 2f 80 fc) fctiduz\. f4,f5
- 124: (fc 80 2f 9c|9c 2f 80 fc) fcfidu f4,f5
- 128: (fc 80 2f 9d|9d 2f 80 fc) fcfidu\. f4,f5
- 12c: (fc 0a 59 00|00 59 0a fc) ftdiv cr0,f10,f11
- 130: (ff 8a 59 00|00 59 8a ff) ftdiv cr7,f10,f11
- 134: (fc 00 51 40|40 51 00 fc) ftsqrt cr0,f10
- 138: (ff 80 51 40|40 51 80 ff) ftsqrt cr7,f10
- 13c: (7e 08 4a 2c|2c 4a 08 7e) dcbtt r8,r9
- 140: (7e 08 49 ec|ec 49 08 7e) dcbtstt r8,r9
- 144: (ed 40 66 44|44 66 40 ed) dcffix f10,f12
- 148: (ee 80 b6 45|45 b6 80 ee) dcffix\. f20,f22
- 14c: (7d 4b 60 68|68 60 4b 7d) lbarx r10,r11,r12
- 150: (7d 4b 60 68|68 60 4b 7d) lbarx r10,r11,r12
- 154: (7d 4b 60 69|69 60 4b 7d) lbarx r10,r11,r12,1
- 158: (7e 95 b0 e8|e8 b0 95 7e) lharx r20,r21,r22
- 15c: (7e 95 b0 e8|e8 b0 95 7e) lharx r20,r21,r22
- 160: (7e 95 b0 e9|e9 b0 95 7e) lharx r20,r21,r22,1
- 164: (7d 4b 65 6d|6d 65 4b 7d) stbcx\. r10,r11,r12
- 168: (7d 4b 65 ad|ad 65 4b 7d) sthcx\. r10,r11,r12
- 16c: (fd c0 78 30|30 78 c0 fd) fre f14,f15
- 170: (fd c0 78 31|31 78 c0 fd) fre\. f14,f15
- 174: (ed c0 78 30|30 78 c0 ed) fres f14,f15
- 178: (ed c0 78 31|31 78 c0 ed) fres\. f14,f15
- 17c: (fd c0 78 34|34 78 c0 fd) frsqrte f14,f15
- 180: (fd c0 78 35|35 78 c0 fd) frsqrte\. f14,f15
- 184: (ed c0 78 34|34 78 c0 ed) frsqrtes f14,f15
- 188: (ed c0 78 35|35 78 c0 ed) frsqrtes\. f14,f15
- 18c: (7c 43 27 1e|1e 27 43 7c) isel r2,r3,r4,28
- 190: (60 42 00 00|00 00 42 60) ori r2,r2,0
- 194: (60 00 00 00|00 00 00 60) nop
- 198: (60 00 00 00|00 00 00 60) nop
- 19c: (60 42 00 00|00 00 42 60) ori r2,r2,0
- 1a0: (7f 7b db 78|78 db 7b 7f) yield
- 1a4: (7f 7b db 78|78 db 7b 7f) yield
- 1a8: (7f bd eb 78|78 eb bd 7f) mdoio
- 1ac: (7f bd eb 78|78 eb bd 7f) mdoio
- 1b0: (7f de f3 78|78 f3 de 7f) mdoom
- 1b4: (7f de f3 78|78 f3 de 7f) mdoom
- 1b8: (7d 40 e2 a6|a6 e2 40 7d) mfppr r10
- 1bc: (7d 62 e2 a6|a6 e2 62 7d) mfppr32 r11
- 1c0: (7d 80 e3 a6|a6 e3 80 7d) mtppr r12
- 1c4: (7d a2 e3 a6|a6 e3 a2 7d) mtppr32 r13
+[ ]*[0-9a-f]+:[ ]*(7c 64 2e 98|98 2e 64 7c) lxvd2x vs3,r4,r5
+[ ]*[0-9a-f]+:[ ]*(7d 64 2e 99|99 2e 64 7d) lxvd2x vs43,r4,r5
+[ ]*[0-9a-f]+:[ ]*(7c 64 2f 98|98 2f 64 7c) stxvd2x vs3,r4,r5
+[ ]*[0-9a-f]+:[ ]*(7d 64 2f 99|99 2f 64 7d) stxvd2x vs43,r4,r5
+[ ]*[0-9a-f]+:[ ]*(f0 64 28 50|50 28 64 f0) xxmrghd vs3,vs4,vs5
+[ ]*[0-9a-f]+:[ ]*(f1 6c 68 57|57 68 6c f1) xxmrghd vs43,vs44,vs45
+[ ]*[0-9a-f]+:[ ]*(f0 64 2b 50|50 2b 64 f0) xxmrgld vs3,vs4,vs5
+[ ]*[0-9a-f]+:[ ]*(f1 6c 6b 57|57 6b 6c f1) xxmrgld vs43,vs44,vs45
+[ ]*[0-9a-f]+:[ ]*(f0 64 28 50|50 28 64 f0) xxmrghd vs3,vs4,vs5
+[ ]*[0-9a-f]+:[ ]*(f1 6c 68 57|57 68 6c f1) xxmrghd vs43,vs44,vs45
+[ ]*[0-9a-f]+:[ ]*(f0 64 2b 50|50 2b 64 f0) xxmrgld vs3,vs4,vs5
+[ ]*[0-9a-f]+:[ ]*(f1 6c 6b 57|57 6b 6c f1) xxmrgld vs43,vs44,vs45
+[ ]*[0-9a-f]+:[ ]*(f0 64 29 50|50 29 64 f0) xxpermdi vs3,vs4,vs5,1
+[ ]*[0-9a-f]+:[ ]*(f1 6c 69 57|57 69 6c f1) xxpermdi vs43,vs44,vs45,1
+[ ]*[0-9a-f]+:[ ]*(f0 64 2a 50|50 2a 64 f0) xxpermdi vs3,vs4,vs5,2
+[ ]*[0-9a-f]+:[ ]*(f1 6c 6a 57|57 6a 6c f1) xxpermdi vs43,vs44,vs45,2
+[ ]*[0-9a-f]+:[ ]*(f0 64 27 80|80 27 64 f0) xvmovdp vs3,vs4
+[ ]*[0-9a-f]+:[ ]*(f1 6c 67 87|87 67 6c f1) xvmovdp vs43,vs44
+[ ]*[0-9a-f]+:[ ]*(f0 64 27 80|80 27 64 f0) xvmovdp vs3,vs4
+[ ]*[0-9a-f]+:[ ]*(f1 6c 67 87|87 67 6c f1) xvmovdp vs43,vs44
+[ ]*[0-9a-f]+:[ ]*(f0 64 2f 80|80 2f 64 f0) xvcpsgndp vs3,vs4,vs5
+[ ]*[0-9a-f]+:[ ]*(f1 6c 6f 87|87 6f 6c f1) xvcpsgndp vs43,vs44,vs45
+[ ]*[0-9a-f]+:[ ]*(7c 00 00 7c|7c 00 00 7c) wait
+[ ]*[0-9a-f]+:[ ]*(7c 00 00 7c|7c 00 00 7c) wait
+[ ]*[0-9a-f]+:[ ]*(4c 00 03 24|24 03 00 4c) doze
+[ ]*[0-9a-f]+:[ ]*(4c 00 03 64|64 03 00 4c) nap
+[ ]*[0-9a-f]+:[ ]*(4c 00 03 a4|a4 03 00 4c) sleep
+[ ]*[0-9a-f]+:[ ]*(4c 00 03 e4|e4 03 00 4c) rvwinkle
+[ ]*[0-9a-f]+:[ ]*(7c 83 01 34|34 01 83 7c) prtyw r3,r4
+[ ]*[0-9a-f]+:[ ]*(7d cd 01 74|74 01 cd 7d) prtyd r13,r14
+[ ]*[0-9a-f]+:[ ]*(7d 5c 02 a6|a6 02 5c 7d) mfcfar r10
+[ ]*[0-9a-f]+:[ ]*(7d 7c 03 a6|a6 03 7c 7d) mtcfar r11
+[ ]*[0-9a-f]+:[ ]*(7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5
+[ ]*[0-9a-f]+:[ ]*(7d 4b 66 2a|2a 66 4b 7d) lwzcix r10,r11,r12
+[ ]*[0-9a-f]+:[ ]*(ee 11 90 04|04 90 11 ee) dadd f16,f17,f18
+[ ]*[0-9a-f]+:[ ]*(fe 96 c0 04|04 c0 96 fe) daddq f20,f22,f24
+[ ]*[0-9a-f]+:[ ]*(7c 60 06 6c|6c 06 60 7c) dss 3
+[ ]*[0-9a-f]+:[ ]*(7e 00 06 6c|6c 06 00 7e) dssall
+[ ]*[0-9a-f]+:[ ]*(7c 25 22 ac|ac 22 25 7c) dst r5,r4,1
+[ ]*[0-9a-f]+:[ ]*(7e 08 3a ac|ac 3a 08 7e) dstt r8,r7,0
+[ ]*[0-9a-f]+:[ ]*(7c 65 32 ec|ec 32 65 7c) dstst r5,r6,3
+[ ]*[0-9a-f]+:[ ]*(7e 44 2a ec|ec 2a 44 7e) dststt r4,r5,2
+[ ]*[0-9a-f]+:[ ]*(7d 4b 63 56|56 63 4b 7d) divwe r10,r11,r12
+[ ]*[0-9a-f]+:[ ]*(7d 6c 6b 57|57 6b 6c 7d) divwe\. r11,r12,r13
+[ ]*[0-9a-f]+:[ ]*(7d 8d 77 56|56 77 8d 7d) divweo r12,r13,r14
+[ ]*[0-9a-f]+:[ ]*(7d ae 7f 57|57 7f ae 7d) divweo\. r13,r14,r15
+[ ]*[0-9a-f]+:[ ]*(7d 4b 63 16|16 63 4b 7d) divweu r10,r11,r12
+[ ]*[0-9a-f]+:[ ]*(7d 6c 6b 17|17 6b 6c 7d) divweu\. r11,r12,r13
+[ ]*[0-9a-f]+:[ ]*(7d 8d 77 16|16 77 8d 7d) divweuo r12,r13,r14
+[ ]*[0-9a-f]+:[ ]*(7d ae 7f 17|17 7f ae 7d) divweuo\. r13,r14,r15
+[ ]*[0-9a-f]+:[ ]*(7e 27 d9 f8|f8 d9 27 7e) bpermd r7,r17,r27
+[ ]*[0-9a-f]+:[ ]*(7e 8a 02 f4|f4 02 8a 7e) popcntw r10,r20
+[ ]*[0-9a-f]+:[ ]*(7e 8a 03 f4|f4 03 8a 7e) popcntd r10,r20
+[ ]*[0-9a-f]+:[ ]*(7e 95 b4 28|28 b4 95 7e) ldbrx r20,r21,r22
+[ ]*[0-9a-f]+:[ ]*(7e 95 b5 28|28 b5 95 7e) stdbrx r20,r21,r22
+[ ]*[0-9a-f]+:[ ]*(7d 40 56 ee|ee 56 40 7d) lfiwzx f10,0,r10
+[ ]*[0-9a-f]+:[ ]*(7d 49 56 ee|ee 56 49 7d) lfiwzx f10,r9,r10
+[ ]*[0-9a-f]+:[ ]*(ec 80 2e 9c|9c 2e 80 ec) fcfids f4,f5
+[ ]*[0-9a-f]+:[ ]*(ec 80 2e 9d|9d 2e 80 ec) fcfids\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(ec 80 2f 9c|9c 2f 80 ec) fcfidus f4,f5
+[ ]*[0-9a-f]+:[ ]*(ec 80 2f 9d|9d 2f 80 ec) fcfidus\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 29 1c|1c 29 80 fc) fctiwu f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 29 1d|1d 29 80 fc) fctiwu\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 29 1e|1e 29 80 fc) fctiwuz f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 29 1f|1f 29 80 fc) fctiwuz\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 2f 5c|5c 2f 80 fc) fctidu f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 2f 5d|5d 2f 80 fc) fctidu\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 2f 5e|5e 2f 80 fc) fctiduz f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 2f 5f|5f 2f 80 fc) fctiduz\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 2f 9c|9c 2f 80 fc) fcfidu f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 80 2f 9d|9d 2f 80 fc) fcfidu\. f4,f5
+[ ]*[0-9a-f]+:[ ]*(fc 0a 59 00|00 59 0a fc) ftdiv cr0,f10,f11
+[ ]*[0-9a-f]+:[ ]*(ff 8a 59 00|00 59 8a ff) ftdiv cr7,f10,f11
+[ ]*[0-9a-f]+:[ ]*(fc 00 51 40|40 51 00 fc) ftsqrt cr0,f10
+[ ]*[0-9a-f]+:[ ]*(ff 80 51 40|40 51 80 ff) ftsqrt cr7,f10
+[ ]*[0-9a-f]+:[ ]*(7e 08 4a 2c|2c 4a 08 7e) dcbtt r8,r9
+[ ]*[0-9a-f]+:[ ]*(7e 08 49 ec|ec 49 08 7e) dcbtstt r8,r9
+[ ]*[0-9a-f]+:[ ]*(ed 40 66 44|44 66 40 ed) dcffix f10,f12
+[ ]*[0-9a-f]+:[ ]*(ee 80 b6 45|45 b6 80 ee) dcffix\. f20,f22
+[ ]*[0-9a-f]+:[ ]*(fd c0 78 30|30 78 c0 fd) fre f14,f15
+[ ]*[0-9a-f]+:[ ]*(fd c0 78 31|31 78 c0 fd) fre\. f14,f15
+[ ]*[0-9a-f]+:[ ]*(ed c0 78 30|30 78 c0 ed) fres f14,f15
+[ ]*[0-9a-f]+:[ ]*(ed c0 78 31|31 78 c0 ed) fres\. f14,f15
+[ ]*[0-9a-f]+:[ ]*(fd c0 78 34|34 78 c0 fd) frsqrte f14,f15
+[ ]*[0-9a-f]+:[ ]*(fd c0 78 35|35 78 c0 fd) frsqrte\. f14,f15
+[ ]*[0-9a-f]+:[ ]*(ed c0 78 34|34 78 c0 ed) frsqrtes f14,f15
+[ ]*[0-9a-f]+:[ ]*(ed c0 78 35|35 78 c0 ed) frsqrtes\. f14,f15
+[ ]*[0-9a-f]+:[ ]*(7c 43 27 1e|1e 27 43 7c) isel r2,r3,r4,28
+[ ]*[0-9a-f]+:[ ]*(60 42 00 00|00 00 42 60) ori r2,r2,0
+[ ]*[0-9a-f]+:[ ]*(60 00 00 00|00 00 00 60) nop
+[ ]*[0-9a-f]+:[ ]*(60 00 00 00|00 00 00 60) nop
+[ ]*[0-9a-f]+:[ ]*(60 42 00 00|00 00 42 60) ori r2,r2,0
+[ ]*[0-9a-f]+:[ ]*(7f 7b db 78|78 db 7b 7f) yield
+[ ]*[0-9a-f]+:[ ]*(7f 7b db 78|78 db 7b 7f) yield
+[ ]*[0-9a-f]+:[ ]*(7f bd eb 78|78 eb bd 7f) mdoio
+[ ]*[0-9a-f]+:[ ]*(7f bd eb 78|78 eb bd 7f) mdoio
+[ ]*[0-9a-f]+:[ ]*(7f de f3 78|78 f3 de 7f) mdoom
+[ ]*[0-9a-f]+:[ ]*(7f de f3 78|78 f3 de 7f) mdoom
+[ ]*[0-9a-f]+:[ ]*(7d 40 e2 a6|a6 e2 40 7d) mfppr r10
+[ ]*[0-9a-f]+:[ ]*(7d 62 e2 a6|a6 e2 62 7d) mfppr32 r11
+[ ]*[0-9a-f]+:[ ]*(7d 80 e3 a6|a6 e3 80 7d) mtppr r12
+[ ]*[0-9a-f]+:[ ]*(7d a2 e3 a6|a6 e3 a2 7d) mtppr32 r13
#pass
diff --git a/gas/testsuite/gas/ppc/power7.s b/gas/testsuite/gas/ppc/power7.s
index 46518d4..e76884e 100644
--- a/gas/testsuite/gas/ppc/power7.s
+++ b/gas/testsuite/gas/ppc/power7.s
@@ -24,10 +24,6 @@ power7:
xvcpsgndp 43,44,45
wait
wait 0
- waitrsv
- wait 1
- waitimpl
- wait 2
doze
nap
sleep
@@ -83,14 +79,6 @@ power7:
dcbtstt 8,9
dcffix 10,12
dcffix. 20,22
- lbarx 10,11,12
- lbarx 10,11,12,0
- lbarx 10,11,12,1
- lharx 20,21,22
- lharx 20,21,22,0
- lharx 20,21,22,1
- stbcx. 10,11,12
- sthcx. 10,11,12
fre 14,15
fre. 14,15
fres 14,15