aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2007-09-12 09:02:31 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2007-09-12 07:02:31 +0000
commitbf019a1f7f992a1feb985c4b656e527475e73a30 (patch)
treeeda760ba164c77124e8505afebfab187b6c69fb7 /gcc
parent926e663ef1ab111abe33fc191f2d09d3082507e8 (diff)
downloadgcc-bf019a1f7f992a1feb985c4b656e527475e73a30.zip
gcc-bf019a1f7f992a1feb985c4b656e527475e73a30.tar.gz
gcc-bf019a1f7f992a1feb985c4b656e527475e73a30.tar.bz2
re PR target/33393 (floatsisf2_sse_vector_nointernunit doesn't work on 32bit)
PR target/33393 * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable for !SSE_MATH From-SVN: r128414
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md13
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d25f392..e74a823 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-12 Jan Hubicka <jh@suse.cz>
+
+ PR target/33393
+ * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable for
+ !SSE_MATH
+
2007-09-12 Christian Bruel <christian.bruel@st.com>
* sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
* linux-unwind.h (SH_DWARF_FRAME_GBR): fixed.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 0c625da..c29f3e3 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -3927,7 +3927,7 @@
[(set (match_operand:DF 0 "register_operand" "")
(float_extend:DF
(match_operand:SF 1 "nonimmediate_operand" "")))]
- "TARGET_USE_VECTOR_CONVERTS && !optimize_size
+ "(TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC) && !optimize_size
&& reload_completed && SSE_REG_P (operands[0])"
[(set (match_dup 2)
(float_extend:V2DF
@@ -4063,7 +4063,7 @@
[(set (match_operand:SF 0 "register_operand" "")
(float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand" "")))]
- "TARGET_USE_VECTOR_CONVERTS && !optimize_size
+ "(TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC) && !optimize_size
&& reload_completed && SSE_REG_P (operands[0])"
[(set (match_dup 2)
(vec_concat:V4SF
@@ -4876,7 +4876,8 @@
(define_insn "*floatsisf2_sse_vector_nointernunit"
[(set (match_operand:SF 0 "register_operand" "=x")
(float:SF (match_operand:SI 1 "memory_operand" "m")))]
- "flag_trapping_math && TARGET_USE_VECTOR_CONVERTS && !optimize_size
+ "TARGET_SSE_MATH && flag_trapping_math
+ && TARGET_USE_VECTOR_CONVERTS && !optimize_size
&& !TARGET_INTER_UNIT_MOVES"
"#"
[(set_attr "type" "multi")])
@@ -4884,7 +4885,8 @@
(define_insn "*floatsisf2_sse_vector_internunit"
[(set (match_operand:SF 0 "register_operand" "=x,x")
(float:SF (match_operand:SI 1 "nonimmediate_operand" "rm,x")))]
- "flag_trapping_math && TARGET_USE_VECTOR_CONVERTS && !optimize_size
+ "TARGET_SSE_MATH && flag_trapping_math
+ && TARGET_USE_VECTOR_CONVERTS && !optimize_size
&& TARGET_INTER_UNIT_MOVES"
"#"
[(set_attr "type" "multi")])
@@ -4921,7 +4923,8 @@
(define_insn "*floatsisf2_sse_vector"
[(set (match_operand:SF 0 "register_operand" "=x")
(float:SF (match_operand:SI 1 "register_operand" "x")))]
- "!flag_trapping_math && TARGET_USE_VECTOR_CONVERTS && !optimize_size
+ "TARGET_SSE_MATH && !flag_trapping_math
+ && TARGET_USE_VECTOR_CONVERTS && !optimize_size
&& !TARGET_INTER_UNIT_MOVES"
"cvtdq2ps\t{%1, %0|%0, %1}"
[(set_attr "type" "sseicvt")