Blob Blame History Raw
--- binutils-2.25.1/gas/testsuite/gas/ppc/power7.s	2015-07-21 09:20:58.000000000 +0100
+++ binutils-2.25.1.new/gas/testsuite/gas/ppc/power7.s	2016-03-01 14:08:17.020136029 +0000
@@ -98,4 +98,4 @@ power7:
 	mfppr32	  11
 	mtppr	  12
 	mtppr32	  13
-	tlbie     10,11
+	tlbie     10
--- binutils-2.25.1/gas/testsuite/gas/ppc/power7.d	2015-07-21 09:20:58.000000000 +0100
+++ binutils-2.25.1.new/gas/testsuite/gas/ppc/power7.d	2016-03-01 14:08:17.020136029 +0000
@@ -107,5 +107,5 @@ Disassembly of section \.text:
 .*:	(7d 62 e2 a6|a6 e2 62 7d) 	mfppr32 r11
 .*:	(7d 80 e3 a6|a6 e3 80 7d) 	mtppr   r12
 .*:	(7d a2 e3 a6|a6 e3 a2 7d) 	mtppr32 r13
-.*:	(7d 60 52 64|64 52 60 7d) 	tlbie   r10,r11
+.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10
 #pass
--- binutils.orig/opcodes/ppc-opc.c	2017-01-17 09:44:23.341397357 +0000
+++ binutils-2.27/opcodes/ppc-opc.c	2017-01-17 09:45:24.000684653 +0000
@@ -5182,8 +5182,7 @@ const struct powerpc_opcode powerpc_opco
 {"mfbhrbe",	X(31,302),	X_MASK,	     POWER8,	0,		{RT, BHRBE}},
 
 {"tlbie",	X(31,306),	X_MASK|1<<20,POWER9,	TITAN,		{RB, RS, RIC, PRS, X_R}},
-{"tlbie",	X(31,306),	XRA_MASK,    POWER7,	POWER9|TITAN,	{RB, RS}},
-{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,    E500|POWER7|TITAN,	{RB, L}},
+{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,	POWER9|TITAN,  	{RB, L}},
 {"tlbi",	X(31,306),	XRT_MASK,    POWER,	0,		{RA0, RB}},
 
 {"mfvsrld",	X(31,307),	XX1RB_MASK,  PPCVSX3,	0,		{RA, XS6}},
--- binutils.orig/gas/testsuite/gas/ppc/e500-ill.s	2017-01-17 10:34:39.821866168 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/e500-ill.s	2017-01-17 10:56:56.766061777 +0000
@@ -7,4 +7,4 @@ start:
 	mfdcr   5, 234
 	mtdcr   432, 8
 	tlbia
-	tlbie  3
+
--- binutils.orig/gas/testsuite/gas/ppc/e500-ill.l	2017-01-17 10:34:39.821866168 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/e500-ill.l	2017-01-17 10:57:09.021915557 +0000
@@ -5,4 +5,3 @@
 .*: Error: unrecognized opcode: `mfdcr'
 .*: Error: unrecognized opcode: `mtdcr'
 .*: Error: unrecognized opcode: `tlbia'
-.*: Error: unrecognized opcode: `tlbie'
--- binutils.orig/gas/testsuite/gas/ppc/power6.s	2017-01-17 10:34:39.822866157 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/power6.s	2017-01-17 10:58:38.316849143 +0000
@@ -69,6 +69,5 @@ start:
 	slbia
 	slbia   0
 	slbia   7
-	tlbie   10
 	tlbie   10,0
 	tlbie   10,1
--- binutils.orig/gas/testsuite/gas/ppc/power6.d	2017-01-17 10:34:39.822866157 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/power6.d	2017-01-17 10:59:24.780294250 +0000
@@ -74,7 +74,6 @@ Disassembly of section \.text:
 .*:	(7c 00 03 e4|e4 03 00 7c) 	slbia   
 .*:	(7c 00 03 e4|e4 03 00 7c) 	slbia   
 .*:	(7c e0 03 e4|e4 03 e0 7c) 	slbia   7
-.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10
-.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10
+.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10,0
 .*:	(7c 20 52 64|64 52 20 7c) 	tlbie   r10,1
 #pass
--- binutils.orig/gas/testsuite/gas/ppc/power7.s	2017-01-17 10:34:39.823866144 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/power7.s	2017-01-17 11:00:19.835636746 +0000
@@ -98,4 +98,4 @@ power7:
 	mfppr32	  11
 	mtppr	  12
 	mtppr32	  13
