1.1 --- a/src/share/vm/c1/c1_LIR.hpp Mon May 14 09:36:00 2012 -0700 1.2 +++ b/src/share/vm/c1/c1_LIR.hpp Tue May 15 10:10:23 2012 +0200 1.3 @@ -916,6 +916,8 @@ 1.4 , lir_tan 1.5 , lir_log 1.6 , lir_log10 1.7 + , lir_exp 1.8 + , lir_pow 1.9 , lir_logic_and 1.10 , lir_logic_or 1.11 , lir_logic_xor 1.12 @@ -1560,7 +1562,11 @@ 1.13 LIR_Opr _opr1; 1.14 LIR_Opr _opr2; 1.15 BasicType _type; 1.16 - LIR_Opr _tmp; 1.17 + LIR_Opr _tmp1; 1.18 + LIR_Opr _tmp2; 1.19 + LIR_Opr _tmp3; 1.20 + LIR_Opr _tmp4; 1.21 + LIR_Opr _tmp5; 1.22 LIR_Condition _condition; 1.23 1.24 void verify() const; 1.25 @@ -1573,7 +1579,11 @@ 1.26 , _type(T_ILLEGAL) 1.27 , _condition(condition) 1.28 , _fpu_stack_size(0) 1.29 - , _tmp(LIR_OprFact::illegalOpr) { 1.30 + , _tmp1(LIR_OprFact::illegalOpr) 1.31 + , _tmp2(LIR_OprFact::illegalOpr) 1.32 + , _tmp3(LIR_OprFact::illegalOpr) 1.33 + , _tmp4(LIR_OprFact::illegalOpr) 1.34 + , _tmp5(LIR_OprFact::illegalOpr) { 1.35 assert(code == lir_cmp, "code check"); 1.36 } 1.37 1.38 @@ -1584,7 +1594,11 @@ 1.39 , _type(type) 1.40 , _condition(condition) 1.41 , _fpu_stack_size(0) 1.42 - , _tmp(LIR_OprFact::illegalOpr) { 1.43 + , _tmp1(LIR_OprFact::illegalOpr) 1.44 + , _tmp2(LIR_OprFact::illegalOpr) 1.45 + , _tmp3(LIR_OprFact::illegalOpr) 1.46 + , _tmp4(LIR_OprFact::illegalOpr) 1.47 + , _tmp5(LIR_OprFact::illegalOpr) { 1.48 assert(code == lir_cmove, "code check"); 1.49 assert(type != T_ILLEGAL, "cmove should have type"); 1.50 } 1.51 @@ -1597,25 +1611,38 @@ 1.52 , _type(type) 1.53 , _condition(lir_cond_unknown) 1.54 , _fpu_stack_size(0) 1.55 - , _tmp(LIR_OprFact::illegalOpr) { 1.56 + , _tmp1(LIR_OprFact::illegalOpr) 1.57 + , _tmp2(LIR_OprFact::illegalOpr) 1.58 + , _tmp3(LIR_OprFact::illegalOpr) 1.59 + , _tmp4(LIR_OprFact::illegalOpr) 1.60 + , _tmp5(LIR_OprFact::illegalOpr) { 1.61 assert(code != lir_cmp && is_in_range(code, begin_op2, end_op2), "code check"); 1.62 } 1.63 1.64 - LIR_Op2(LIR_Code code, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result, LIR_Opr tmp) 1.65 + LIR_Op2(LIR_Code code, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result, LIR_Opr tmp1, LIR_Opr tmp2 = LIR_OprFact::illegalOpr, 1.66 + LIR_Opr tmp3 = LIR_OprFact::illegalOpr, LIR_Opr tmp4 = LIR_OprFact::illegalOpr, LIR_Opr tmp5 = LIR_OprFact::illegalOpr) 1.67 : LIR_Op(code, result, NULL) 1.68 , _opr1(opr1) 1.69 , _opr2(opr2) 1.70 , _type(T_ILLEGAL) 1.71 , _condition(lir_cond_unknown) 1.72 , _fpu_stack_size(0) 1.73 - , _tmp(tmp) { 1.74 + , _tmp1(tmp1) 1.75 + , _tmp2(tmp2) 1.76 + , _tmp3(tmp3) 1.77 + , _tmp4(tmp4) 1.78 + , _tmp5(tmp5) { 1.79 assert(code != lir_cmp && is_in_range(code, begin_op2, end_op2), "code check"); 1.80 } 1.81 1.82 LIR_Opr in_opr1() const { return _opr1; } 1.83 LIR_Opr in_opr2() const { return _opr2; } 1.84 BasicType type() const { return _type; } 1.85 - LIR_Opr tmp_opr() const { return _tmp; } 1.86 + LIR_Opr tmp1_opr() const { return _tmp1; } 1.87 + LIR_Opr tmp2_opr() const { return _tmp2; } 1.88 + LIR_Opr tmp3_opr() const { return _tmp3; } 1.89 + LIR_Opr tmp4_opr() const { return _tmp4; } 1.90 + LIR_Opr tmp5_opr() const { return _tmp5; } 1.91 LIR_Condition condition() const { 1.92 assert(code() == lir_cmp || code() == lir_cmove, "only valid for cmp and cmove"); return _condition; 1.93 } 1.94 @@ -2025,6 +2052,8 @@ 1.95 void sin (LIR_Opr from, LIR_Opr to, LIR_Opr tmp1, LIR_Opr tmp2) { append(new LIR_Op2(lir_sin , from, tmp1, to, tmp2)); } 1.96 void cos (LIR_Opr from, LIR_Opr to, LIR_Opr tmp1, LIR_Opr tmp2) { append(new LIR_Op2(lir_cos , from, tmp1, to, tmp2)); } 1.97 void tan (LIR_Opr from, LIR_Opr to, LIR_Opr tmp1, LIR_Opr tmp2) { append(new LIR_Op2(lir_tan , from, tmp1, to, tmp2)); } 1.98 + void exp (LIR_Opr from, LIR_Opr to, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, LIR_Opr tmp4, LIR_Opr tmp5) { append(new LIR_Op2(lir_exp , from, tmp1, to, tmp2, tmp3, tmp4, tmp5)); } 1.99 + void pow (LIR_Opr arg1, LIR_Opr arg2, LIR_Opr res, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, LIR_Opr tmp4, LIR_Opr tmp5) { append(new LIR_Op2(lir_pow, arg1, arg2, res, tmp1, tmp2, tmp3, tmp4, tmp5)); } 1.100 1.101 void add (LIR_Opr left, LIR_Opr right, LIR_Opr res) { append(new LIR_Op2(lir_add, left, right, res)); } 1.102 void sub (LIR_Opr left, LIR_Opr right, LIR_Opr res, CodeEmitInfo* info = NULL) { append(new LIR_Op2(lir_sub, left, right, res, info)); }