diff options
author | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-08-17 07:44:30 +0000 |
---|---|---|
committer | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-08-17 07:44:30 +0000 |
commit | ab6506a57d0e914f11a50a123620b9c13abc7377 (patch) | |
tree | e379063db0ee713726eda97d22f29bb69dce68a4 /gcc/config/vax/vax.md | |
parent | 79613d1b43d8ebdfa5be87170981ea95ec93e419 (diff) | |
download | gcc-ab6506a57d0e914f11a50a123620b9c13abc7377.tar.gz |
(casesi1): Renamed from casesi.
(casesi): New trivial define_expand invokes casesi1.
(movstrhi, movstrhi1): Analogous change.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1863 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/vax/vax.md')
-rw-r--r-- | gcc/config/vax/vax.md | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 9144ee559ac..2555780755e 100644 --- a/gcc/config/vax/vax.md +++ b/gcc/config/vax/vax.md @@ -333,11 +333,24 @@ return \"movb %1,%0\"; }") +;; This is here to accept 4 arguments and pass the first 3 along +;; to the movstrhi1 pattern that really does the work. +(define_expand "movstrhi" + [(set (match_operand:BLK 0 "general_operand" "=g") + (match_operand:BLK 1 "general_operand" "g")) + (use (match_operand:HI 2 "general_operand" "g")) + (match_operand 3 "" "")] + "" + " + emit_insn (gen_movstrhi1 (operands[0], operands[1], operands[2])); + DONE; +") + ;; The definition of this insn does not really explain what it does, ;; but it should suffice ;; that anything generated as this insn will be recognized as one ;; and that it won't successfully combine with anything. -(define_insn "movstrhi" +(define_insn "movstrhi1" [(set (match_operand:BLK 0 "general_operand" "=g") (match_operand:BLK 1 "general_operand" "g")) (use (match_operand:HI 2 "general_operand" "g")) @@ -1853,7 +1866,29 @@ "" "jmp (%0)") -(define_insn "casesi" +;; This is here to accept 5 arguments (as passed by expand_end_case) +;; and pass the first 4 along to the casesi1 pattern that really does the work. +(define_expand "casesi" + [(set (pc) + (if_then_else (leu (minus:SI (match_operand:SI 0 "general_operand" "g") + (match_operand:SI 1 "general_operand" "g")) + (match_operand:SI 2 "general_operand" "g")) + (plus:SI (sign_extend:SI + (mem:HI + (plus:SI (pc) + (mult:SI (minus:SI (match_dup 0) + (match_dup 1)) + (const_int 2))))) + (label_ref:SI (match_operand 3 "" ""))) + (pc))) + (match_operand 4 "" "")] + "" + " + emit_insn (gen_casesi1 (operands[0], operands[1], operands[2], operands[3])); + DONE; +") + +(define_insn "casesi1" [(set (pc) (if_then_else (leu (minus:SI (match_operand:SI 0 "general_operand" "g") (match_operand:SI 1 "general_operand" "g")) |