diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 021035c81ac4..641dc072afdd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-11-28 Ramana Radhakrishnan + + * config/aarch64/aarch64.md (div3): Change check to TARGET_FLOAT. + * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit + for vector mode and !TARGET_SIMD. + 2017-11-28 Jakub Jelinek * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree. diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 5bd99f894a0c..98221bbba20f 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -8442,6 +8442,9 @@ aarch64_emit_approx_div (rtx quo, rtx num, rtx den) || !use_approx_division_p) return false; + if (!TARGET_SIMD && VECTOR_MODE_P (mode)) + return false; + /* Estimate the approximate reciprocal. */ rtx xrcp = gen_reg_rtx (mode); emit_insn ((*get_recpe_type (mode)) (xrcp, den)); diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 423a3352aab4..83e494250904 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -5093,7 +5093,7 @@ [(set (match_operand:GPF_F16 0 "register_operand") (div:GPF_F16 (match_operand:GPF_F16 1 "general_operand") (match_operand:GPF_F16 2 "register_operand")))] - "TARGET_SIMD" + "TARGET_FLOAT" { if (aarch64_emit_approx_div (operands[0], operands[1], operands[2])) DONE;