src/cpu/mips/vm/mips_64.ad

changeset 9761
17884ee5d053
parent 9645
ac996ba07f9d
child 9808
a9451177555c
equal deleted inserted replaced
9760:8b305ff8f6b6 9761:17884ee5d053
815 // MIPS doesn't support AES intrinsics 815 // MIPS doesn't support AES intrinsics
816 const bool Matcher::pass_original_key_for_aes() { 816 const bool Matcher::pass_original_key_for_aes() {
817 return false; 817 return false;
818 } 818 }
819 819
820 int CallLeafNoFPDirectNode::compute_padding(int current_offset) const { 820 int CallStaticJavaDirectNode::compute_padding(int current_offset) const {
821 //lui
822 //ori
823 //dsll
824 //ori
825
826 //jalr
827 //nop
828
829 return round_to(current_offset, alignment_required()) - current_offset; 821 return round_to(current_offset, alignment_required()) - current_offset;
830 } 822 }
831 823
832 int CallLeafDirectNode::compute_padding(int current_offset) const { 824 int CallDynamicJavaDirectNode::compute_padding(int current_offset) const {
833 //lui
834 //ori
835 //dsll
836 //ori
837
838 //jalr
839 //nop
840
841 return round_to(current_offset, alignment_required()) - current_offset; 825 return round_to(current_offset, alignment_required()) - current_offset;
842 } 826 }
843 827
828 int CallLeafNoFPDirectNode::compute_padding(int current_offset) const {
829 return round_to(current_offset, alignment_required()) - current_offset;
830 }
831
832 int CallLeafDirectNode::compute_padding(int current_offset) const {
833 return round_to(current_offset, alignment_required()) - current_offset;
834 }
835
844 int CallRuntimeDirectNode::compute_padding(int current_offset) const { 836 int CallRuntimeDirectNode::compute_padding(int current_offset) const {
845 //lui
846 //ori
847 //dsll
848 //ori
849
850 //jalr
851 //nop
852
853 return round_to(current_offset, alignment_required()) - current_offset; 837 return round_to(current_offset, alignment_required()) - current_offset;
854 } 838 }
855 839
856 // If CPU can load and store mis-aligned doubles directly then no fixup is 840 // If CPU can load and store mis-aligned doubles directly then no fixup is
857 // needed. Else we split the double into 2 integer pieces and move it 841 // needed. Else we split the double into 2 integer pieces and move it
13380 ins_cost(300); 13364 ins_cost(300);
13381 format %{ "CALL,static #@CallStaticJavaDirect " %} 13365 format %{ "CALL,static #@CallStaticJavaDirect " %}
13382 ins_encode( Java_Static_Call( meth ) ); 13366 ins_encode( Java_Static_Call( meth ) );
13383 ins_pipe( pipe_slow ); 13367 ins_pipe( pipe_slow );
13384 ins_pc_relative(1); 13368 ins_pc_relative(1);
13369 ins_alignment(16);
13385 %} 13370 %}
13386 13371
13387 // Call Java Dynamic Instruction 13372 // Call Java Dynamic Instruction
13388 // Note: If this code changes, the corresponding ret_addr_offset() and 13373 // Note: If this code changes, the corresponding ret_addr_offset() and
13389 // compute_padding() functions will have to be adjusted. 13374 // compute_padding() functions will have to be adjusted.
13395 format %{"MOV IC_Klass, #Universe::non_oop_word()\n\t" 13380 format %{"MOV IC_Klass, #Universe::non_oop_word()\n\t"
13396 "CallDynamic @ CallDynamicJavaDirect" %} 13381 "CallDynamic @ CallDynamicJavaDirect" %}
13397 ins_encode( Java_Dynamic_Call( meth ) ); 13382 ins_encode( Java_Dynamic_Call( meth ) );
13398 ins_pipe( pipe_slow ); 13383 ins_pipe( pipe_slow );
13399 ins_pc_relative(1); 13384 ins_pc_relative(1);
13385 ins_alignment(16);
13400 %} 13386 %}
13401 13387
13402 instruct CallLeafNoFPDirect(method meth) %{ 13388 instruct CallLeafNoFPDirect(method meth) %{
13403 match(CallLeafNoFP); 13389 match(CallLeafNoFP);
13404 effect(USE meth); 13390 effect(USE meth);

mercurial