From patchwork Tue Apr 30 15:11:27 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Greenhalgh X-Patchwork-Id: 240641 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 7AF6D2C00CC for ; Wed, 1 May 2013 01:11:43 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:mime-version:content-type; q=dns; s=default; b=LDRSx39nBbdwGvb8HZFbHn7vG+ykjk5ygkaw57rkXVdr+km6MM 5qM2qZusUHfqGglGcLxTVcyb0BSvTHVnEFL/ZfvVcxCwTthT/lNUfIVCnMzb+Zja b3m7e04iDtTDG3D+tkfNiryrDKexHOq6xNBZk5aOazy9fIKeD3GQWwpTI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:mime-version:content-type; s= default; bh=Cs9pZ/ICBtFgUPIqCgs86lHVuEY=; b=oKm7+FrHexpOQrwU1Ld9 +e9ha4p7gqKILpGqn35QDzLgzrN+5KgwT9S6zzup2gKwJGGCVlP+0WwBel33vSD7 YeLeL6+rSROdCeAks/ya6qQaLK9QHRHaHD9TX5hJ4656zUHZBGBY0uVvUon//bWR GV7xLykCRs6ZWbkus5M0WtU= Received: (qmail 32760 invoked by alias); 30 Apr 2013 15:11:36 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 32751 invoked by uid 89); 30 Apr 2013 15:11:35 -0000 X-Spam-SWARE-Status: No, score=-4.7 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_W, RCVD_IN_HOSTKARMA_WL, SPF_PASS autolearn=ham version=3.3.1 Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 30 Apr 2013 15:11:35 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 30 Apr 2013 16:11:32 +0100 Received: from e106375-lin.cambridge.arm.com ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Tue, 30 Apr 2013 16:11:32 +0100 From: James Greenhalgh To: gcc-patches@gcc.gnu.org Cc: marcus.shawcroft@arm.com Subject: [AArch64] Add combiner patterns for FAC instructions Date: Tue, 30 Apr 2013 16:11:27 +0100 Message-Id: <1367334687-22919-1-git-send-email-james.greenhalgh@arm.com> MIME-Version: 1.0 X-MC-Unique: 113043016113216501 X-Virus-Found: No Hi, This patch adds patterns to allow the combiner to generate FAC instructions. Regression tested on aarch64-none-elf with no regressions. OK? Thanks, James --- gcc/ 2013-04-30 James Greenhalgh * config/aarch64/aarch64-simd.md (*aarch64_fac): New. * config/aarch64/iterators.md (FAC_COMPARISONS): New. diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index dfe4acb..21c2a68 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -3400,6 +3400,23 @@ (set_attr "simd_mode" "")] ) +;; fac(ge|gt) +;; Note we can also handle what would be fac(le|lt) by +;; generating fac(ge|gt). + +(define_insn "*aarch64_fac" + [(set (match_operand: 0 "register_operand" "=w") + (neg: + (FAC_COMPARISONS: + (abs:VALLF (match_operand:VALLF 1 "register_operand" "w")) + (abs:VALLF (match_operand:VALLF 2 "register_operand" "w")) + )))] + "TARGET_SIMD" + "fac\t%0, %, %" + [(set_attr "simd_type" "simd_fcmp") + (set_attr "simd_mode" "")] +) + ;; addp (define_insn "aarch64_addp" diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 0b9f9e8..00e315d 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -553,6 +553,9 @@ ;; Unsigned comparison operators. (define_code_iterator UCOMPARISONS [ltu leu geu gtu]) +;; Unsigned comparison operators. +(define_code_iterator FAC_COMPARISONS [lt le ge gt]) + ;; ------------------------------------------------------------------- ;; Code Attributes ;; -------------------------------------------------------------------