From: Bill Schmidt Date: Tue, 12 Dec 2017 20:44:57 +0000 (+0000) Subject: re PR target/83332 (new test case gfortran.dg/vect/pr81303.f fails (r255499)) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=95e5bea0012664d225a40a219f98a9cc1f7f1579;p=gcc.git re PR target/83332 (new test case gfortran.dg/vect/pr81303.f fails (r255499)) 2017-12-12 Bill Schmidt PR target/83332 * config/rs6000/vector.md (vcondv2dfv2di): New define_expand. (vcondv2div2df): Likewise. (vconduv2dfv2di): Likewise. From-SVN: r255588 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b04e6fd9968..7415fa9a3c4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-12-12 Bill Schmidt + + PR target/83332 + * config/rs6000/vector.md (vcondv2dfv2di): New define_expand. + (vcondv2div2df): Likewise. + (vconduv2dfv2di): Likewise. + 2017-12-12 Jakub Jelinek * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF, diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md index 5a9b1a8c101..35bd8921df8 100644 --- a/gcc/config/rs6000/vector.md +++ b/gcc/config/rs6000/vector.md @@ -455,6 +455,42 @@ FAIL; }") +(define_expand "vcondv2dfv2di" + [(set (match_operand:V2DF 0 "vfloat_operand") + (if_then_else:V2DF + (match_operator 3 "comparison_operator" + [(match_operand:V2DI 4 "vint_operand") + (match_operand:V2DI 5 "vint_operand")]) + (match_operand:V2DF 1 "vfloat_operand") + (match_operand:V2DF 2 "vfloat_operand")))] + "VECTOR_UNIT_ALTIVEC_OR_VSX_P (V2DFmode) + && VECTOR_UNIT_ALTIVEC_OR_VSX_P (V2DImode)" +{ + if (rs6000_emit_vector_cond_expr (operands[0], operands[1], operands[2], + operands[3], operands[4], operands[5])) + DONE; + else + FAIL; +}) + +(define_expand "vcondv2div2df" + [(set (match_operand:V2DI 0 "vint_operand") + (if_then_else:V2DI + (match_operator 3 "comparison_operator" + [(match_operand:V2DF 4 "vfloat_operand") + (match_operand:V2DF 5 "vfloat_operand")]) + (match_operand:V2DI 1 "vint_operand") + (match_operand:V2DI 2 "vint_operand")))] + "VECTOR_UNIT_ALTIVEC_OR_VSX_P (V2DFmode) + && VECTOR_UNIT_ALTIVEC_OR_VSX_P (V2DImode)" +{ + if (rs6000_emit_vector_cond_expr (operands[0], operands[1], operands[2], + operands[3], operands[4], operands[5])) + DONE; + else + FAIL; +}) + (define_expand "vcondu" [(set (match_operand:VEC_I 0 "vint_operand") (if_then_else:VEC_I @@ -492,6 +528,24 @@ FAIL; }") +(define_expand "vconduv2dfv2di" + [(set (match_operand:V2DF 0 "vfloat_operand") + (if_then_else:V2DF + (match_operator 3 "comparison_operator" + [(match_operand:V2DI 4 "vint_operand") + (match_operand:V2DI 5 "vint_operand")]) + (match_operand:V2DF 1 "vfloat_operand") + (match_operand:V2DF 2 "vfloat_operand")))] + "VECTOR_UNIT_ALTIVEC_OR_VSX_P (V2DFmode) + && VECTOR_UNIT_ALTIVEC_OR_VSX_P (V2DImode)" +{ + if (rs6000_emit_vector_cond_expr (operands[0], operands[1], operands[2], + operands[3], operands[4], operands[5])) + DONE; + else + FAIL; +}) + (define_expand "vector_eq" [(set (match_operand:VEC_C 0 "vlogical_operand" "") (eq:VEC_C (match_operand:VEC_C 1 "vlogical_operand" "")