diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-06-18 14:26:15 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-06-18 14:26:15 +0000 |
commit | 6fffe29cf39a7308ec331c60b4a4500fa6f27007 (patch) | |
tree | 00998262f78232c9c90e61d65411e3d59003779e /gcc/config/vax/vax.md | |
parent | b2bc10f73ae4f06efba43fe9779e1483afa98168 (diff) | |
download | gcc-6fffe29cf39a7308ec331c60b4a4500fa6f27007.tar.gz |
(lshrsi3): New define_expand.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@7513 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/vax/vax.md')
-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 5b3dec63bc3..ce0f067f129 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") |