src/hotspot/cpu/x86/x86_64.ad
changeset 55632 d6600ddb85fb
parent 55253 3c905e67e380
child 57804 9b7b9f16dfd9
equal deleted inserted replaced
55631:1831d28d34bb 55632:d6600ddb85fb
  5541     __ blendvps($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5541     __ blendvps($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5542  %}
  5542  %}
  5543   ins_pipe( pipe_slow );
  5543   ins_pipe( pipe_slow );
  5544 %}
  5544 %}
  5545 
  5545 
  5546 instruct maxF_reduction_reg(regF dst, regF a, regF b, regF xmmt, rRegI tmp, rFlagsReg cr) %{
  5546 instruct maxF_reduction_reg(legRegF dst, legRegF a, legRegF b, legRegF xmmt, rRegI tmp, rFlagsReg cr) %{
  5547   predicate(UseAVX > 0 && n->is_reduction());
  5547   predicate(UseAVX > 0 && n->is_reduction());
  5548   match(Set dst (MaxF a b));
  5548   match(Set dst (MaxF a b));
  5549   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5549   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5550 
  5550 
  5551   format %{ "$dst = max($a, $b)\t# intrinsic (float)" %}
  5551   format %{ "$dst = max($a, $b)\t# intrinsic (float)" %}
  5577     __ blendvpd($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5577     __ blendvpd($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5578   %}
  5578   %}
  5579   ins_pipe( pipe_slow );
  5579   ins_pipe( pipe_slow );
  5580 %}
  5580 %}
  5581 
  5581 
  5582 instruct maxD_reduction_reg(regD dst, regD a, regD b, regD xmmt, rRegL tmp, rFlagsReg cr) %{
  5582 instruct maxD_reduction_reg(legRegD dst, legRegD a, legRegD b, legRegD xmmt, rRegL tmp, rFlagsReg cr) %{
  5583   predicate(UseAVX > 0 && n->is_reduction());
  5583   predicate(UseAVX > 0 && n->is_reduction());
  5584   match(Set dst (MaxD a b));
  5584   match(Set dst (MaxD a b));
  5585   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5585   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5586 
  5586 
  5587   format %{ "$dst = max($a, $b)\t# intrinsic (double)" %}
  5587   format %{ "$dst = max($a, $b)\t# intrinsic (double)" %}
  5613     __ blendvps($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5613     __ blendvps($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5614   %}
  5614   %}
  5615   ins_pipe( pipe_slow );
  5615   ins_pipe( pipe_slow );
  5616 %}
  5616 %}
  5617 
  5617 
  5618 instruct minF_reduction_reg(regF dst, regF a, regF b, regF xmmt, rRegI tmp, rFlagsReg cr) %{
  5618 instruct minF_reduction_reg(legRegF dst, legRegF a, legRegF b, legRegF xmmt, rRegI tmp, rFlagsReg cr) %{
  5619   predicate(UseAVX > 0 && n->is_reduction());
  5619   predicate(UseAVX > 0 && n->is_reduction());
  5620   match(Set dst (MinF a b));
  5620   match(Set dst (MinF a b));
  5621   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5621   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5622 
  5622 
  5623   format %{ "$dst = min($a, $b)\t# intrinsic (float)" %}
  5623   format %{ "$dst = min($a, $b)\t# intrinsic (float)" %}
  5649     __ blendvpd($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5649     __ blendvpd($dst$$XMMRegister, $tmp$$XMMRegister, $atmp$$XMMRegister, $btmp$$XMMRegister, vector_len);
  5650   %}
  5650   %}
  5651   ins_pipe( pipe_slow );
  5651   ins_pipe( pipe_slow );
  5652 %}
  5652 %}
  5653 
  5653 
  5654 instruct minD_reduction_reg(regD dst, regD a, regD b, regD xmmt, rRegL tmp, rFlagsReg cr) %{
  5654 instruct minD_reduction_reg(legRegD dst, legRegD a, legRegD b, legRegD xmmt, rRegL tmp, rFlagsReg cr) %{
  5655   predicate(UseAVX > 0 && n->is_reduction());
  5655   predicate(UseAVX > 0 && n->is_reduction());
  5656   match(Set dst (MinD a b));
  5656   match(Set dst (MinD a b));
  5657   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5657   effect(USE a, USE b, TEMP xmmt, TEMP tmp, KILL cr);
  5658 
  5658 
  5659   format %{ "$dst = min($a, $b)\t# intrinsic (double)" %}
  5659   format %{ "$dst = min($a, $b)\t# intrinsic (double)" %}