ppc: support minmax aliases
authorDmitry Selyutin <ghostmansd@gmail.com>
Sun, 28 May 2023 22:04:57 +0000 (01:04 +0300)
committerDmitry Selyutin <ghostmansd@gmail.com>
Tue, 14 Nov 2023 19:53:37 +0000 (22:53 +0300)
gas/testsuite/gas/ppc/minmax.d
gas/testsuite/gas/ppc/minmax.s
opcodes/ppc-opc.c

index 24146d2eea094b24332324617f1c470a217ecefc..90e3381cda06540196da4a8c151d7b45af52f18a 100644 (file)
@@ -6,11 +6,51 @@
 
 Disassembly of section \.text:
 0+ <\.text>:
-.*:\s+(4f e0 00 06|06 00 e0 4f)\s+minmax\s+r31,r0,r0,0
-.*:\s+(4c 1f 00 06|06 00 1f 4c)\s+minmax\s+r0,r31,r0,0
-.*:\s+(4c 00 f8 06|06 f8 00 4c)\s+minmax\s+r0,r0,r31,0
-.*:\s+(4c 00 07 06|06 07 00 4c)\s+minmax\s+r0,r0,r0,7
-.*:\s+(4f e0 00 07|07 00 e0 4f)\s+minmax.\s+r31,r0,r0,0
-.*:\s+(4c 1f 00 07|07 00 1f 4c)\s+minmax.\s+r0,r31,r0,0
-.*:\s+(4c 00 f8 07|07 f8 00 4c)\s+minmax.\s+r0,r0,r31,0
-.*:\s+(4c 00 07 07|07 07 00 4c)\s+minmax.\s+r0,r0,r0,7
+.*:\s+(4f e0 00 06|06 00 e0 4f)\s+minu\s+r31,r0,r0
+.*:\s+(4c 1f 00 06|06 00 1f 4c)\s+minu\s+r0,r31,r0
+.*:\s+(4c 00 f8 06|06 f8 00 4c)\s+minu\s+r0,r0,r31
+.*:\s+(4f e0 00 07|07 00 e0 4f)\s+minu.\s+r31,r0,r0
+.*:\s+(4c 1f 00 07|07 00 1f 4c)\s+minu.\s+r0,r31,r0
+.*:\s+(4c 00 f8 07|07 f8 00 4c)\s+minu.\s+r0,r0,r31
+.*:\s+(4f e0 01 06|06 01 e0 4f)\s+maxu\s+r31,r0,r0
+.*:\s+(4c 1f 01 06|06 01 1f 4c)\s+maxu\s+r0,r31,r0
+.*:\s+(4c 00 f9 06|06 f9 00 4c)\s+maxu\s+r0,r0,r31
+.*:\s+(4f e0 01 07|07 01 e0 4f)\s+maxu.\s+r31,r0,r0
+.*:\s+(4c 1f 01 07|07 01 1f 4c)\s+maxu.\s+r0,r31,r0
+.*:\s+(4c 00 f9 07|07 f9 00 4c)\s+maxu.\s+r0,r0,r31
+.*:\s+(4f e0 02 06|06 02 e0 4f)\s+mins\s+r31,r0,r0
+.*:\s+(4c 1f 02 06|06 02 1f 4c)\s+mins\s+r0,r31,r0
+.*:\s+(4c 00 fa 06|06 fa 00 4c)\s+mins\s+r0,r0,r31
+.*:\s+(4f e0 02 07|07 02 e0 4f)\s+mins.\s+r31,r0,r0
+.*:\s+(4c 1f 02 07|07 02 1f 4c)\s+mins.\s+r0,r31,r0
+.*:\s+(4c 00 fa 07|07 fa 00 4c)\s+mins.\s+r0,r0,r31
+.*:\s+(4f e0 03 06|06 03 e0 4f)\s+maxs\s+r31,r0,r0
+.*:\s+(4c 1f 03 06|06 03 1f 4c)\s+maxs\s+r0,r31,r0
+.*:\s+(4c 00 fb 06|06 fb 00 4c)\s+maxs\s+r0,r0,r31
+.*:\s+(4f e0 03 07|07 03 e0 4f)\s+maxs.\s+r31,r0,r0
+.*:\s+(4c 1f 03 07|07 03 1f 4c)\s+maxs.\s+r0,r31,r0
+.*:\s+(4c 00 fb 07|07 fb 00 4c)\s+maxs.\s+r0,r0,r31
+.*:\s+(4f e0 04 06|06 04 e0 4f)\s+minuw\s+r31,r0,r0
+.*:\s+(4c 1f 04 06|06 04 1f 4c)\s+minuw\s+r0,r31,r0
+.*:\s+(4c 00 fc 06|06 fc 00 4c)\s+minuw\s+r0,r0,r31
+.*:\s+(4f e0 04 07|07 04 e0 4f)\s+minuw.\s+r31,r0,r0
+.*:\s+(4c 1f 04 07|07 04 1f 4c)\s+minuw.\s+r0,r31,r0
+.*:\s+(4c 00 fc 07|07 fc 00 4c)\s+minuw.\s+r0,r0,r31
+.*:\s+(4f e0 05 06|06 05 e0 4f)\s+maxuw\s+r31,r0,r0
+.*:\s+(4c 1f 05 06|06 05 1f 4c)\s+maxuw\s+r0,r31,r0
+.*:\s+(4c 00 fd 06|06 fd 00 4c)\s+maxuw\s+r0,r0,r31
+.*:\s+(4f e0 05 07|07 05 e0 4f)\s+maxuw.\s+r31,r0,r0
+.*:\s+(4c 1f 05 07|07 05 1f 4c)\s+maxuw.\s+r0,r31,r0
+.*:\s+(4c 00 fd 07|07 fd 00 4c)\s+maxuw.\s+r0,r0,r31
+.*:\s+(4f e0 06 06|06 06 e0 4f)\s+minsw\s+r31,r0,r0
+.*:\s+(4c 1f 06 06|06 06 1f 4c)\s+minsw\s+r0,r31,r0
+.*:\s+(4c 00 fe 06|06 fe 00 4c)\s+minsw\s+r0,r0,r31
+.*:\s+(4f e0 06 07|07 06 e0 4f)\s+minsw.\s+r31,r0,r0
+.*:\s+(4c 1f 06 07|07 06 1f 4c)\s+minsw.\s+r0,r31,r0
+.*:\s+(4c 00 fe 07|07 fe 00 4c)\s+minsw.\s+r0,r0,r31
+.*:\s+(4f e0 07 06|06 07 e0 4f)\s+maxsw\s+r31,r0,r0
+.*:\s+(4c 1f 07 06|06 07 1f 4c)\s+maxsw\s+r0,r31,r0
+.*:\s+(4c 00 ff 06|06 ff 00 4c)\s+maxsw\s+r0,r0,r31
+.*:\s+(4f e0 07 07|07 07 e0 4f)\s+maxsw.\s+r31,r0,r0
+.*:\s+(4c 1f 07 07|07 07 1f 4c)\s+maxsw.\s+r0,r31,r0
+.*:\s+(4c 00 ff 07|07 ff 00 4c)\s+maxsw.\s+r0,r0,r31
index 211a317e3d4fe2299265d4974ab61e95e7b140ff..3ccc9a1f177121522de97ae3b84cd200390c28ec 100644 (file)
@@ -1,8 +1,56 @@
+# minu
 minmax 31,0,0,0
 minmax 0,31,0,0
 minmax 0,0,31,0
