From 1c2bdc600335e005b891b65c98e9c3087fd9c9c4 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 11 Apr 1994 18:20:53 -0400 Subject: [PATCH] (compare define_split): Fix bugs in last addition. From-SVN: r7037 --- gcc/config/alpha/alpha.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 7f2999f..f42cda6 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -1,6 +1,6 @@ -;;- Machine description for DEC Alpha for GNU C compiler -;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -;; Contributed by Richard Kenner (kenner@nyu.edu) +;; Machine description for DEC Alpha for GNU C compiler +;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) ;; This file is part of GNU CC. @@ -2233,7 +2233,7 @@ operands[4], const0_rtx); }") -;; We can convert such things as "a > 0xffff" to "t = a & 0xffff; t != 0". +;; We can convert such things as "a > 0xffff" to "t = a & ~ 0xffff; t != 0". ;; This eliminates one, and sometimes two, insns when the AND can be done ;; with a ZAP. (define_split @@ -2247,13 +2247,14 @@ || GET_CODE (operands[1]) == LEU || ((GET_CODE (operands[1]) == GT || GET_CODE (operands[1]) == LE) && extended_count (operands[2], DImode, 1) > 0))" - [(set (match_dup 4) (and:DI (match_dup 2) (match_dup 3))) - (set (match_dup 0) (match_dup 5))] + [(set (match_dup 4) (and:DI (match_dup 2) (match_dup 5))) + (set (match_dup 0) (match_dup 6))] " { - operands[5] = gen_rtx (((GET_CODE (operands[1]) == GTU + operands[5] = GEN_INT (~ INTVAL (operands[3])); + operands[6] = gen_rtx (((GET_CODE (operands[1]) == GTU || GET_CODE (operands[1]) == GE) - ? NE : LE), + ? NE : EQ), DImode, operands[4], const0_rtx); }") -- 2.7.4