This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

S/390: Remove old-style peepholes


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]