@@ -981,6 +981,7 @@ definitions %{
981
981
int_def LOAD_COST ( 300, 3 * DEFAULT_COST); // load, fpload
982
982
int_def STORE_COST ( 100, 1 * DEFAULT_COST); // store, fpstore
983
983
int_def XFER_COST ( 300, 3 * DEFAULT_COST); // mfc, mtc, fcvt, fmove, fcmp
984
+ int_def FMVX_COST ( 100, 1 * DEFAULT_COST); // shuffles with no conversion
984
985
int_def BRANCH_COST ( 200, 2 * DEFAULT_COST); // branch, jmp, call
985
986
int_def IMUL_COST ( 1000, 10 * DEFAULT_COST); // imul
986
987
int_def IDIVSI_COST ( 3400, 34 * DEFAULT_COST); // idivdi
@@ -8483,7 +8484,7 @@ instruct MoveF2I_reg_reg(iRegINoSp dst, fRegF src) %{
8483
8484
8484
8485
effect(DEF dst, USE src);
8485
8486
8486
- ins_cost(XFER_COST );
8487
+ ins_cost(FMVX_COST );
8487
8488
8488
8489
format %{ "fmv.x.w $dst, $src\t#@MoveL2D_reg_stack" %}
8489
8490
@@ -8501,7 +8502,7 @@ instruct MoveI2F_reg_reg(fRegF dst, iRegI src) %{
8501
8502
8502
8503
effect(DEF dst, USE src);
8503
8504
8504
- ins_cost(XFER_COST );
8505
+ ins_cost(FMVX_COST );
8505
8506
8506
8507
format %{ "fmv.w.x $dst, $src\t#@MoveI2F_reg_reg" %}
8507
8508
@@ -8519,7 +8520,7 @@ instruct MoveD2L_reg_reg(iRegLNoSp dst, fRegD src) %{
8519
8520
8520
8521
effect(DEF dst, USE src);
8521
8522
8522
- ins_cost(XFER_COST );
8523
+ ins_cost(FMVX_COST );
8523
8524
8524
8525
format %{ "fmv.x.d $dst, $src\t#@MoveD2L_reg_reg" %}
8525
8526
@@ -8537,7 +8538,7 @@ instruct MoveL2D_reg_reg(fRegD dst, iRegL src) %{
8537
8538
8538
8539
effect(DEF dst, USE src);
8539
8540
8540
- ins_cost(XFER_COST );
8541
+ ins_cost(FMVX_COST );
8541
8542
8542
8543
format %{ "fmv.d.x $dst, $src\t#@MoveD2L_reg_reg" %}
8543
8544
0 commit comments