diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-08-10 17:56:24 +0000 | 
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-08-10 17:56:24 +0000 | 
| commit | 3b946c90ef12f1ab0507d338ec6a55bf994b972e (patch) | |
| tree | e7f95fb07816deb757fb5afa034c16fd0e13d3fc /llvm/lib | |
| parent | 64afe23528483a49eaa561d12c6440b1352531bd (diff) | |
| download | bcm5719-llvm-3b946c90ef12f1ab0507d338ec6a55bf994b972e.tar.gz bcm5719-llvm-3b946c90ef12f1ab0507d338ec6a55bf994b972e.zip | |
[Hexagon] Add extra patterns for single-precision min/max instructions
llvm-svn: 278252
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfoV5.td | 36 | 
1 files changed, 18 insertions, 18 deletions
| diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfoV5.td b/llvm/lib/Target/Hexagon/HexagonInstrInfoV5.td index 3d96864a659..3c0baa53edc 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrInfoV5.td +++ b/llvm/lib/Target/Hexagon/HexagonInstrInfoV5.td @@ -134,13 +134,13 @@ let isCommutable = 1 in {  def F2_sfsub : T_MInstFloat < "sfsub", 0b000, 0b001>; -def: Pat<(f32 (fadd F32:$src1, F32:$src2)), +def: Pat<(fadd F32:$src1, F32:$src2),           (F2_sfadd F32:$src1, F32:$src2)>; -def: Pat<(f32 (fsub F32:$src1, F32:$src2)), +def: Pat<(fsub F32:$src1, F32:$src2),           (F2_sfsub F32:$src1, F32:$src2)>; -def: Pat<(f32 (fmul F32:$src1, F32:$src2)), +def: Pat<(fmul F32:$src1, F32:$src2),           (F2_sfmpy F32:$src1, F32:$src2)>;  let Itinerary = M_tc_3x_SLOT23 in { @@ -149,21 +149,21 @@ let Itinerary = M_tc_3x_SLOT23 in {  }  let AddedComplexity = 100, Predicates = [HasV5T] in { -  def: Pat<(f32 (select (i1 (setolt F32:$src1, F32:$src2)), -                        F32:$src1, F32:$src2)), -           (F2_sfmin F32:$src1, F32:$src2)>; - -  def: Pat<(f32 (select (i1 (setogt F32:$src1, F32:$src2)), -                        F32:$src2, F32:$src1)), -           (F2_sfmin F32:$src1, F32:$src2)>; - -  def: Pat<(f32 (select (i1 (setogt F32:$src1, F32:$src2)), -                        F32:$src1, F32:$src2)), -           (F2_sfmax F32:$src1, F32:$src2)>; - -  def: Pat<(f32 (select (i1 (setolt F32:$src1, F32:$src2)), -                        F32:$src2, F32:$src1)), -           (F2_sfmax F32:$src1, F32:$src2)>; +  class SfSel12<PatFrag Cmp, InstHexagon MI> +    : Pat<(select (i1 (Cmp F32:$Rs, F32:$Rt)), F32:$Rs, F32:$Rt), +          (MI F32:$Rs, F32:$Rt)>; +  class SfSel21<PatFrag Cmp, InstHexagon MI> +    : Pat<(select (i1 (Cmp F32:$Rs, F32:$Rt)), F32:$Rt, F32:$Rs), +          (MI F32:$Rs, F32:$Rt)>; + +  def: SfSel12<setolt, F2_sfmin>; +  def: SfSel12<setole, F2_sfmin>; +  def: SfSel12<setogt, F2_sfmax>; +  def: SfSel12<setoge, F2_sfmax>; +  def: SfSel21<setolt, F2_sfmax>; +  def: SfSel21<setole, F2_sfmax>; +  def: SfSel21<setogt, F2_sfmin>; +  def: SfSel21<setoge, F2_sfmin>;  }  def F2_sffixupn : T_MInstFloat < "sffixupn", 0b110, 0b000>; | 

