Skip to content

Commit 7ccb5eb

Browse files
committedMar 22, 2018
[ARM] Enable the full InstRW overlap check for ARMScheduleR52.td
This fixes a few issues with the R52 instregexs to enable the full overlap checking Differential Revision: https://reviews.llvm.org/D44767 llvm-svn: 328216
1 parent 78fad32 commit 7ccb5eb

File tree

1 file changed

+3
-8
lines changed

1 file changed

+3
-8
lines changed
 

‎llvm/lib/Target/ARM/ARMScheduleR52.td

+3-8
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ def CortexR52Model : SchedMachineModel {
2525
let LoadLatency = 1; // Optimistic, assuming no misses
2626
let MispredictPenalty = 8; // A branch direction mispredict, including PFU
2727
let CompleteModel = 0; // Covers instructions applicable to cortex-r52.
28-
29-
// FIXME: Remove when all errors have been fixed.
30-
let FullInstRWOverlapCheck = 0;
3128
}
3229

3330

@@ -223,7 +220,7 @@ def : InstRW<[R52WriteALU_EX1, R52Read_ISS],
223220
(instregex "MOVCCi32imm", "MOVi32imm", "MOV_ga_dyn", "t2MOVCCi",
224221
"t2MOVi", "t2MOV_ga_dyn")>;
225222
def : InstRW<[R52WriteALU_EX2, R52Read_EX1],
226-
(instregex "MOV_ga_pcrel", "t2MOV_ga_pcrel")>;
223+
(instregex "MOV_ga_pcrel$", "t2MOV_ga_pcrel$")>;
227224
def : InstRW<[R52WriteLd,R52Read_ISS],
228225
(instregex "MOV_ga_pcrel_ldr", "t2MOV_ga_pcrel_ldr")>;
229226

@@ -515,7 +512,7 @@ def : InstRW<[R52WriteISTM, R52WriteAdr, R52Read_ISS, R52Read_EX2],
515512

516513
// LDRLIT pseudo instructions, they expand to LDR + PICADD
517514
def : InstRW<[R52WriteLd],
518-
(instregex "t?LDRLIT_ga_abs", "t?LDRLIT_ga_pcrel")>;
515+
(instregex "t?LDRLIT_ga_abs", "t?LDRLIT_ga_pcrel$")>;
519516
// LDRLIT_ga_pcrel_ldr expands to LDR + PICLDR
520517
def : InstRW<[R52WriteLd], (instregex "LDRLIT_ga_pcrel_ldr")>;
521518

@@ -533,7 +530,7 @@ def : InstRW<[R52Write2FPALU_F5, R52Read_F1], (instregex "VABS(fq|hq)")>;
533530
def : InstRW<[R52WriteFPALU_F3, R52Read_F1, R52Read_F1], (instregex "(VACGE|VACGT)(fd|hd)")>;
534531
def : InstRW<[R52Write2FPALU_F3, R52Read_F1, R52Read_F1], (instregex "(VACGE|VACGT)(fq|hq)")>;
535532

536-
def : InstRW<[R52WriteFPALU_F5, R52Read_F1, R52Read_F1], (instregex "(VADD|VSUB)(D|S|H|fd|hd)")>;
533+
def : InstRW<[R52WriteFPALU_F5, R52Read_F1, R52Read_F1], (instregex "(VADD|VSUB)(D|S|H|fd|hd)$")>;
537534
def : InstRW<[R52Write2FPALU_F5, R52Read_F1, R52Read_F1], (instregex "(VADD|VSUB)(fq|hq)")>;
538535

539536
def : InstRW<[R52WriteFPLd_F4, R52Read_ISS, R52Read_F1], (instregex "VLDR")>;
@@ -795,8 +792,6 @@ def : InstRW<[R52Write2FPALU_F3, R52Read_F2], (instregex "VBICi(v8i16|v4i32)")>;
795792
def : InstRW<[R52WriteFPALU_F3, R52Read_F1, R52Read_F2, R52Read_F2], (instregex "(VBIF|VBIT|VBSL)d")>;
796793
def : InstRW<[R52Write2FPALU_F3, R52Read_F1, R52Read_F2, R52Read_F2], (instregex "(VBIF|VBIT|VBSL)q")>;
797794

798-
def : InstRW<[R52Write2FPALU_F3, R52Read_F2], (instregex "VBICi(v8i16|v4i32)")>;
799-
800795
def : InstRW<[R52WriteFPALU_F3, R52Read_F1, R52Read_F1],
801796
(instregex "(VCEQ|VCGE|VCGT|VCLE|VCLT|VCLZ|VCMP|VCMPE|VCNT)")>;
802797
def : InstRW<[R52WriteFPALU_F5, R52Read_F1, R52Read_F1],

0 commit comments

Comments
 (0)
Please sign in to comment.