10411 %} |
10411 %} |
10412 |
10412 |
10413 ins_pipe(lmac_reg_reg); |
10413 ins_pipe(lmac_reg_reg); |
10414 %} |
10414 %} |
10415 |
10415 |
|
10416 // Combine Integer Signed Multiply & Add/Sub/Neg Long |
|
10417 |
|
10418 instruct smaddL(iRegLNoSp dst, iRegIorL2I src1, iRegIorL2I src2, iRegLNoSp src3) %{ |
|
10419 match(Set dst (AddL src3 (MulL (ConvI2L src1) (ConvI2L src2)))); |
|
10420 |
|
10421 ins_cost(INSN_COST * 3); |
|
10422 format %{ "smaddl $dst, $src1, $src2, $src3" %} |
|
10423 |
|
10424 ins_encode %{ |
|
10425 __ smaddl(as_Register($dst$$reg), |
|
10426 as_Register($src1$$reg), |
|
10427 as_Register($src2$$reg), |
|
10428 as_Register($src3$$reg)); |
|
10429 %} |
|
10430 |
|
10431 ins_pipe(imac_reg_reg); |
|
10432 %} |
|
10433 |
|
10434 instruct smsubL(iRegLNoSp dst, iRegIorL2I src1, iRegIorL2I src2, iRegLNoSp src3) %{ |
|
10435 match(Set dst (SubL src3 (MulL (ConvI2L src1) (ConvI2L src2)))); |
|
10436 |
|
10437 ins_cost(INSN_COST * 3); |
|
10438 format %{ "smsubl $dst, $src1, $src2, $src3" %} |
|
10439 |
|
10440 ins_encode %{ |
|
10441 __ smsubl(as_Register($dst$$reg), |
|
10442 as_Register($src1$$reg), |
|
10443 as_Register($src2$$reg), |
|
10444 as_Register($src3$$reg)); |
|
10445 %} |
|
10446 |
|
10447 ins_pipe(imac_reg_reg); |
|
10448 %} |
|
10449 |
|
10450 instruct smnegL(iRegLNoSp dst, iRegIorL2I src1, iRegIorL2I src2, immL0 zero) %{ |
|
10451 match(Set dst (MulL (SubL zero (ConvI2L src1)) (ConvI2L src2))); |
|
10452 match(Set dst (MulL (ConvI2L src1) (SubL zero (ConvI2L src2)))); |
|
10453 |
|
10454 ins_cost(INSN_COST * 3); |
|
10455 format %{ "smnegl $dst, $src1, $src2" %} |
|
10456 |
|
10457 ins_encode %{ |
|
10458 __ smnegl(as_Register($dst$$reg), |
|
10459 as_Register($src1$$reg), |
|
10460 as_Register($src2$$reg)); |
|
10461 %} |
|
10462 |
|
10463 ins_pipe(imac_reg_reg); |
|
10464 %} |
|
10465 |
10416 // Integer Divide |
10466 // Integer Divide |
10417 |
10467 |
10418 instruct divI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{ |
10468 instruct divI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{ |
10419 match(Set dst (DivI src1 src2)); |
10469 match(Set dst (DivI src1 src2)); |
10420 |
10470 |