-minmax 0,0,0,7
 minmax. 31,0,0,0
 minmax. 0,31,0,0
 minmax. 0,0,31,0
-minmax. 0,0,0,7
+# maxu
+minmax 31,0,0,1
+minmax 0,31,0,1
+minmax 0,0,31,1
+minmax. 31,0,0,1
+minmax. 0,31,0,1
+minmax. 0,0,31,1
+# mins
+minmax 31,0,0,2
+minmax 0,31,0,2
+minmax 0,0,31,2
+minmax. 31,0,0,2
+minmax. 0,31,0,2
+minmax. 0,0,31,2
+# maxs
+minmax 31,0,0,3
+minmax 0,31,0,3
+minmax 0,0,31,3
+minmax. 31,0,0,3
+minmax. 0,31,0,3
+minmax. 0,0,31,3
+# minuw
+minmax 31,0,0,4
+minmax 0,31,0,4
+minmax 0,0,31,4
+minmax. 31,0,0,4
+minmax. 0,31,0,4
+minmax. 0,0,31,4
+# maxuw
+minmax 31,0,0,5
+minmax 0,31,0,5
+minmax 0,0,31,5
+minmax. 31,0,0,5
+minmax. 0,31,0,5
+minmax. 0,0,31,5
+# minsw
+minmax 31,0,0,6
+minmax 0,31,0,6
+minmax 0,0,31,6
+minmax. 31,0,0,6
+minmax. 0,31,0,6
+minmax. 0,0,31,6
+# maxsw
+minmax 31,0,0,7
+minmax 0,31,0,7
+minmax 0,0,31,7
+minmax. 31,0,0,7
+minmax. 0,31,0,7
+minmax. 0,0,31,7
index aa7fe549357149c890d5d68647c56b9a6a417fab..63d44ed56f2b9ce9a6e70c7b8fdc60038a9d5b38 100644 (file)
@@ -4977,6 +4977,14 @@ const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
    | (((uint64_t)(rc)) & 1))
 #define MM_MASK        MM (0x3f, 0x3f, 0x1)
 
