diff options
author | Eric Christopher <echristo@apple.com> | 2007-06-14 21:43:45 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gcc.gnu.org> | 2007-06-14 21:43:45 +0000 |
commit | 5eafdd32daa76b989be4386ab641ac6be6034ee0 (patch) | |
tree | afd7d0e47d1ee723820c01ca4eae2c6b7a226b27 /gcc | |
parent | c96f00012ba9b81dba57042a29361ecd0a99e284 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 20 |
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") |