< prev index next >

src/cpu/ppc/vm/assembler_ppc.inline.hpp

Print this page




 887 inline void Assembler::stvxl( VectorRegister d, Register s2) { emit_int32( STVXL_OPCODE  | vrt(d) | rb(s2)); }
 888 inline void Assembler::lvsl(  VectorRegister d, Register s2) { emit_int32( LVSL_OPCODE   | vrt(d) | rb(s2)); }
 889 inline void Assembler::lvsr(  VectorRegister d, Register s2) { emit_int32( LVSR_OPCODE   | vrt(d) | rb(s2)); }
 890 
 891 inline void Assembler::load_perm(VectorRegister perm, Register addr) {
 892 #if defined(VM_LITTLE_ENDIAN)
 893   lvsr(perm, addr);
 894 #else
 895   lvsl(perm, addr);
 896 #endif
 897 }
 898 
 899 inline void Assembler::vec_perm(VectorRegister first_dest, VectorRegister second, VectorRegister perm) {
 900 #if defined(VM_LITTLE_ENDIAN)
 901   vperm(first_dest, second, first_dest, perm);
 902 #else
 903   vperm(first_dest, first_dest, second, perm);
 904 #endif
 905 }
 906 








 907 inline void Assembler::load_const(Register d, void* x, Register tmp) {
 908    load_const(d, (long)x, tmp);
 909 }
 910 
 911 // Load a 64 bit constant encoded by a `Label'. This works for bound
 912 // labels as well as unbound ones. For unbound labels, the code will
 913 // be patched as soon as the label gets bound.
 914 inline void Assembler::load_const(Register d, Label& L, Register tmp) {
 915   load_const(d, target(L), tmp);
 916 }
 917 
 918 // Load a 64 bit constant encoded by an AddressLiteral. patchable.
 919 inline void Assembler::load_const(Register d, AddressLiteral& a, Register tmp) {
 920   assert(d != R0, "R0 not allowed");
 921   // First relocate (we don't change the offset in the RelocationHolder,
 922   // just pass a.rspec()), then delegate to load_const(Register, long).
 923   relocate(a.rspec());
 924   load_const(d, (long)a.value(), tmp);
 925 }
 926 


 887 inline void Assembler::stvxl( VectorRegister d, Register s2) { emit_int32( STVXL_OPCODE  | vrt(d) | rb(s2)); }
 888 inline void Assembler::lvsl(  VectorRegister d, Register s2) { emit_int32( LVSL_OPCODE   | vrt(d) | rb(s2)); }
 889 inline void Assembler::lvsr(  VectorRegister d, Register s2) { emit_int32( LVSR_OPCODE   | vrt(d) | rb(s2)); }
 890 
 891 inline void Assembler::load_perm(VectorRegister perm, Register addr) {
 892 #if defined(VM_LITTLE_ENDIAN)
 893   lvsr(perm, addr);
 894 #else
 895   lvsl(perm, addr);
 896 #endif
 897 }
 898 
 899 inline void Assembler::vec_perm(VectorRegister first_dest, VectorRegister second, VectorRegister perm) {
 900 #if defined(VM_LITTLE_ENDIAN)
 901   vperm(first_dest, second, first_dest, perm);
 902 #else
 903   vperm(first_dest, first_dest, second, perm);
 904 #endif
 905 }
 906 
 907 inline void Assembler::vec_perm(VectorRegister dest, VectorRegister first, VectorRegister second, VectorRegister perm) {
 908 #if defined(VM_LITTLE_ENDIAN)
 909   vperm(dest, second, first, perm);
 910 #else
 911   vperm(dest, first, second, perm);
 912 #endif
 913 }
 914 
 915 inline void Assembler::load_const(Register d, void* x, Register tmp) {
 916    load_const(d, (long)x, tmp);
 917 }
 918 
 919 // Load a 64 bit constant encoded by a `Label'. This works for bound
 920 // labels as well as unbound ones. For unbound labels, the code will
 921 // be patched as soon as the label gets bound.
 922 inline void Assembler::load_const(Register d, Label& L, Register tmp) {
 923   load_const(d, target(L), tmp);
 924 }
 925 
 926 // Load a 64 bit constant encoded by an AddressLiteral. patchable.
 927 inline void Assembler::load_const(Register d, AddressLiteral& a, Register tmp) {
 928   assert(d != R0, "R0 not allowed");
 929   // First relocate (we don't change the offset in the RelocationHolder,
 930   // just pass a.rspec()), then delegate to load_const(Register, long).
 931   relocate(a.rspec());
 932   load_const(d, (long)a.value(), tmp);
 933 }
 934 
< prev index next >