From 19c5f6e600fdd1e62ab550eec4825c503919f857 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 8 Feb 2013 19:29:58 +0100 Subject: [PATCH] sse.md (FMAMODEM): New mode iterator. * config/i386/sse.md (FMAMODEM): New mode iterator. (fma4, fms4, fnma4, fnms4): Use FMAMODEM mode iterator. Do not use TARGET_SSE_MATH in insn constraint. From-SVN: r195896 --- gcc/ChangeLog | 6 +++++ gcc/config/i386/sse.md | 58 ++++++++++++++++++++++------------------- gcc/testsuite/ChangeLog | 2 +- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c0e9efb81dac..8fa59127b466 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-02-08 Uros Bizjak + + * config/i386/sse.md (FMAMODEM): New mode iterator. + (fma4, fms4, fnma4, fnms4): Use FMAMODEM + mode iterator. Do not use TARGET_SSE_MATH in insn constraint. + 2013-02-08 Uros Bizjak * config/i386/gnu-user.h (TARGET_CAN_SPLIT_STACK): Define only diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 17412c69814f..e2bb68ba18f9 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2037,42 +2037,46 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define_mode_iterator FMAMODE [SF DF V4SF V2DF V8SF V4DF]) +;; The standard names for scalar FMA are only available with SSE math enabled. +(define_mode_iterator FMAMODEM [(SF "TARGET_SSE_MATH") + (DF "TARGET_SSE_MATH") + V4SF V2DF V8SF V4DF]) -;; The standard names for fma is only available with SSE math enabled. (define_expand "fma4" - [(set (match_operand:FMAMODE 0 "register_operand") - (fma:FMAMODE - (match_operand:FMAMODE 1 "nonimmediate_operand") - (match_operand:FMAMODE 2 "nonimmediate_operand") - (match_operand:FMAMODE 3 "nonimmediate_operand")))] - "(TARGET_FMA || TARGET_FMA4) && TARGET_SSE_MATH") + [(set (match_operand:FMAMODEM 0 "register_operand") + (fma:FMAMODEM + (match_operand:FMAMODEM 1 "nonimmediate_operand") + (match_operand:FMAMODEM 2 "nonimmediate_operand") + (match_operand:FMAMODEM 3 "nonimmediate_operand")))] + "TARGET_FMA || TARGET_FMA4") (define_expand "fms4" - [(set (match_operand:FMAMODE 0 "register_operand") - (fma:FMAMODE - (match_operand:FMAMODE 1 "nonimmediate_operand") - (match_operand:FMAMODE 2 "nonimmediate_operand") - (neg:FMAMODE (match_operand:FMAMODE 3 "nonimmediate_operand"))))] - "(TARGET_FMA || TARGET_FMA4) && TARGET_SSE_MATH") + [(set (match_operand:FMAMODEM 0 "register_operand") + (fma:FMAMODEM + (match_operand:FMAMODEM 1 "nonimmediate_operand") + (match_operand:FMAMODEM 2 "nonimmediate_operand") + (neg:FMAMODEM (match_operand:FMAMODEM 3 "nonimmediate_operand"))))] + "TARGET_FMA || TARGET_FMA4") (define_expand "fnma4" - [(set (match_operand:FMAMODE 0 "register_operand") - (fma:FMAMODE - (neg:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand")) - (match_operand:FMAMODE 2 "nonimmediate_operand") - (match_operand:FMAMODE 3 "nonimmediate_operand")))] - "(TARGET_FMA || TARGET_FMA4) && TARGET_SSE_MATH") + [(set (match_operand:FMAMODEM 0 "register_operand") + (fma:FMAMODEM + (neg:FMAMODEM (match_operand:FMAMODEM 1 "nonimmediate_operand")) + (match_operand:FMAMODEM 2 "nonimmediate_operand") + (match_operand:FMAMODEM 3 "nonimmediate_operand")))] + "TARGET_FMA || TARGET_FMA4") (define_expand "fnms4" - [(set (match_operand:FMAMODE 0 "register_operand") - (fma:FMAMODE - (neg:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand")) - (match_operand:FMAMODE 2 "nonimmediate_operand") - (neg:FMAMODE (match_operand:FMAMODE 3 "nonimmediate_operand"))))] - "(TARGET_FMA || TARGET_FMA4) && TARGET_SSE_MATH") + [(set (match_operand:FMAMODEM 0 "register_operand") + (fma:FMAMODEM + (neg:FMAMODEM (match_operand:FMAMODEM 1 "nonimmediate_operand")) + (match_operand:FMAMODEM 2 "nonimmediate_operand") + (neg:FMAMODEM (match_operand:FMAMODEM 3 "nonimmediate_operand"))))] + "TARGET_FMA || TARGET_FMA4") + +;; The builtins for intrinsics are not constrained by SSE math enabled. +(define_mode_iterator FMAMODE [SF DF V4SF V2DF V8SF V4DF]) -;; The builtin for intrinsics is not constrained by SSE math enabled. (define_expand "fma4i_fmadd_" [(set (match_operand:FMAMODE 0 "register_operand") (fma:FMAMODE diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d816f184b250..be17827348c2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,4 @@ -2013-02-08 Edgar E. Iglesias +2013-02-08 Edgar E. Iglesias * 20101011-1.c: Add __MICROBLAZE__ exception to set DO_TEST 0