@@ -8386,6 +8386,7 @@ instruct binOps_HF_reg(fRegF dst, fRegF src1, fRegF src2)
83868386
83878387instruct min_max_HF_reg(fRegF dst, fRegF src1, fRegF src2)
83888388%{
8389+ predicate(!UseZfa);
83898390 match(Set dst (MinHF src1 src2));
83908391 match(Set dst (MaxHF src1 src2));
83918392 format %{ "min_max_hf $dst, $src1, $src2" %}
@@ -8404,6 +8405,36 @@ instruct min_max_HF_reg(fRegF dst, fRegF src1, fRegF src2)
84048405 ins_pipe(pipe_class_default);
84058406%}
84068407
8408+ instruct minHF_reg_zfa(fRegF dst, fRegF src1, fRegF src2)
8409+ %{
8410+ predicate(UseZfa);
8411+ match(Set dst (MinHF src1 src2));
8412+
8413+ format %{ "min_hf $dst, $src1, $src2" %}
8414+
8415+ ins_encode %{
8416+ __ fminm_h(as_FloatRegister($dst$$reg),
8417+ as_FloatRegister($src1$$reg), as_FloatRegister($src2$$reg));
8418+ %}
8419+
8420+ ins_pipe(pipe_class_default);
8421+ %}
8422+
8423+ instruct maxHF_reg_zfa(fRegF dst, fRegF src1, fRegF src2)
8424+ %{
8425+ predicate(UseZfa);
8426+ match(Set dst (MaxHF src1 src2));
8427+
8428+ format %{ "max_hf $dst, $src1, $src2" %}
8429+
8430+ ins_encode %{
8431+ __ fmaxm_h(as_FloatRegister($dst$$reg),
8432+ as_FloatRegister($src1$$reg), as_FloatRegister($src2$$reg));
8433+ %}
8434+
8435+ ins_pipe(pipe_class_default);
8436+ %}
8437+
84078438instruct fma_HF_reg(fRegF dst, fRegF src1, fRegF src2, fRegF src3)
84088439%{
84098440 match(Set dst (FmaHF src3 (Binary src1 src2)));
0 commit comments