diff options
Diffstat (limited to 'contrib/llvm/lib/Target/Hexagon/HexagonSelectCCInfo.td')
-rw-r--r-- | contrib/llvm/lib/Target/Hexagon/HexagonSelectCCInfo.td | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/contrib/llvm/lib/Target/Hexagon/HexagonSelectCCInfo.td b/contrib/llvm/lib/Target/Hexagon/HexagonSelectCCInfo.td deleted file mode 100644 index d8feb89..0000000 --- a/contrib/llvm/lib/Target/Hexagon/HexagonSelectCCInfo.td +++ /dev/null @@ -1,121 +0,0 @@ -//===-- HexagoSelectCCInfo.td - Selectcc mappings ----------*- tablegen -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - - -// -// selectcc mappings. -// -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETEQ)), - (i32 (MUX_rr (i1 (CMPEQrr IntRegs:$lhs, IntRegs:$rhs)), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETNE)), - (i32 (MUX_rr (i1 (NOT_p (CMPEQrr IntRegs:$lhs, IntRegs:$rhs))), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETGT)), - (i32 (MUX_rr (i1 (CMPGTrr IntRegs:$lhs, IntRegs:$rhs)), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETUGT)), - (i32 (MUX_rr (i1 (CMPGTUrr IntRegs:$lhs, IntRegs:$rhs)), - IntRegs:$tval, IntRegs:$fval))>; - - - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETULT)), - (i32 (MUX_rr (i1 (NOT_p (CMPGTUrr IntRegs:$lhs, - (ADD_ri IntRegs:$rhs, -1)))), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETLT)), - (i32 (MUX_rr (i1 (NOT_p (CMPGTrr IntRegs:$lhs, - (ADD_ri IntRegs:$rhs, -1)))), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETLE)), - (i32 (MUX_rr (i1 (NOT_p (CMPGTrr IntRegs:$lhs, IntRegs:$rhs))), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETULE)), - (i32 (MUX_rr (i1 (NOT_p (CMPGTUrr IntRegs:$lhs, IntRegs:$rhs))), - IntRegs:$tval, IntRegs:$fval))>; - - -// -// selectcc mappings for greater-equal-to Rs => greater-than Rs-1. -// -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETGE)), - (i32 (MUX_rr (i1 (CMPGTrr IntRegs:$lhs, (ADD_ri IntRegs:$rhs, -1))), - IntRegs:$tval, IntRegs:$fval))>; - -def : Pat <(i32 (selectcc IntRegs:$lhs, IntRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETUGE)), - (i32 (MUX_rr (i1 (CMPGTUrr IntRegs:$lhs, (ADD_ri IntRegs:$rhs, -1))), - IntRegs:$tval, IntRegs:$fval))>; - - - -// -// selectcc mappings for predicate comparisons. -// -// Convert Rd = selectcc(p0, p1, true_val, false_val, SETEQ) into: -// pt = not(p1 xor p2) -// Rd = mux(pt, true_val, false_val) -// and similarly for SETNE -// -def : Pat <(i32 (selectcc PredRegs:$lhs, PredRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETNE)), - (i32 (MUX_rr (i1 (XOR_pp PredRegs:$lhs, PredRegs:$rhs)), IntRegs:$tval, - IntRegs:$fval))>; - -def : Pat <(i32 (selectcc PredRegs:$lhs, PredRegs:$rhs, IntRegs:$tval, - IntRegs:$fval, SETEQ)), - (i32 (MUX_rr (i1 (NOT_p (XOR_pp PredRegs:$lhs, PredRegs:$rhs))), - IntRegs:$tval, IntRegs:$fval))>; - - -// -// selectcc mappings for 64-bit operands are messy. Hexagon does not have a -// MUX64 o, use this: -// selectcc(Rss, Rdd, tval, fval, cond) -> -// combine(mux(cmp_cond(Rss, Rdd), tval.hi, fval.hi), -// mux(cmp_cond(Rss, Rdd), tval.lo, fval.lo)) - -// setgt-64. -def : Pat<(i64 (selectcc DoubleRegs:$lhs, DoubleRegs:$rhs, DoubleRegs:$tval, - DoubleRegs:$fval, SETGT)), - (COMBINE_rr (MUX_rr (CMPGT64rr DoubleRegs:$lhs, DoubleRegs:$rhs), - (EXTRACT_SUBREG DoubleRegs:$tval, subreg_hireg), - (EXTRACT_SUBREG DoubleRegs:$fval, subreg_hireg)), - (MUX_rr (CMPGT64rr DoubleRegs:$lhs, DoubleRegs:$rhs), - (EXTRACT_SUBREG DoubleRegs:$tval, subreg_loreg), - (EXTRACT_SUBREG DoubleRegs:$fval, subreg_loreg)))>; - - -// setlt-64 -> setgt-64. -def : Pat<(i64 (selectcc DoubleRegs:$lhs, DoubleRegs:$rhs, DoubleRegs:$tval, - DoubleRegs:$fval, SETLT)), - (COMBINE_rr (MUX_rr (CMPGT64rr DoubleRegs:$lhs, - (ADD64_rr DoubleRegs:$rhs, (TFRI64 -1))), - (EXTRACT_SUBREG DoubleRegs:$tval, subreg_hireg), - (EXTRACT_SUBREG DoubleRegs:$fval, subreg_hireg)), - (MUX_rr (CMPGT64rr DoubleRegs:$lhs, - (ADD64_rr DoubleRegs:$rhs, (TFRI64 -1))), - (EXTRACT_SUBREG DoubleRegs:$tval, subreg_loreg), - (EXTRACT_SUBREG DoubleRegs:$fval, subreg_loreg)))>; |