This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
S/390: Remove old-style peepholes
- From: "Ulrich Weigand" <Ulrich dot Weigand at de dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 25 Oct 2002 14:33:34 +0200
- Subject: S/390: Remove old-style peepholes
- Sensitivity:
Hello,
this patch removes all old-style peepholes that were still left
in s390.md. These should all be obsolete due to improvements
in earlier optimizations; and indeed cc1, libgcc, libstdc++, and
glibc built with or without them have the same sizes ...
Bootstrapped/regtested on s390-ibm-linux and s390x-ibm-linux.
ChangeLog:
* config/s390/s390.md: Remove old-style peepholes.
Index: gcc/config/s390/s390.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/s390/s390.md,v
retrieving revision 1.39
diff -c -p -r1.39 s390.md
*** gcc/config/s390/s390.md 24 Oct 2002 20:19:10 -0000 1.39
--- gcc/config/s390/s390.md 24 Oct 2002 21:11:40 -0000
***************
*** 6828,6976 ****
(set_attr "length" "6")
(set_attr "type" "integer")])
-
- ;;
- ;; Peephole optimization patterns.
- ;;
-
- (define_peephole
- [(set (match_operand:SI 0 "memory_operand" "m")
- (match_operand:SI 1 "register_operand" "d"))
- (set (match_dup 1)
- (match_dup 0))]
- ""
- "st\\t%1,%0")
-
- (define_peephole
- [(set (match_operand:SI 0 "memory_operand" "m")
- (match_operand:SI 1 "register_operand" "d"))
- (set (match_dup 0)
- (match_dup 1))]
- ""
- "st\\t%1,%0")
-
- (define_peephole
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operand:SI 1 "register_operand" ""))
- (parallel
- [(set (match_dup 0)
- (plus:SI (match_dup 0)
- (match_operand:SI 2 "immediate_operand" "")))
- (clobber (reg:CC 33))])]
- "(REGNO (operands[0]) == STACK_POINTER_REGNUM ||
- REGNO (operands[1]) == STACK_POINTER_REGNUM ||
- REGNO (operands[0]) == BASE_REGISTER ||
- REGNO (operands[1]) == BASE_REGISTER) &&
- INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 4096"
- "la\\t%0,%c2(%1)")
-
- ;
- ; peepholes for fast char instructions
- ;
-
- ;(define_peephole
- ; [(set (match_operand:QI 0 "register_operand" "d")
- ; (match_operand:QI 1 "s_operand" "Q"))
- ; (set (match_operand:SI 2 "register_operand" "0")
- ; (zero_extend:SI (match_dup 0)))]
- ; "REGNO(operands[0]) == REGNO(operands[2])"
- ; "icm\\t%0,8,%1\;srl\\t%0,24")
-
- ;(define_peephole
- ; [(set (match_operand:QI 0 "register_operand" "d")
- ; (match_operand:QI 1 "s_operand" "Q"))
- ; (set (match_operand:SI 2 "register_operand" "0")
- ; (sign_extend:SI (match_dup 0)))]
- ; "REGNO(operands[0]) == REGNO(operands[2])"
- ; "icm\\t%0,8,%1\;sra\\t%0,24")
-
- (define_peephole
- [(set (match_operand:QI 0 "register_operand" "d")
- (match_operand:QI 1 "immediate_operand" "J"))
- (set (match_operand:SI 2 "register_operand" "0" )
- (sign_extend:SI (match_dup 0) ) )]
- "REGNO(operands[0]) == REGNO(operands[2])"
- "lhi\\t%0,%h1")
-
- ;
- ; peepholes for fast short instructions
- ;
-
- ;(define_peephole
- ; [(set (match_operand:HI 0 "register_operand" "d")
- ; (match_operand:HI 1 "s_operand" "Q"))
- ; (set (match_operand:SI 2 "register_operand" "0" )
- ; (zero_extend:SI (match_dup 0)))]
- ; "REGNO(operands[0]) == REGNO(operands[2])"
- ; "icm\\t%0,12,%1\;srl\\t%0,16")
-
- (define_peephole
- [(set (match_operand:HI 0 "register_operand" "d")
- (match_operand:HI 1 "memory_operand" "m"))
- (set (match_operand:SI 2 "register_operand" "0" )
- (sign_extend:SI (match_dup 0)))]
- "REGNO(operands[0]) == REGNO(operands[2])"
- "lh\\t%0,%1")
-
- (define_peephole
- [(set (match_operand:HI 0 "register_operand" "d")
- (match_operand:HI 1 "immediate_operand" "K"))
- (set (match_operand:SI 2 "register_operand" "0" )
- (sign_extend:SI (match_dup 0) ) )]
- "REGNO(operands[0]) == REGNO(operands[2])"
- "lhi\\t%0,%h1")
-
- ;
- ; peepholes for divide instructions
- ;
-
- (define_peephole
- [(set (match_operand:DI 0 "register_operand" "d")
- (match_operand:DI 1 "memory_operand" "m"))
- (set (match_dup 0)
- (lshiftrt:DI (match_dup 0)
- (match_operand:SI 2 "immediate_operand" "J")))
- (set (match_dup 0)
- (div:SI (match_dup 0)
- (match_operand:SI 3 "nonimmediate_operand" "g")))
- (set (match_dup 1)
- (match_dup 0))]
- ""
- "*
- {
- output_asm_insn (\"l\\t%0,%1\", operands);
- output_asm_insn (\"srdl\\t%0,%b2\", operands);
-
- if (REG_P (operands[3]))
- output_asm_insn (\"dr\\t%0,%3\", operands);
- else
- output_asm_insn (\"d\\t%0,%3\", operands);
-
- return \"st\\t%N0,%N1\";
- }")
-
- (define_peephole
- [(set (match_operand:DI 0 "register_operand" "d")
- (match_operand:DI 1 "memory_operand" "m"))
- (set (match_dup 0)
- (lshiftrt:DI (match_dup 0)
- (match_operand:SI 2 "immediate_operand" "J")))
- (set (match_dup 0)
- (mod:SI (match_dup 0)
- (match_operand:SI 3 "nonimmediate_operand" "g")))
- (set (match_dup 1)
- (match_dup 0))]
- ""
- "*
- {
- output_asm_insn (\"l\\t%0,%1\", operands);
- output_asm_insn (\"srdl\\t%0,%b2\", operands);
-
- if (REG_P (operands[3]))
- output_asm_insn (\"dr\\t%0,%3\", operands);
- else
- output_asm_insn (\"d\\t%0,%3\", operands);
-
- return \"st\\t%0,%1\";
- }")
-
--- 6828,6830 ----
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand
Linux for S/390 Design & Development
IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032 Boeblingen
Phone: +49-7031/16-3727 --- Email: Ulrich.Weigand@de.ibm.com