comparison src/cpu/x86/vm/x86_32.ad @ 17524:89152779163c

Merge with jdk8-b132
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 15 Oct 2014 11:59:32 +0200
parents 4ca6dc0799b6
children 52b4284cb496
comparison
equal deleted inserted replaced
17450:45b45f902bed 17524:89152779163c
3887 op_cost(10); 3887 op_cost(10);
3888 format %{ %} 3888 format %{ %}
3889 interface(CONST_INTER); 3889 interface(CONST_INTER);
3890 %} 3890 %}
3891 3891
3892 // Int Immediate non-negative
3893 operand immU31()
3894 %{
3895 predicate(n->get_int() >= 0);
3896 match(ConI);
3897
3898 op_cost(0);
3899 format %{ %}
3900 interface(CONST_INTER);
3901 %}
3902
3892 // Constant for long shifts 3903 // Constant for long shifts
3893 operand immI_32() %{ 3904 operand immI_32() %{
3894 predicate( n->get_int() == 32 ); 3905 predicate( n->get_int() == 32 );
3895 match(ConI); 3906 match(ConI);
3896 3907
6117 __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst)); 6128 __ xorl(HIGH_FROM_LOW(Rdst), HIGH_FROM_LOW(Rdst));
6118 %} 6129 %}
6119 ins_pipe(ialu_reg_mem); 6130 ins_pipe(ialu_reg_mem);
6120 %} 6131 %}
6121 6132
6122 // Load Integer with 32-bit mask into Long Register 6133 // Load Integer with 31-bit mask into Long Register
6123 instruct loadI2L_immI(eRegL dst, memory mem, immI mask, eFlagsReg cr) %{ 6134 instruct loadI2L_immU31(eRegL dst, memory mem, immU31 mask, eFlagsReg cr) %{
6124 match(Set dst (ConvI2L (AndI (LoadI mem) mask))); 6135 match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
6125 effect(KILL cr); 6136 effect(KILL cr);
6126 6137
6127 format %{ "MOV $dst.lo,$mem\t# int & 32-bit mask -> long\n\t" 6138 format %{ "MOV $dst.lo,$mem\t# int & 31-bit mask -> long\n\t"
6128 "XOR $dst.hi,$dst.hi\n\t" 6139 "XOR $dst.hi,$dst.hi\n\t"
6129 "AND $dst.lo,$mask" %} 6140 "AND $dst.lo,$mask" %}
6130 ins_encode %{ 6141 ins_encode %{
6131 Register Rdst = $dst$$Register; 6142 Register Rdst = $dst$$Register;
6132 __ movl(Rdst, $mem$$Address); 6143 __ movl(Rdst, $mem$$Address);