Power10 VSX PCV generate operations

Message ID 20200511113229.GD27573@bubble.grove.modra.org
State New
Headers show
Series
  • Power10 VSX PCV generate operations
Related show

Commit Message

opcodes/
	* ppc-opc.c (powerpc_opcodes): Add xxgenpcvbm, xxgenpcvhm,
	xxgenpcvwm, xxgenpcvdm.
gas/
	* testsuite/gas/ppc/genpcv.d,
	* testsuite/gas/ppc/genpcv.s: New test.
	* testsuite/gas/ppc/ppc.exp: Run it.


-- 
Alan Modra
Australia Development Lab, IBM

Patch

diff --git a/gas/testsuite/gas/ppc/genpcv.d b/gas/testsuite/gas/ppc/genpcv.d
new file mode 100644
index 0000000000..a1982e7f7f
--- /dev/null
+++ b/gas/testsuite/gas/ppc/genpcv.d
@@ -0,0 +1,14 @@ 
+#as: -mpower10
+#objdump: -dr -Mpower10
+#name: PCV generate operations
+
+.*
+
+
+Disassembly of section \.text:
+
+0+0 <_start>:
+.*:	(f2 03 7f 29|29 7f 03 f2) 	xxgenpcvbm vs48,v15,3
+.*:	(f0 02 3f 2b|2b 3f 02 f0) 	xxgenpcvhm vs32,v7,2
+.*:	(f2 01 1f 68|68 1f 01 f2) 	xxgenpcvwm vs16,v3,1
+.*:	(f1 00 0f 6a|6a 0f 00 f1) 	xxgenpcvdm vs8,v1,0
diff --git a/gas/testsuite/gas/ppc/genpcv.s b/gas/testsuite/gas/ppc/genpcv.s
new file mode 100644
index 0000000000..caada18b60
--- /dev/null
+++ b/gas/testsuite/gas/ppc/genpcv.s
@@ -0,0 +1,6 @@ 
+	.text
+_start:
+	xxgenpcvbm 48,15,3
+	xxgenpcvhm 32,7,2
+	xxgenpcvwm 16,3,1
+	xxgenpcvdm 8,1,0
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index c250acfd3e..6b4e11a942 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -139,3 +139,4 @@  run_dump_test "int128"
 run_dump_test "simd_perm"
 run_dump_test "outerprod"
 run_dump_test "maskmanip"
+run_dump_test "genpcv"
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 4e207b488f..804d013e5b 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -8038,11 +8038,15 @@  const struct powerpc_opcode powerpc_opcodes[] = {
 {"xvnmaddadp",	XX3(60,225),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
 {"xvcvdpuxds",	XX2(60,456),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
 {"xvcvspdp",	XX2(60,457),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
+{"xxgenpcvbm",	X(60,916),	XX1_MASK,    POWER10,	PPCVLE,		{XT6, VB, UIMM}},
+{"xxgenpcvhm",	X(60,917),	XX1_MASK,    POWER10,	PPCVLE,		{XT6, VB, UIMM}},
 {"xsiexpdp",	X(60,918),	XX1_MASK,    PPCVSX3,	PPCVLE,		{XT6, RA, RB}},
 {"xvmindp",	XX3(60,232),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
 {"xvnmaddmdp",	XX3(60,233),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
 {"xvcvdpsxds",	XX2(60,472),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
 {"xvabsdp",	XX2(60,473),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
+{"xxgenpcvwm",	X(60,948),	XX1_MASK,    POWER10,	PPCVLE,		{XT6, VB, UIMM}},
+{"xxgenpcvdm",	X(60,949),	XX1_MASK,    POWER10,	PPCVLE,		{XT6, VB, UIMM}},
 {"xvxexpdp",	XX2VA(60,475,0),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
 {"xvxsigdp",	XX2VA(60,475,1),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
 {"xxbrh",	XX2VA(60,475,7),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},