aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2007-06-14 21:43:45 +0000
committerEric Christopher <echristo@gcc.gnu.org>2007-06-14 21:43:45 +0000
commit5eafdd32daa76b989be4386ab641ac6be6034ee0 (patch)
treeafd7d0e47d1ee723820c01ca4eae2c6b7a226b27
parentc96f00012ba9b81dba57042a29361ecd0a99e284 (diff)
downloadgcc-5eafdd32daa76b989be4386ab641ac6be6034ee0.zip
gcc-5eafdd32daa76b989be4386ab641ac6be6034ee0.tar.gz
gcc-5eafdd32daa76b989be4386ab641ac6be6034ee0.tar.bz2
sse.md (movdi_to_sse): Rewrite body.
2007-06-14 Eric Christopher <echristo@apple.com> * config/i386/sse.md (movdi_to_sse): Rewrite body. (movv4sf): Use gcc_unreachable instead of abort. From-SVN: r125723
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/sse.md20
2 files changed, 12 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 037e51c..5ac574e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-06-14 Eric Christopher <echristo@apple.com>
+
+ * config/i386/sse.md (movdi_to_sse): Rewrite body.
+ (movv4sf): Use gcc_unreachable instead of abort.
+
2007-06-14 Uros Bizjak <ubizjak@gmail.com>
PR target/32268
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 2a4606f..c74c0f7 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -108,9 +108,8 @@
"&& reload_completed"
[(const_int 0)]
{
- switch (which_alternative)
- {
- case 0:
+ if (register_operand (operands[1], DImode))
+ {
/* The DImode arrived in a pair of integral registers (e.g. %edx:%eax).
Assemble the 64-bit DImode value in an xmm register. */
emit_insn (gen_sse2_loadld (operands[0], CONST0_RTX (V4SImode),
@@ -118,16 +117,11 @@
emit_insn (gen_sse2_loadld (operands[2], CONST0_RTX (V4SImode),
gen_rtx_SUBREG (SImode, operands[1], 4)));
emit_insn (gen_sse2_punpckldq (operands[0], operands[0], operands[2]));
- break;
-
- case 1:
- emit_insn (gen_vec_concatv2di (operands[0], operands[1], const0_rtx));
- break;
-
- default:
- gcc_unreachable ();
}
- DONE;
+ else if (memory_operand (operands[1], DImode))
+ emit_insn (gen_vec_concatv2di (gen_lowpart (V2DImode, operands[0]), operands[1], const0_rtx));
+ else
+ gcc_unreachable ();
})
(define_expand "movv4sf"
@@ -154,7 +148,7 @@
case 2:
return "movaps\t{%1, %0|%0, %1}";
default:
- abort();
+ gcc_unreachable ();
}
}
[(set_attr "type" "sselog1,ssemov,ssemov")