From: Colin LeMahieu Date: Thu, 15 Jan 2015 21:35:49 +0000 (+0000) Subject: [Hexagon] Fix 226206 by uncommenting required pattern and changing patterns for simpl... X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=c0518a01f0bfc9823aa70e03cbaaf663351d82c8;p=oota-llvm.git [Hexagon] Fix 226206 by uncommenting required pattern and changing patterns for simple load-extends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226210 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Hexagon/HexagonInstrInfo.td b/lib/Target/Hexagon/HexagonInstrInfo.td index a6c8e9ee20d..a2536464e59 100644 --- a/lib/Target/Hexagon/HexagonInstrInfo.td +++ b/lib/Target/Hexagon/HexagonInstrInfo.td @@ -1567,9 +1567,9 @@ let AddedComplexity = 20 in { defm: Loadx_pat; defm: Loadx_pat; - //defm: Loadx_pat; + defm: Loadx_pat; defm: Loadx_pat; - //defm: Loadx_pat; + defm: Loadx_pat; defm: Loadx_pat; defm: Loadx_pat; defm: Loadx_pat; @@ -1703,33 +1703,6 @@ defm loadri : LD_PostInc <"memw", "LDriw", IntRegs, s4_2Imm, 0b1100>; let accessSize = DoubleWordAccess, opExtentAlign = 3, isCodeGenOnly = 0 in defm loadrd : LD_PostInc <"memd", "LDrid", DoubleRegs, s4_3Imm, 0b1110>; -def : Pat< (i32 (extloadi1 ADDRriS11_0:$addr)), - (i32 (L2_loadrb_io AddrFI:$addr, 0)) >; - -// Load byte any-extend. -def : Pat < (i32 (extloadi8 ADDRriS11_0:$addr)), - (i32 (L2_loadrb_io AddrFI:$addr, 0)) >; - -// Indexed load byte any-extend. -let AddedComplexity = 20 in -def : Pat < (i32 (extloadi8 (add IntRegs:$src1, s11_0ImmPred:$offset))), - (i32 (L2_loadrb_io IntRegs:$src1, s11_0ImmPred:$offset)) >; - -def : Pat < (i32 (extloadi16 ADDRriS11_1:$addr)), - (i32 (L2_loadrh_io AddrFI:$addr, 0))>; - -let AddedComplexity = 20 in -def : Pat < (i32 (extloadi16 (add IntRegs:$src1, s11_1ImmPred:$offset))), - (i32 (L2_loadrh_io IntRegs:$src1, s11_1ImmPred:$offset)) >; - -let AddedComplexity = 10 in -def : Pat < (i32 (zextloadi1 ADDRriS11_0:$addr)), - (i32 (L2_loadrub_io AddrFI:$addr, 0))>; - -let AddedComplexity = 20 in -def : Pat < (i32 (zextloadi1 (add IntRegs:$src1, s11_0ImmPred:$offset))), - (i32 (L2_loadrub_io IntRegs:$src1, s11_0ImmPred:$offset))>; - //===----------------------------------------------------------------------===// // Template class for post increment loads with register offset. //===----------------------------------------------------------------------===// diff --git a/lib/Target/Hexagon/HexagonInstrInfoV4.td b/lib/Target/Hexagon/HexagonInstrInfoV4.td index ad2393c4b99..be206e6e494 100644 --- a/lib/Target/Hexagon/HexagonInstrInfoV4.td +++ b/lib/Target/Hexagon/HexagonInstrInfoV4.td @@ -501,41 +501,21 @@ def : Pat <(i64 (load (add IntRegs:$src1, Requires<[HasV4T]>; } - // 'def pats' for load instruction base + register offset and // zero immediate value. -let AddedComplexity = 10 in { -def : Pat <(i64 (load (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadrd_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (sextloadi8 (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadrb_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (zextloadi8 (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadrub_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (extloadi8 (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadrub_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (sextloadi16 (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadrh_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (zextloadi16 (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadruh_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (extloadi16 (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadruh_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; - -def : Pat <(i32 (load (add IntRegs:$src1, IntRegs:$src2))), - (L4_loadri_rr IntRegs:$src1, IntRegs:$src2, 0)>, - Requires<[HasV4T]>; +class Loadxs_simple_pat + : Pat<(VT (Load (add (i32 IntRegs:$Rs), (i32 IntRegs:$Rt)))), + (VT (MI IntRegs:$Rs, IntRegs:$Rt, 0))>; + +let AddedComplexity = 20 in { + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; + def: Loadxs_simple_pat; } // zext i1->i64