From 864962bd13d3c56213579ce9676b3c5d8ff11ff4 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 10 Dec 2001 14:21:03 -0800 Subject: [PATCH] alpha.md (unaligned_extendhidi): Call gen_lowpart instead of hardcoding subregs into the _be and _le patterns. * config/alpha/alpha.md (unaligned_extendhidi): Call gen_lowpart instead of hardcoding subregs into the _be and _le patterns. From-SVN: r47852 --- gcc/ChangeLog | 5 +++++ gcc/config/alpha/alpha.md | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d13270b45d6..3ca218db100 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-12-10 Richard Henderson + + * config/alpha/alpha.md (unaligned_extendhidi): Call gen_lowpart + instead of hardcoding subregs into the _be and _le patterns. + 2001-12-10 Neil Booth * c-lex.c, c-parse.in, c-typeck.c: Revert concatenation changes. diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index c9dbbaea737..b4a31ba31f5 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -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" { -- 2.30.2