< prev index next >
src/cpu/ppc/vm/assembler_ppc.inline.hpp
Print this page
*** 862,871 ****
--- 862,895 ----
inline void Assembler::stvx( VectorRegister d, Register s2) { emit_int32( STVX_OPCODE | vrt(d) | rb(s2)); }
inline void Assembler::stvxl( VectorRegister d, Register s2) { emit_int32( STVXL_OPCODE | vrt(d) | rb(s2)); }
inline void Assembler::lvsl( VectorRegister d, Register s2) { emit_int32( LVSL_OPCODE | vrt(d) | rb(s2)); }
inline void Assembler::lvsr( VectorRegister d, Register s2) { emit_int32( LVSR_OPCODE | vrt(d) | rb(s2)); }
+ inline void Assembler::load_perm(VectorRegister perm, Register addr) {
+ #if defined(VM_LITTLE_ENDIAN)
+ lvsr(perm, addr);
+ #else
+ lvsl(perm, addr);
+ #endif
+ }
+
+ inline void Assembler::vec_perm(VectorRegister first_dest, VectorRegister second, VectorRegister perm) {
+ #if defined(VM_LITTLE_ENDIAN)
+ vperm(first_dest, second, first_dest, perm);
+ #else
+ vperm(first_dest, first_dest, second, perm);
+ #endif
+ }
+
+ inline void Assembler::vec_perm(VectorRegister dest, VectorRegister first, VectorRegister second, VectorRegister perm) {
+ #if defined(VM_LITTLE_ENDIAN)
+ vperm(dest, second, first, perm);
+ #else
+ vperm(dest, first, second, perm);
+ #endif
+ }
+
inline void Assembler::load_const(Register d, void* x, Register tmp) {
load_const(d, (long)x, tmp);
}
// Load a 64 bit constant encoded by a `Label'. This works for bound
< prev index next >