mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-16 05:15:22 +00:00
8287738: [PPC64] jdk/incubator/vector/*VectorTests failing
Reviewed-by: kvn, goetz
This commit is contained in:
parent
e5b56bafa9
commit
560e2927e3
@ -732,7 +732,10 @@ class Assembler : public AbstractAssembler {
|
||||
VSRAB_OPCODE = (4u << OPCODE_SHIFT | 772u ),
|
||||
VSRAW_OPCODE = (4u << OPCODE_SHIFT | 900u ),
|
||||
VSRAH_OPCODE = (4u << OPCODE_SHIFT | 836u ),
|
||||
VPOPCNTB_OPCODE= (4u << OPCODE_SHIFT | 1795u ),
|
||||
VPOPCNTH_OPCODE= (4u << OPCODE_SHIFT | 1859u ),
|
||||
VPOPCNTW_OPCODE= (4u << OPCODE_SHIFT | 1923u ),
|
||||
VPOPCNTD_OPCODE= (4u << OPCODE_SHIFT | 1987u ),
|
||||
|
||||
// Vector Floating-Point
|
||||
// not implemented yet
|
||||
@ -2342,7 +2345,10 @@ class Assembler : public AbstractAssembler {
|
||||
inline void vsrab( VectorRegister d, VectorRegister a, VectorRegister b);
|
||||
inline void vsraw( VectorRegister d, VectorRegister a, VectorRegister b);
|
||||
inline void vsrah( VectorRegister d, VectorRegister a, VectorRegister b);
|
||||
inline void vpopcntb( VectorRegister d, VectorRegister b);
|
||||
inline void vpopcnth( VectorRegister d, VectorRegister b);
|
||||
inline void vpopcntw( VectorRegister d, VectorRegister b);
|
||||
inline void vpopcntd( VectorRegister d, VectorRegister b);
|
||||
// Vector Floating-Point not implemented yet
|
||||
inline void mtvscr( VectorRegister b);
|
||||
inline void mfvscr( VectorRegister d);
|
||||
|
||||
@ -1020,7 +1020,10 @@ inline void Assembler::vsrh( VectorRegister d, VectorRegister a, VectorRegist
|
||||
inline void Assembler::vsrab( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSRAB_OPCODE | vrt(d) | vra(a) | vrb(b)); }
|
||||
inline void Assembler::vsraw( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSRAW_OPCODE | vrt(d) | vra(a) | vrb(b)); }
|
||||
inline void Assembler::vsrah( VectorRegister d, VectorRegister a, VectorRegister b) { emit_int32( VSRAH_OPCODE | vrt(d) | vra(a) | vrb(b)); }
|
||||
inline void Assembler::vpopcntb(VectorRegister d, VectorRegister b) { emit_int32( VPOPCNTB_OPCODE | vrt(d) | vrb(b)); }
|
||||
inline void Assembler::vpopcnth(VectorRegister d, VectorRegister b) { emit_int32( VPOPCNTH_OPCODE | vrt(d) | vrb(b)); }
|
||||
inline void Assembler::vpopcntw(VectorRegister d, VectorRegister b) { emit_int32( VPOPCNTW_OPCODE | vrt(d) | vrb(b)); }
|
||||
inline void Assembler::vpopcntd(VectorRegister d, VectorRegister b) { emit_int32( VPOPCNTD_OPCODE | vrt(d) | vrb(b)); }
|
||||
inline void Assembler::mtvscr( VectorRegister b) { emit_int32( MTVSCR_OPCODE | vrb(b)); }
|
||||
inline void Assembler::mfvscr( VectorRegister d) { emit_int32( MFVSCR_OPCODE | vrt(d)); }
|
||||
|
||||
|
||||
@ -14098,13 +14098,28 @@ instruct vsqrt2D_reg(vecX dst, vecX src) %{
|
||||
|
||||
// Vector Population Count Instructions
|
||||
|
||||
instruct vpopcnt4I_reg(vecX dst, vecX src) %{
|
||||
instruct vpopcnt_reg(vecX dst, vecX src) %{
|
||||
match(Set dst (PopCountVI src));
|
||||
predicate(n->as_Vector()->length() == 4);
|
||||
format %{ "VPOPCNTW $dst,$src\t// pop count packed4I" %}
|
||||
format %{ "VPOPCNT $dst,$src\t// pop count packed" %}
|
||||
size(4);
|
||||
ins_encode %{
|
||||
__ vpopcntw($dst$$VectorSRegister->to_vr(), $src$$VectorSRegister->to_vr());
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
switch (bt) {
|
||||
case T_BYTE:
|
||||
__ vpopcntb($dst$$VectorSRegister->to_vr(), $src$$VectorSRegister->to_vr());
|
||||
break;
|
||||
case T_SHORT:
|
||||
__ vpopcnth($dst$$VectorSRegister->to_vr(), $src$$VectorSRegister->to_vr());
|
||||
break;
|
||||
case T_INT:
|
||||
__ vpopcntw($dst$$VectorSRegister->to_vr(), $src$$VectorSRegister->to_vr());
|
||||
break;
|
||||
case T_LONG:
|
||||
__ vpopcntd($dst$$VectorSRegister->to_vr(), $src$$VectorSRegister->to_vr());
|
||||
break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_class_default);
|
||||
%}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user