From 977eef43d8891a481186c971a46cec0c619c8e2d Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Mon, 14 Apr 1997 14:57:14 -0700 Subject: (xtrct_left, xtrct_right): New patterns. From-SVN: r13904 --- gcc/config/sh/sh.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'gcc') diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 342b3e4..e5ee868 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -1296,6 +1296,26 @@ (const_string "14"))) (set_attr "type" "arith")]) +;; These patterns are found in expansions of DImode shifts by 16, and +;; allow the xtrct instruction to be generated from C source. + +(define_insn "xtrct_left" + [(set (match_operand:SI 0 "arith_reg_operand" "=r") + (ior:SI (ashift:SI (match_operand:SI 1 "arith_reg_operand" "r") + (const_int 16)) + (lshiftrt:SI (match_operand:SI 2 "arith_reg_operand" "0") + (const_int 16))))] + "" + "xtrct %1,%0") + +(define_insn "xtrct_right" + [(set (match_operand:SI 0 "arith_reg_operand" "=r") + (ior:SI (lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0") + (const_int 16)) + (ashift:SI (match_operand:SI 2 "arith_reg_operand" "r") + (const_int 16))))] + "" + "xtrct %2,%0") ;; ------------------------------------------------------------------------- ;; Unary arithmetic -- cgit v1.1