diff options
| author | Jyotsna Verma <jverma@codeaurora.org> | 2013-04-23 21:05:55 +0000 | 
|---|---|---|
| committer | Jyotsna Verma <jverma@codeaurora.org> | 2013-04-23 21:05:55 +0000 | 
| commit | f00aab98a0072c0392cdea7501a25757941e4e5e (patch) | |
| tree | 96b079c30a0e77252e8e6f016a2c61c2a2eee46a /llvm/lib | |
| parent | 9ba77246ca15aa14077b9e5eb5cb768a765c072a (diff) | |
| download | bcm5719-llvm-f00aab98a0072c0392cdea7501a25757941e4e5e.tar.gz bcm5719-llvm-f00aab98a0072c0392cdea7501a25757941e4e5e.zip | |
Hexagon: Define relations for GP-relative instructions.
No functionality change.
llvm-svn: 180144
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td | 32 | 
1 files changed, 17 insertions, 15 deletions
| diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td b/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td index ef89e8bfdfa..6c3dfd90521 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td +++ b/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td @@ -2755,6 +2755,7 @@ def : Pat<(store (i64 DoubleRegs:$src1),  // mem[bhwd](#global)=Rt  // if ([!]Pv[.new]) mem[bhwd](##global) = Rt  //===----------------------------------------------------------------------===// +let mayStore = 1, isNVStorable = 1 in  multiclass ST_GP<string mnemonic, string BaseOp, RegisterClass RC> {    let BaseOpcode = BaseOp, isPredicable = 1 in    def NAME#_V4 : STInst2<(outs), @@ -2789,15 +2790,16 @@ multiclass ST_GP_nv<string mnemonic, string BaseOp, RegisterClass RC> {    }  } -let validSubTargets = HasV4SubT,  validSubTargets = HasV4SubT in { -defm STd_GP : ST_GP <"memd", "STd_GP", DoubleRegs>, -              ST_GP_nv<"memd", "STd_GP", DoubleRegs>, NewValueRel ; -defm STb_GP : ST_GP<"memb",  "STb_GP", IntRegs>, -              ST_GP_nv<"memb", "STb_GP", IntRegs>, NewValueRel ; -defm STh_GP : ST_GP<"memh",  "STh_GP", IntRegs>, -              ST_GP_nv<"memh", "STh_GP", IntRegs>, NewValueRel ; -defm STw_GP : ST_GP<"memw",  "STw_GP", IntRegs>, -              ST_GP_nv<"memw", "STw_GP", IntRegs>, NewValueRel ; +let validSubTargets = HasV4SubT, neverHasSideEffects = 1 in { +  let isNVStorable = 0 in +  defm STd_GP : ST_GP <"memd", "STd_GP", DoubleRegs>, PredNewRel; + +  defm STb_GP : ST_GP<"memb",  "STb_GP", IntRegs>, +                ST_GP_nv<"memb", "STb_GP", IntRegs>, NewValueRel; +  defm STh_GP : ST_GP<"memh",  "STh_GP", IntRegs>, +                ST_GP_nv<"memh", "STh_GP", IntRegs>, NewValueRel; +  defm STw_GP : ST_GP<"memw",  "STw_GP", IntRegs>, +                ST_GP_nv<"memw", "STw_GP", IntRegs>, NewValueRel;  }  // 64 bit atomic store @@ -2942,12 +2944,12 @@ multiclass LD_GP<string mnemonic, string BaseOp, RegisterClass RC> {    }  } -defm LDd_GP  : LD_GP<"memd",  "LDd_GP",  DoubleRegs>; -defm LDb_GP  : LD_GP<"memb",  "LDb_GP",  IntRegs>; -defm LDub_GP : LD_GP<"memub", "LDub_GP", IntRegs>; -defm LDh_GP  : LD_GP<"memh",  "LDh_GP",  IntRegs>; -defm LDuh_GP : LD_GP<"memuh", "LDuh_GP", IntRegs>; -defm LDw_GP  : LD_GP<"memw",  "LDw_GP",  IntRegs>; +defm LDd_GP  : LD_GP<"memd",  "LDd_GP",  DoubleRegs>, PredNewRel; +defm LDb_GP  : LD_GP<"memb",  "LDb_GP",  IntRegs>, PredNewRel; +defm LDub_GP : LD_GP<"memub", "LDub_GP", IntRegs>, PredNewRel; +defm LDh_GP  : LD_GP<"memh",  "LDh_GP",  IntRegs>, PredNewRel; +defm LDuh_GP : LD_GP<"memuh", "LDuh_GP", IntRegs>, PredNewRel; +defm LDw_GP  : LD_GP<"memw",  "LDw_GP",  IntRegs>, PredNewRel;  def : Pat <(atomic_load_64 (HexagonCONST32_GP tglobaladdr:$global)),             (i64 (LDd_GP_V4 tglobaladdr:$global))>; | 