-	tlbie     10
+
--- binutils.orig/gas/testsuite/gas/ppc/power7.d	2017-01-17 10:34:39.822866157 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/power7.d	2017-01-17 11:00:27.995539295 +0000
@@ -107,5 +107,4 @@ Disassembly of section \.text:
 .*:	(7d 62 e2 a6|a6 e2 62 7d) 	mfppr32 r11
 .*:	(7d 80 e3 a6|a6 e3 80 7d) 	mtppr   r12
 .*:	(7d a2 e3 a6|a6 e3 a2 7d) 	mtppr32 r13
-.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10
 #pass
diff -rup binutils.orig/gas/config/tc-ppc.c binutils-2.27/gas/config/tc-ppc.c
--- binutils.orig/gas/config/tc-ppc.c	2017-02-02 12:21:55.246930313 +0000
+++ binutils-2.27/gas/config/tc-ppc.c	2017-02-02 12:29:13.568862941 +0000
@@ -2672,7 +2672,7 @@ md_assemble (char *str)
 
       operand = &powerpc_operands[*opindex_ptr];
       if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0
-	  && !((operand->flags & PPC_OPERAND_OPTIONAL32) != 0 && ppc_obj64))
+	  || (operand->flags & PPC_OPERAND_OPTIONAL32))
 	{
 	  unsigned int opcount;
 	  unsigned int num_operands_expected;
@@ -2741,8 +2741,8 @@ md_assemble (char *str)
 
       /* If this is an optional operand, and we are skipping it, just
 	 insert a zero.  */
-      if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0
-	  && !((operand->flags & PPC_OPERAND_OPTIONAL32) != 0 && ppc_obj64)
+      if (((operand->flags & PPC_OPERAND_OPTIONAL) != 0
+	   || (operand->flags & PPC_OPERAND_OPTIONAL32) != 0)
 	  && skip_optional)
 	{
 	  long val = ppc_optional_operand_value (operand);
diff -rup binutils-2.27.orig/gas/testsuite/gas/ppc/power6.d binutils-2.27/gas/testsuite/gas/ppc/power6.d
--- binutils-2.27.orig/gas/testsuite/gas/ppc/power6.d	2017-02-14 10:17:21.352033787 +0000
+++ binutils-2.27/gas/testsuite/gas/ppc/power6.d	2017-02-14 11:54:36.643091777 +0000
@@ -74,6 +74,6 @@ Disassembly of section \.text:
 .*:	(7c 00 03 e4|e4 03 00 7c) 	slbia   
 .*:	(7c 00 03 e4|e4 03 00 7c) 	slbia   
 .*:	(7c e0 03 e4|e4 03 e0 7c) 	slbia   7
-.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10,0
+.*:	(7c 00 52 64|64 52 00 7c) 	tlbie   r10
 .*:	(7c 20 52 64|64 52 20 7c) 	tlbie   r10,1
 #pass
diff -rup binutils-2.27.orig/opcodes/ppc-opc.c binutils-2.27/opcodes/ppc-opc.c
--- binutils-2.27.orig/opcodes/ppc-opc.c	2017-02-14 10:17:22.281021961 +0000
+++ binutils-2.27/opcodes/ppc-opc.c	2017-02-14 11:58:50.035840144 +0000
@@ -576,9 +576,12 @@ const struct powerpc_operand powerpc_ope
 #define RD RS
   { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
 
+#define RSLL RS + 1
+  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL32 },
+
   /* The RS and RT fields of the DS form stq and DQ form lq instructions,
      which have special value restrictions.  */
-#define RSQ RS + 1
+#define RSQ RSLL + 1
 #define RTQ RSQ
   { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
 
@@ -5132,7 +5135,8 @@ const struct powerpc_opcode powerpc_opco
 {"mfbhrbe",	X(31,302),	X_MASK,	     POWER8,	0,		{RT, BHRBE}},
 
 {"tlbie",	X(31,306),	X_MASK|1<<20,POWER9,	TITAN,		{RB, RS, RIC, PRS, X_R}},
-{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,	POWER9|TITAN,  	{RB, L}},
+{"tlbie",	X(31,306),	XRA_MASK,    POWER7,	POWER9|TITAN,	{RB, RSLL}},
+{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,    E500|POWER7|TITAN,	{RB, LOPT}},
 {"tlbi",	X(31,306),	XRT_MASK,    POWER,	0,		{RA0, RB}},
 
 {"mfvsrld",	X(31,307),	XX1RB_MASK,  PPCVSX3,	0,		{RA, XS6}},