diff options
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 3 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386.opt | 6 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 120 |
4 files changed, 88 insertions, 43 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index ade3a7d..6cd9d7d 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -30307,7 +30307,8 @@ ix86_enum_va_list (int idx, const char **pname, tree *ptree) #define TARGET_DEFAULT_TARGET_FLAGS \ (TARGET_DEFAULT \ | TARGET_SUBTARGET_DEFAULT \ - | TARGET_TLS_DIRECT_SEG_REFS_DEFAULT) + | TARGET_TLS_DIRECT_SEG_REFS_DEFAULT \ + | MASK_FUSED_MADD) #undef TARGET_HANDLE_OPTION #define TARGET_HANDLE_OPTION ix86_handle_option diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index eb1c86f..860d234 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -546,8 +546,6 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); %n`-mintel-syntax' is deprecated. Use `-masm=intel' instead.\n} \ %{msse5:-mavx \ %n'-msse5' was removed.\n} \ -%{mfused-madd:-mavx \ -%n'-mfused-madd' was removed.\n} \ %{mno-intel-syntax:-masm=att \ %n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.\n}" diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index dd47b7d..0afdd11 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -244,6 +244,12 @@ mcld Target Report Mask(CLD) Save Generate cld instruction in the function prologue. +mfused-madd +Target Report Mask(FUSED_MADD) Save +Enable automatic generation of fused floating point multiply-add instructions +if the ISA supports such instructions. The -mfused-madd option is on by +default. + ;; ISA support m32 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 78e4b6a..9524d4f 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1709,7 +1709,8 @@ (match_operand:FMA4MODEF4 1 "register_operand" "%x,x") (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:FMA4MODEF4 3 "nonimmediate_operand" "xm,x")))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmadd<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1741,7 +1742,8 @@ (match_operand:FMA4MODEF4 1 "register_operand" "%x,x") (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:FMA4MODEF4 3 "nonimmediate_operand" "xm,x")))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsub<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1775,7 +1777,8 @@ (mult:FMA4MODEF4 (match_operand:FMA4MODEF4 1 "register_operand" "%x,x") (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m"))))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmadd<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1809,7 +1812,8 @@ (match_operand:FMA4MODEF4 1 "register_operand" "%x,x")) (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:FMA4MODEF4 3 "nonimmediate_operand" "xm,x")))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmsub<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1843,7 +1847,8 @@ (match_operand:SSEMODEF4 1 "register_operand" "%x,x") (match_operand:SSEMODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:SSEMODEF4 3 "nonimmediate_operand" "xm,x")))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmadd<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1879,7 +1884,8 @@ (match_operand:SSEMODEF2P 3 "nonimmediate_operand" "xm,x")) (match_dup 0) (const_int 1)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmadd<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1893,7 +1899,8 @@ (match_operand:SSEMODEF4 1 "register_operand" "%x,x") (match_operand:SSEMODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:SSEMODEF4 3 "nonimmediate_operand" "xm,x")))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsub<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1929,7 +1936,8 @@ (match_operand:SSEMODEF2P 3 "nonimmediate_operand" "xm,x")) (match_dup 0) (const_int 1)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsub<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1945,7 +1953,8 @@ (mult:SSEMODEF4 (match_operand:SSEMODEF4 1 "register_operand" "%x,x") (match_operand:SSEMODEF4 2 "nonimmediate_operand" "x,m"))))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmadd<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1981,7 +1990,8 @@ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "x,m"))) (match_dup 0) (const_int 1)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmadd<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -1997,7 +2007,8 @@ (match_operand:SSEMODEF4 1 "register_operand" "%x,x")) (match_operand:SSEMODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:SSEMODEF4 3 "nonimmediate_operand" "xm,x")))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmsub<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2037,7 +2048,8 @@ (match_operand:SSEMODEF2P 3 "nonimmediate_operand" "xm,x")) (match_dup 0) (const_int 1)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmsub<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2053,7 +2065,8 @@ (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:FMA4MODEF4 3 "nonimmediate_operand" "xm,x"))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmadd<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2067,7 +2080,8 @@ (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:FMA4MODEF4 3 "nonimmediate_operand" "xm,x"))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsub<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2081,7 +2095,8 @@ (match_operand:FMA4MODEF4 1 "register_operand" "%x,x") (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmadd<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2096,7 +2111,8 @@ (match_operand:FMA4MODEF4 2 "nonimmediate_operand" "x,m")) (match_operand:FMA4MODEF4 3 "nonimmediate_operand" "xm,x"))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmsub<fma4modesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2111,7 +2127,8 @@ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "x,m")) (match_operand:SSEMODEF2P 3 "nonimmediate_operand" "xm,x"))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmadd<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2125,7 +2142,8 @@ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "x,m")) (match_operand:SSEMODEF2P 3 "nonimmediate_operand" "xm,x"))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsub<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2139,7 +2157,8 @@ (match_operand:SSEMODEF2P 1 "register_operand" "%x,x") (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "x,m")))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmadd<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2154,7 +2173,8 @@ (match_operand:SSEMODEF2P 2 "nonimmediate_operand" "x,m")) (match_operand:SSEMODEF2P 3 "nonimmediate_operand" "xm,x"))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmsub<ssemodesuffixf4>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<MODE>")]) @@ -2173,7 +2193,8 @@ (match_dup 0) (const_int 1))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmadd<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<ssescalarmode>")]) @@ -2190,7 +2211,8 @@ (match_dup 0) (const_int 1))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsub<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<ssescalarmode>")]) @@ -2207,7 +2229,8 @@ (match_dup 0) (const_int 1))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmadd<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<ssescalarmode>")]) @@ -2225,7 +2248,8 @@ (match_dup 0) (const_int 1))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfnmsub<ssemodesuffixf2s>\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "<ssescalarmode>")]) @@ -2250,7 +2274,8 @@ (match_dup 2)) (match_dup 3)) (const_int 170)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V8SF")]) @@ -2269,7 +2294,8 @@ (match_dup 2)) (match_dup 3)) (const_int 10)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4DF")]) @@ -2288,7 +2314,8 @@ (match_dup 2)) (match_dup 3)) (const_int 10)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4SF")]) @@ -2307,7 +2334,8 @@ (match_dup 2)) (match_dup 3)) (const_int 2)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V2DF")]) @@ -2326,7 +2354,8 @@ (match_dup 2)) (match_dup 3)) (const_int 85)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V8SF")]) @@ -2345,7 +2374,8 @@ (match_dup 2)) (match_dup 3)) (const_int 5)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4DF")]) @@ -2364,7 +2394,8 @@ (match_dup 2)) (match_dup 3)) (const_int 5)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4SF")]) @@ -2383,7 +2414,8 @@ (match_dup 2)) (match_dup 3)) (const_int 1)))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V2DF")]) @@ -2406,7 +2438,8 @@ (match_dup 3)) (const_int 170))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V8SF")]) @@ -2427,7 +2460,8 @@ (match_dup 3)) (const_int 10))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4DF")]) @@ -2448,7 +2482,8 @@ (match_dup 3)) (const_int 10))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4SF")]) @@ -2469,7 +2504,8 @@ (match_dup 3)) (const_int 2))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmaddsubpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V2DF")]) @@ -2490,7 +2526,8 @@ (match_dup 3)) (const_int 85))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V8SF")]) @@ -2511,7 +2548,8 @@ (match_dup 3)) (const_int 5))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4DF")]) @@ -2532,7 +2570,8 @@ (match_dup 3)) (const_int 5))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddps\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V4SF")]) @@ -2553,7 +2592,8 @@ (match_dup 3)) (const_int 1))] UNSPEC_FMA4_INTRINSIC))] - "TARGET_FMA4 && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "TARGET_FMA4 && TARGET_FUSED_MADD + && !(MEM_P (operands[2]) && MEM_P (operands[3]))" "vfmsubaddpd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "V2DF")]) |