@@ -8386,6 +8386,7 @@ instruct binOps_HF_reg(fRegF dst, fRegF src1, fRegF src2)
8386
8386
8387
8387
instruct min_max_HF_reg(fRegF dst, fRegF src1, fRegF src2)
8388
8388
%{
8389
+ predicate(!UseZfa);
8389
8390
match(Set dst (MinHF src1 src2));
8390
8391
match(Set dst (MaxHF src1 src2));
8391
8392
format %{ "min_max_hf $dst, $src1, $src2" %}
@@ -8404,6 +8405,36 @@ instruct min_max_HF_reg(fRegF dst, fRegF src1, fRegF src2)
8404
8405
ins_pipe(pipe_class_default);
8405
8406
%}
8406
8407
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
+
8407
8438
instruct fma_HF_reg(fRegF dst, fRegF src1, fRegF src2, fRegF src3)
8408
8439
%{
8409
8440
match(Set dst (FmaHF src3 (Binary src1 src2)));
0 commit comments