8185975: PPC64: Fix vsldoi interface according to the ISA
Reviewed-by: mdoerr
Contributed-by: Gustavo Serra Scalet <gustavo.scalet@eldorado.org.br>
--- a/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp Thu Aug 10 13:57:57 2017 +0200
+++ b/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp Thu Aug 10 17:25:46 2017 +0200
@@ -2027,7 +2027,7 @@
inline void vperm( VectorRegister d, VectorRegister a, VectorRegister b, VectorRegister c);
inline void vsel( VectorRegister d, VectorRegister a, VectorRegister b, VectorRegister c);
inline void vsl( VectorRegister d, VectorRegister a, VectorRegister b);
- inline void vsldoi( VectorRegister d, VectorRegister a, VectorRegister b, int si4);
+ inline void vsldoi( VectorRegister d, VectorRegister a, VectorRegister b, int ui4);
inline void vslo( VectorRegister d, VectorRegister a, VectorRegister b);
inline void vsr( VectorRegister d, VectorRegister a, VectorRegister b);
inline void vsro( VectorRegister d, VectorRegister a, VectorRegister b);
--- a/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp Thu Aug 10 13:57:57 2017 +0200
+++ b/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp Thu Aug 10 17:25:46 2017 +0200
@@ -800,7 +800,7 @@
inline void Assembler::vperm( VectorRegister d, VectorRegister a, VectorRegister b, VectorRegister c){ emit_int32( VPERM_OPCODE | vrt(d) | vra(a) | vrb(b) | vrc(c)); }
inline void Assembler::vsel( VectorRegister d, VectorRegister a, VectorRegister b, VectorRegister c){ emit_int32( VSEL_OPCODE | vrt(d) | vra(a) | vrb(b) | vrc(c)); }
inline void Assembler::vsl( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSL_OPCODE | vrt(d) | vra(a) | vrb(b)); }
-inline void Assembler::vsldoi( VectorRegister d, VectorRegister a, VectorRegister b, int si4) { emit_int32( VSLDOI_OPCODE| vrt(d) | vra(a) | vrb(b) | vsldoi_shb(simm(si4,4))); }
+inline void Assembler::vsldoi( VectorRegister d, VectorRegister a, VectorRegister b, int ui4) { emit_int32( VSLDOI_OPCODE| vrt(d) | vra(a) | vrb(b) | vsldoi_shb(uimm(ui4,4))); }
inline void Assembler::vslo( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSLO_OPCODE | vrt(d) | vra(a) | vrb(b)); }
inline void Assembler::vsr( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSR_OPCODE | vrt(d) | vra(a) | vrb(b)); }
inline void Assembler::vsro( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSRO_OPCODE | vrt(d) | vra(a) | vrb(b)); }
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp Thu Aug 10 13:57:57 2017 +0200
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp Thu Aug 10 17:25:46 2017 +0200
@@ -4576,12 +4576,12 @@
vspltisw(VR0, -1);
vsldoi(mask_32bit, zeroes, VR0, 4);
- vsldoi(mask_64bit, zeroes, VR0, -8);
+ vsldoi(mask_64bit, zeroes, VR0, 8);
// Get the initial value into v8
vxor(VR8, VR8, VR8);
mtvrd(VR8, crc);
- vsldoi(VR8, zeroes, VR8, -8); // shift into bottom 32 bits
+ vsldoi(VR8, zeroes, VR8, 8); // shift into bottom 32 bits
li (rLoaded, 0);
@@ -4930,7 +4930,7 @@
addi(barretConstants, barretConstants, 16);
lvx(const2, barretConstants);
- vsldoi(VR1, VR0, VR0, -8);
+ vsldoi(VR1, VR0, VR0, 8);
vxor(VR0, VR0, VR1); // xor two 64 bit results together
// shift left one bit
--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp Thu Aug 10 13:57:57 2017 +0200
+++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp Thu Aug 10 17:25:46 2017 +0200
@@ -2729,7 +2729,7 @@
__ vspltisb (vTmp2, -16);
__ vrld (keyPerm, keyPerm, vTmp2);
__ vrld (keyPerm, keyPerm, vTmp2);
- __ vsldoi (keyPerm, keyPerm, keyPerm, -8);
+ __ vsldoi (keyPerm, keyPerm, keyPerm, 8);
// load the 1st round key to vKey1
__ li (keypos, 0);
@@ -2929,7 +2929,7 @@
__ vspltisb (vTmp2, -16);
__ vrld (keyPerm, keyPerm, vTmp2);
__ vrld (keyPerm, keyPerm, vTmp2);
- __ vsldoi (keyPerm, keyPerm, keyPerm, -8);
+ __ vsldoi (keyPerm, keyPerm, keyPerm, 8);
__ cmpwi (CCR0, keylen, 44);
__ beq (CCR0, L_do44);