re PR target/19518 ([alpha] unrecognizable insn (set (reg:V4HI) (const_vector:V4HI...
authorRichard Henderson <rth@redhat.com>
Thu, 20 Jan 2005 03:59:00 +0000 (19:59 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 20 Jan 2005 03:59:00 +0000 (19:59 -0800)
commit72910a0b3b6c68d3ca4d636b9a06923c07a45df8
treecda4b7c4fa5fd8c63fdd336bd609206fd5423cd2
parentae7271294d9e2aeba1b08f7e3871c1ce7fa36dd8
re PR target/19518 ([alpha] unrecognizable insn (set (reg:V4HI) (const_vector:V4HI)) with builtins)

        PR target/19518
        * config/alpha/alpha.c (alpha_rtx_costs): Handle HIGH.
        (alpha_preferred_reload_class): Handle CONST_VECTOR.
        (alpha_emit_set_const_1): Add no_output parameter; don't emit
        rtl if true.
        (alpha_emit_set_const): Likewise.  Make static.
        (alpha_emit_set_long_const): Make static.
        (alpha_extract_integer): Split out from alpha_expand_mov.
        (alpha_split_const_mov): Likewise.
        (alpha_expand_mov): Use them.  Handle CONST_VECTOR.
        (alpha_legitimate_constant_p): New.
        * config/alpha/alpha-protos.h: Update.
        * config/alpha/alpha.h (REGISTER_MOVE_COST): Correct fp<->gp cost.
        (LEGITIMATE_CONSTANT_P): Re-implement with a function.
        * config/alpha/alpha.md (movsi): Add n alternative.
        (movsi_nt_vms, movdi_er_nofix, movdi_er_fix, movdi_fix): Likewise.
        (mov<VEC>_fix, mov<VEC>_nofix): Add i alternative.
        (splitters for all of the above): Use alpha_split_const_mov.
        * config/alpha/predicates.md (non_add_const_operand): New.
        (non_zero_const_operand): New.
        (input_operand): Use alpha_legitimate_constant_p after reload.

From-SVN: r93943
gcc/ChangeLog
gcc/config/alpha/alpha-protos.h
gcc/config/alpha/alpha.c
gcc/config/alpha/alpha.h
gcc/config/alpha/alpha.md
gcc/config/alpha/predicates.md
gcc/testsuite/gcc.target/alpha/alpha.exp [new file with mode: 0644]
gcc/testsuite/gcc.target/alpha/pr19518.c [new file with mode: 0644]