OSDN Git Service

* config/alpha/alpha.md (unaligned_extendhidi): Call gen_lowpart
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Dec 2001 22:21:03 +0000 (22:21 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Dec 2001 22:21:03 +0000 (22:21 +0000)
        instead of hardcoding subregs into the _be and _le patterns.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47852 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/alpha.md

index d13270b..3ca218d 100644 (file)
@@ -1,3 +1,8 @@
+2001-12-10  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.md (unaligned_extendhidi): Call gen_lowpart
+       instead of hardcoding subregs into the _be and _le patterns.
+
 2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * c-lex.c, c-parse.in, c-typeck.c: Revert concatenation changes.
index c9dbbae..b4a31ba 100644 (file)
@@ -1806,10 +1806,10 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
    (use (match_operand:DI 1 "address_operand" ""))]
   ""
 {
-  if (WORDS_BIG_ENDIAN)
-    emit_insn (gen_unaligned_extendhidi_be (operands[0], operands[1]));
-  else
-    emit_insn (gen_unaligned_extendhidi_le (operands[0], operands[1]));
+  operands[0] = gen_lowpart (DImode, operands[0]);
+  emit_insn ((WORDS_BIG_ENDIAN
+             ? gen_unaligned_extendhidi_be
+             : gen_unaligned_extendhidi_le) (operands[0], operands[1]));
   DONE;
 })
 
@@ -1824,7 +1824,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
                             (ashift:DI
                              (and:DI (match_dup 2) (const_int 7))
                              (const_int 3)))))
-   (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+   (set (match_operand:DI 0 "register_operand" "")
        (ashiftrt:DI (match_dup 4) (const_int 48)))]
   "! WORDS_BIG_ENDIAN"
 {
@@ -1847,7 +1847,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
                       (plus:DI (match_dup 5) (const_int 1))
                       (const_int 7))
                     (const_int 3))))
-   (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+   (set (match_operand:DI 0 "register_operand" "")
        (ashiftrt:DI (match_dup 6) (const_int 48)))]
   "WORDS_BIG_ENDIAN"
 {