diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-18 10:26:15 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-18 10:26:15 -0400 |
commit | 572e10f482971d72bfe077c25063c26ece0c89b4 (patch) | |
tree | 00998262f78232c9c90e61d65411e3d59003779e | |
parent | 73d9a835b6f9e8089999bf50b00ff3e1ac1ff1b1 (diff) | |
download | gcc-572e10f482971d72bfe077c25063c26ece0c89b4.zip gcc-572e10f482971d72bfe077c25063c26ece0c89b4.tar.gz gcc-572e10f482971d72bfe077c25063c26ece0c89b4.tar.bz2 |
(lshrsi3): New define_expand.
From-SVN: r7513
-rw-r--r-- | gcc/config/vax/vax.md | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 5b3dec6..ce0f067 100644 --- a/gcc/config/vax/vax.md +++ b/gcc/config/vax/vax.md @@ -1253,6 +1253,26 @@ "" "ashq %2,%1,%0") +;; We used to have expand_shift handle logical right shifts by using extzv, +;; but this make it very difficult to do lshrdi3. Since the VAX is the +;; only machine with this kludge, it's better to just do this with a +;; define_expand and remove that case from expand_shift. + +(define_expand "lshrsi3" + [(set (match_dup 3) + (minus:QI (const_int 32) + (match_dup 4))) + (set (match_operand:SI 0 "general_operand" "=g") + (zero_extract:SI (match_operand:SI 1 "nonmemory_operand" "r") + (match_dup 3) + (match_operand:SI 2 "register_operand" "g")))] + "" + " +{ + operands[3] = gen_reg_rtx (QImode); + operands[4] = gen_lowpart (QImode, operands[2]); +}") + ;; Rotate right on the vax works by negating the shift count. (define_expand "rotrsi3" [(set (match_operand:SI 0 "general_operand" "=g") |