From: Jonas Paulsson Date: Wed, 9 Nov 2016 12:47:57 +0000 (+0000) Subject: [SystemZ] A few fixes in scheduler files. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e6c9f7f938b367d84e9c049c5fc6e370c44b7bf3;p=llvm [SystemZ] A few fixes in scheduler files. Review: U Weigand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286362 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/SystemZ/SystemZScheduleZ13.td b/lib/Target/SystemZ/SystemZScheduleZ13.td index d5b2c127995..7bf15b40431 100644 --- a/lib/Target/SystemZ/SystemZScheduleZ13.td +++ b/lib/Target/SystemZ/SystemZScheduleZ13.td @@ -527,7 +527,7 @@ def : InstRW<[FXa, FXb, LSU, Lat6, GroupAlone], (instregex "CS(G|Y)?$")>; def : InstRW<[LSU], (instregex "(EAR|SAR|CPYA)$")>; // Load address extended -def : InstRW<[LSU, FXa], (instregex "LAE(Y)?$")>; +def : InstRW<[LSU, FXa, Lat5, BeginGroup], (instregex "LAE(Y)?$")>; // Load/store access multiple (not modeled precisely) def : InstRW<[LSU, Lat30, GroupAlone], (instregex "(L|ST)AM(Y)?$")>; @@ -546,10 +546,10 @@ def : InstRW<[LSU, EndGroup], (instregex "SPM$")>; def : InstRW<[FXa, FXa, FXb, Lat5, GroupAlone], (instregex "BAL(R)?$")>; // Test addressing mode -def : InstRW<[FXb, EndGroup], (instregex "TAM$")>; +def : InstRW<[FXb], (instregex "TAM$")>; // Set addressing mode -def : InstRW<[FXb, FXb, Lat2, EndGroup], (instregex "SAM(24|31|64)$")>; +def : InstRW<[FXb, Lat2, EndGroup], (instregex "SAM(24|31|64)$")>; // Branch (and save) and set mode. def : InstRW<[FXa, FXb, Lat2, GroupAlone], (instregex "BSM$")>; diff --git a/lib/Target/SystemZ/SystemZScheduleZ196.td b/lib/Target/SystemZ/SystemZScheduleZ196.td index c4c377e0702..06575059328 100644 --- a/lib/Target/SystemZ/SystemZScheduleZ196.td +++ b/lib/Target/SystemZ/SystemZScheduleZ196.td @@ -504,7 +504,7 @@ def : InstRW<[FXU, LSU, FXU, Lat6, GroupAlone], (instregex "CS(G|Y)?$")>; def : InstRW<[LSU], (instregex "(EAR|SAR|CPYA)$")>; // Load address extended -def : InstRW<[LSU, FXU], (instregex "LAE(Y)?$")>; +def : InstRW<[LSU, FXU, Lat5, GroupAlone], (instregex "LAE(Y)?$")>; // Load/store access multiple (not modeled precisely) def : InstRW<[LSU, Lat30, GroupAlone], (instregex "(L|ST)AM(Y)?$")>; @@ -523,14 +523,14 @@ def : InstRW<[LSU, EndGroup], (instregex "SPM$")>; def : InstRW<[FXU, FXU, LSU, Lat8, GroupAlone], (instregex "BAL(R)?$")>; // Test addressing mode -def : InstRW<[FXU, EndGroup], (instregex "TAM$")>; +def : InstRW<[FXU], (instregex "TAM$")>; // Set addressing mode def : InstRW<[LSU, EndGroup], (instregex "SAM(24|31|64)$")>; // Branch (and save) and set mode. -def : InstRW<[FXU, LSU, Lat4, GroupAlone], (instregex "BSM$")>; -def : InstRW<[FXU, FXU, LSU, Lat5, GroupAlone], (instregex "BASSM$")>; +def : InstRW<[FXU, LSU, Lat5, GroupAlone], (instregex "BSM$")>; +def : InstRW<[FXU, FXU, LSU, Lat6, GroupAlone], (instregex "BASSM$")>; //===----------------------------------------------------------------------===// // Miscellaneous Instructions. diff --git a/lib/Target/SystemZ/SystemZScheduleZEC12.td b/lib/Target/SystemZ/SystemZScheduleZEC12.td index 08a49b9e479..e302d4606b4 100644 --- a/lib/Target/SystemZ/SystemZScheduleZEC12.td +++ b/lib/Target/SystemZ/SystemZScheduleZEC12.td @@ -506,7 +506,7 @@ def : InstRW<[FXU, FXU, LSU, Lat6, GroupAlone], (instregex "CS(G|Y)?$")>; def : InstRW<[LSU], (instregex "(EAR|SAR|CPYA)$")>; // Load address extended -def : InstRW<[LSU, FXU], (instregex "LAE(Y)?$")>; +def : InstRW<[LSU, FXU, Lat5, GroupAlone], (instregex "LAE(Y)?$")>; // Load/store access multiple (not modeled precisely) def : InstRW<[LSU, Lat30, GroupAlone], (instregex "(L|ST)AM(Y)?$")>; @@ -525,14 +525,14 @@ def : InstRW<[LSU, EndGroup], (instregex "SPM$")>; def : InstRW<[FXU, FXU, LSU, Lat8, GroupAlone], (instregex "BAL(R)?$")>; // Test addressing mode -def : InstRW<[FXU, EndGroup], (instregex "TAM$")>; +def : InstRW<[FXU], (instregex "TAM$")>; // Set addressing mode def : InstRW<[LSU, EndGroup], (instregex "SAM(24|31|64)$")>; // Branch (and save) and set mode. -def : InstRW<[FXU, LSU, Lat4, GroupAlone], (instregex "BSM$")>; -def : InstRW<[FXU, FXU, LSU, Lat5, GroupAlone], (instregex "BASSM$")>; +def : InstRW<[FXU, LSU, Lat5, GroupAlone], (instregex "BSM$")>; +def : InstRW<[FXU, FXU, LSU, Lat6, GroupAlone], (instregex "BASSM$")>; //===----------------------------------------------------------------------===// // Transactional execution