+/* An MM form instruction with explicit . */
+#define MMXMMM(op, xop, mmm, rc)               \
+  (OP (op)                                     \
+   | ((((uint64_t)(mmm)) & 0x7) << 8)          \
+   | ((((uint64_t)(xop)) & 0x3f) << 1)         \
+   | (((uint64_t)(rc)) & 1))
+#define MMXMMM_MASK    MMXMMM (0x3f, 0x3f, 0x7, 0x1)
+
 /* The BO encodings used in extended conditional branch mnemonics.  */
 #define BODNZF (0x0)
 #define BODNZFP        (0x1)
@@ -6469,6 +6477,22 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"addpcis",  DX(19,2),         DX_MASK,     POWER9,    PPCVLE,         {RT, DXD}},
 {"subpcis",  DX(19,2),         DX_MASK,     POWER9,    PPCVLE|EXT,     {RT, NDXD}},
 
+{"minu",       MMXMMM(19,3,0,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"minu.",      MMXMMM(19,3,0,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxu",       MMXMMM(19,3,1,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxu.",      MMXMMM(19,3,1,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"mins",       MMXMMM(19,3,2,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"mins.",      MMXMMM(19,3,2,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxs",       MMXMMM(19,3,3,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxs.",      MMXMMM(19,3,3,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"minuw",      MMXMMM(19,3,4,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"minuw.",     MMXMMM(19,3,4,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxuw",      MMXMMM(19,3,5,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxuw.",     MMXMMM(19,3,5,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"minsw",      MMXMMM(19,3,6,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"minsw.",     MMXMMM(19,3,6,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxsw",      MMXMMM(19,3,7,0),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
+{"maxsw.",     MMXMMM(19,3,7,1),       MMXMMM_MASK,    SFFS,   PPCVLE, {RT, RA, RB}},
 {"minmax",     MM(19,3,0),             MM_MASK,        SFFS,   PPCVLE, {RT, RA, RB, MMM}},
 {"minmax.",    MM(19,3,1),             MM_MASK,        SFFS,   PPCVLE, {RT, RA, RB, MMM}},