From 3cce8bc65cfe0e5d4edbe644fce071755184db0c Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Wed, 30 Apr 1997 16:45:13 -0700 Subject: (paradoxical_extendhidi2, paradoxical_extendqidi2): New patterns. From-SVN: r13995 --- gcc/config/mips/mips.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'gcc') diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index d74edf7..1abd60b 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -2497,6 +2497,36 @@ move\\t%0,%z4\\n\\ (set_attr "mode" "DI") (set_attr "length" "1,1,2")]) +;; These can be created when a paradoxical subreg operand with an implicit +;; sign_extend operator is reloaded. Because of the subreg, this is really +;; a zero extend. +;; ??? It might be possible to eliminate the need for these patterns by adding +;; more support to reload for implicit sign_extend operators. +(define_insn "*paradoxical_extendhidi2" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (sign_extend:DI + (subreg:SI (match_operand:HI 1 "memory_operand" "R,m") 0)))] + "TARGET_64BIT" + "* +{ + return mips_move_1word (operands, insn, TRUE); +}" + [(set_attr "type" "load,load") + (set_attr "mode" "DI") + (set_attr "length" "1,2")]) + +(define_insn "*paradoxical_extendqidi2" + [(set (match_operand:DI 0 "register_operand" "=d,d") + (sign_extend:DI + (subreg:SI (match_operand:QI 1 "memory_operand" "R,m") 0)))] + "TARGET_64BIT" + "* +{ + return mips_move_1word (operands, insn, TRUE); +}" + [(set_attr "type" "load,load") + (set_attr "mode" "DI") + (set_attr "length" "1,2")]) ;; ;; .................... -- cgit v1.1