src/cpu/ppc/vm/ppc.ad

Print this page
rev 7982 : 8074869: C2 code generator can replace -0.0f with +0.0f on Linux
Reviewed-by: kvn, simonis


4399   interface(CONST_INTER);
4400 %}
4401 
4402 // Unsigned Long Immediate: 16-bit
4403 operand uimmL16() %{
4404   predicate(Assembler::is_uimm(n->get_long(), 16));
4405   match(ConL);
4406   op_cost(0);
4407   format %{ %}
4408   interface(CONST_INTER);
4409 %}
4410 
4411 // Float Immediate
4412 operand immF() %{
4413   match(ConF);
4414   op_cost(40);
4415   format %{ %}
4416   interface(CONST_INTER);
4417 %}
4418 
4419 // constant 'float +0.0'.
4420 operand immF_0() %{
4421   predicate((n->getf() == 0) &&
4422             (fpclassify(n->getf()) == FP_ZERO) && (signbit(n->getf()) == 0));
4423   match(ConF);

4424   op_cost(0);
4425   format %{ %}
4426   interface(CONST_INTER);
4427 %}
4428 
4429 // Double Immediate
4430 operand immD() %{
4431   match(ConD);
4432   op_cost(40);
4433   format %{ %}
4434   interface(CONST_INTER);
4435 %}
4436 
4437 // Integer Register Operands
4438 // Integer Destination Register
4439 // See definition of reg_class bits32_reg_rw.
4440 operand iRegIdst() %{
4441   constraint(ALLOC_IN_RC(bits32_reg_rw));
4442   match(RegI);
4443   match(rscratch1RegI);




4399   interface(CONST_INTER);
4400 %}
4401 
4402 // Unsigned Long Immediate: 16-bit
4403 operand uimmL16() %{
4404   predicate(Assembler::is_uimm(n->get_long(), 16));
4405   match(ConL);
4406   op_cost(0);
4407   format %{ %}
4408   interface(CONST_INTER);
4409 %}
4410 
4411 // Float Immediate
4412 operand immF() %{
4413   match(ConF);
4414   op_cost(40);
4415   format %{ %}
4416   interface(CONST_INTER);
4417 %}
4418 
4419 // Float Immediate: +0.0f.
4420 operand immF_0() %{
4421   predicate(jint_cast(n->getf()) == 0);

4422   match(ConF);
4423 
4424   op_cost(0);
4425   format %{ %}
4426   interface(CONST_INTER);
4427 %}
4428 
4429 // Double Immediate
4430 operand immD() %{
4431   match(ConD);
4432   op_cost(40);
4433   format %{ %}
4434   interface(CONST_INTER);
4435 %}
4436 
4437 // Integer Register Operands
4438 // Integer Destination Register
4439 // See definition of reg_class bits32_reg_rw.
4440 operand iRegIdst() %{
4441   constraint(ALLOC_IN_RC(bits32_reg_rw));
4442   match(RegI);
4443   match(rscratch1RegI);