@@ -947,7 +947,8 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
947947
948948 bool hasSALUFloat = ST->hasSALUFloatInsts ();
949949
950- addRulesForGOpcs ({G_FADD, G_FMUL}, Standard)
950+ addRulesForGOpcs (
951+ {G_FADD, G_FMUL, G_STRICT_FADD, G_STRICT_FSUB, G_STRICT_FMUL}, Standard)
951952 .Uni (S16, {{UniInVgprS16}, {Vgpr16, Vgpr16}}, !hasSALUFloat)
952953 .Uni (S16, {{Sgpr16}, {Sgpr16, Sgpr16}}, hasSALUFloat)
953954 .Div (S16, {{Vgpr16}, {Vgpr16, Vgpr16}})
@@ -961,7 +962,9 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
961962 hasSALUFloat)
962963 .Div (V2S16, {{VgprV2S16}, {VgprV2S16, VgprV2S16}})
963964 .Any ({{UniV2S32}, {{UniInVgprV2S32}, {VgprV2S32, VgprV2S32}}})
964- .Any ({{DivV2S32}, {{VgprV2S32}, {VgprV2S32, VgprV2S32}}});
965+ .Any ({{DivV2S32}, {{VgprV2S32}, {VgprV2S32, VgprV2S32}}})
966+ .Any ({{UniV2S64}, {{UniInVgprV2S64}, {VgprV2S64, VgprV2S64}}})
967+ .Any ({{DivV2S64}, {{VgprV2S64}, {VgprV2S64, VgprV2S64}}});
965968
966969 // FNEG and FABS are either folded as source modifiers or can be selected as
967970 // bitwise XOR and AND with Mask. XOR and AND are available on SALU but for
@@ -999,20 +1002,6 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
9991002 .Any ({{DivS1, S64}, {{Vcc}, {Vgpr64}}})
10001003 .Any ({{UniS1, S64}, {{UniInVcc}, {Vgpr64}}});
10011004
1002- addRulesForGOpcs ({G_STRICT_FADD, G_STRICT_FSUB, G_STRICT_FMUL}, Standard)
1003- .Uni (S16, {{UniInVgprS16}, {Vgpr16, Vgpr16}})
1004- .Div (S16, {{Vgpr16}, {Vgpr16, Vgpr16}})
1005- .Uni (S32, {{UniInVgprS32}, {Vgpr32, Vgpr32}})
1006- .Div (S32, {{Vgpr32}, {Vgpr32, Vgpr32}})
1007- .Uni (S64, {{UniInVgprS64}, {Vgpr64, Vgpr64}})
1008- .Div (S64, {{Vgpr64}, {Vgpr64, Vgpr64}})
1009- .Uni (V2S16, {{UniInVgprV2S16}, {VgprV2S16, VgprV2S16}})
1010- .Div (V2S16, {{VgprV2S16}, {VgprV2S16, VgprV2S16}})
1011- .Any ({{UniV2S32}, {{UniInVgprV2S32}, {VgprV2S32, VgprV2S32}}})
1012- .Any ({{DivV2S32}, {{VgprV2S32}, {VgprV2S32, VgprV2S32}}})
1013- .Any ({{UniV2S64}, {{UniInVgprV2S64}, {VgprV2S64, VgprV2S64}}})
1014- .Any ({{DivV2S64}, {{VgprV2S64}, {VgprV2S64, VgprV2S64}}});
1015-
10161005 using namespace Intrinsic ;
10171006
10181007 addRulesForIOpcs ({amdgcn_s_getpc}).Any ({{UniS64, _}, {{Sgpr64}, {None}}});
0 commit comments