Permalink
Browse files

cmd/asm, cmd/internal/obj/ppc64: Add ISA 2.05, 2.06 and 2.07 instruct…

…ions.

This change adds instructions from ISA 2.05, 2.06 and 2.07 that are frequently
used in assembly optimizations for ppc64.

It also fixes two problems:

  * the implementation of RLDICR[CC]/RLDICL[CC] did not consider all possible
  cases for the bit mask.
  * removed two non-existing instructions that were added by mistake in the VMX
  implementation (VORL/VANDL).

Change-Id: Iaef4e5c6a5240c2156c6c0f28ad3bcd8780e9830
Reviewed-on: https://go-review.googlesource.com/36230
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
  • Loading branch information...
1 parent 06637fb commit 85ecc51c4852c49b5e5bc4a52067210c58e266e0 @ceseo ceseo committed with laboger Feb 2, 2017
@@ -540,6 +540,14 @@ label1:
// }
// FCMPU F1, F2, CR0
+// FTDIV FRA, FRB, BF produces
+// ftdiv BF, FRA, FRB
+ FTDIV F1,F2,$7
+
+// FTSQRT FRB, BF produces
+// ftsqrt BF, FRB
+ FTSQRT F2,$7
+
//
// CMP
//
@@ -567,6 +575,10 @@ label1:
// }
CMP R1, $4, CR0 // CMP R1, CR0, $4
+// CMPB RS,RB,RA produces
+// cmpb RA,RS,RB
+ CMPB R2,R2,R1
+
//
// rotate and mask
//
@@ -673,6 +685,13 @@ label1:
DCBF (R1)
DCBF (R1+R2) // DCBF (R1)(R2*1)
+// Population count, X-form
+// <MNEMONIC> RS,RA produces
+// <mnemonic> RA,RS
+ POPCNTD R1,R2
+ POPCNTW R1,R2
+ POPCNTB R1,R2
+
// VMX instructions
// Described as:
@@ -703,14 +722,14 @@ label1:
// Vector AND, VX-form
// <MNEMONIC> VRA,VRB,VRT produces
// <mnemonic> VRT,VRA,VRB
- VANDL V10, V9, V8
+ VAND V10, V9, V8
VANDC V15, V14, V13
VNAND V19, V18, V17
// Vector OR, VX-form
// <MNEMONIC> VRA,VRB,VRT produces
// <mnemonic> VRT,VRA,VRB
- VORL V26, V25, V24
+ VOR V26, V25, V24
VORC V23, V22, V21
VNOR V20, V19, V18
VXOR V17, V16, V15
@@ -739,6 +758,14 @@ label1:
VADDEUQM V4, V3, V2, V1
VADDECUQ V4, V3, V2, V1
+// Vector polynomial multiply-sum, VX-form
+// <MNEMONIC> VRA,VRB,VRT produces
+// <mnemonic> VRT,VRA,VRB
+ VPMSUMB V2, V3, V1
+ VPMSUMH V2, V3, V1
+ VPMSUMW V2, V3, V1
+ VPMSUMD V2, V3, V1
+
// Vector SUB, VX-form
// <MNEMONIC> VRA,VRB,VRT produces
// <mnemonic> VRT,VRA,VRB
@@ -626,6 +626,9 @@ const (
ACNTLZDCC
ACMPW /* CMP with L=0 */
ACMPWU
+ ACMPB
+ AFTDIV
+ AFTSQRT
ADIVD
ADIVDCC
ADIVDE
@@ -704,6 +707,9 @@ const (
/* more 64-bit operations */
AHRFID
+ APOPCNTD
+ APOPCNTW
+ APOPCNTB
/* Vector */
ALV
@@ -721,11 +727,9 @@ const (
ASTVX
ASTVXL
AVAND
- AVANDL
AVANDC
AVNAND
AVOR
- AVORL
AVORC
AVNOR
AVXOR
@@ -770,6 +774,11 @@ const (
AVSUBE
AVSUBEUQM
AVSUBECUQ
+ AVPMSUM
+ AVPMSUMB
+ AVPMSUMH
+ AVPMSUMW
+ AVPMSUMD
AVR
AVRLB
AVRLH
@@ -871,9 +880,13 @@ const (
ASTXSIWX
AMFVSR
AMFVSRD
+ AMFFPRD
+ AMFVRD
AMFVSRWZ
AMTVSR
AMTVSRD
+ AMTFPRD
+ AMTVRD
AMTVSRWA
AMTVSRWZ
AXXLAND
@@ -248,6 +248,9 @@ var Anames = []string{
"CNTLZDCC",
"CMPW",
"CMPWU",
+ "CMPB",
+ "FTDIV",
+ "FTSQRT",
"DIVD",
"DIVDCC",
"DIVDE",
@@ -321,6 +324,9 @@ var Anames = []string{
"REMDUV",
"REMDUVCC",
"HRFID",
+ "POPCNTD",
+ "POPCNTW",
+ "POPCNTB",
"LV",
"LVEBX",
"LVEHX",
@@ -336,11 +342,9 @@ var Anames = []string{
"STVX",
"STVXL",
"VAND",
- "VANDL",
"VANDC",
"VNAND",
"VOR",
- "VORL",
"VORC",
"VNOR",
"VXOR",
@@ -385,6 +389,11 @@ var Anames = []string{
"VSUBE",
"VSUBEUQM",
"VSUBECUQ",
+ "VPMSUM",
+ "VPMSUMB",
+ "VPMSUMH",
+ "VPMSUMW",
+ "VPMSUMD",
"VR",
"VRLB",
"VRLH",
@@ -484,9 +493,13 @@ var Anames = []string{
"STXSIWX",
"MFVSR",
"MFVSRD",
+ "MFFPRD",
+ "MFVRD",
"MFVSRWZ",
"MTVSR",
"MTVSRD",
+ "MTFPRD",
+ "MTVRD",
"MTVSRWA",
"MTVSRWZ",
"XXLAND",
Oops, something went wrong.

0 comments on commit 85ecc51

Please sign in to comment.