From patchwork Thu Feb 2 12:20:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Krebbel X-Patchwork-Id: 722985 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.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vDfGs5c6Bz9s7H for ; Thu, 2 Feb 2017 23:20:48 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="UaYGxvYs"; dkim-atps=neutral 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:subject:date:message-id; q=dns; s=default; b=BPTinQSYB0xrTP2 ORgmiK92x/ldP4kq9rC0BO0f+z3g+nt0HXXDhkMjW0aszwvnDSAFCGiCp4DR3EEh jNXY3aWyxP/qwVYb8EOwGHu2TwpgfK0TQOtiSdhZoi0ZycFSLq/sma2o0Mh3PeQw kC2F2M3CPR4+2w2WPeChwwcS3iDU= 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:subject:date:message-id; s=default; bh=TCFruTOvjYZb9qL6RdE0H u4Wq9I=; b=UaYGxvYsTdpbBG9yO5TOFwBNr3zmG2QdN26YCjc9pWfoiF+dSypku 4lfDB5LL8T4qqffQajCH5nb4T/hgyhRycwiLtF5mDR1gcvQZavkxlEYwgxtuH+NT QIbV/Pt6AfMiDzVhqMl6xRIPmCYl7/L+E+mqXrbeV2eIhJXaeimap0= Received: (qmail 3614 invoked by alias); 2 Feb 2017 12:20:38 -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 3521 invoked by uid 89); 2 Feb 2017 12:20:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.9 required=5.0 tests=AWL, BAYES_50, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=41706, sk:krebbel, dr, 1676 X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.156.1) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 02 Feb 2017 12:20:27 +0000 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v12CIgTf059251 for ; Thu, 2 Feb 2017 07:20:25 -0500 Received: from e06smtp06.uk.ibm.com (e06smtp06.uk.ibm.com [195.75.94.102]) by mx0a-001b2d01.pphosted.com with ESMTP id 28c08gt06d-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 02 Feb 2017 07:20:24 -0500 Received: from localhost by e06smtp06.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 2 Feb 2017 12:20:22 -0000 Received: from d06dlp01.portsmouth.uk.ibm.com (9.149.20.13) by e06smtp06.uk.ibm.com (192.168.101.136) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 2 Feb 2017 12:20:20 -0000 Received: from b06cxnps3074.portsmouth.uk.ibm.com (d06relay09.portsmouth.uk.ibm.com [9.149.109.194]) by d06dlp01.portsmouth.uk.ibm.com (Postfix) with ESMTP id 1875D17D805D for ; Thu, 2 Feb 2017 12:23:21 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v12CKJbh14942598 for ; Thu, 2 Feb 2017 12:20:19 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 790624C040 for ; Thu, 2 Feb 2017 12:20:14 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 542364C04A for ; Thu, 2 Feb 2017 12:20:14 +0000 (GMT) Received: from maggie.boeblingen.de.ibm.com (unknown [9.152.212.134]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTPS for ; Thu, 2 Feb 2017 12:20:14 +0000 (GMT) From: Andreas Krebbel To: gcc-patches@gcc.gnu.org Subject: [Committed] S/390: Add missing comments listing mnemonics. Date: Thu, 2 Feb 2017 13:20:19 +0100 X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 17020212-0024-0000-0000-000002ADCA65 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17020212-0025-0000-0000-0000224415CF Message-Id: <20170202122019.13352-1-krebbel@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-02-02_08:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1702020116 X-IsSubscribed: yes These were useful in the past but are currently lacking on a couple of patterns. Fixed with this patch. gcc/ChangeLog: 2017-02-02 Andreas Krebbel * config/s390/s390.md: Add missing comments with the expanded mnemonics. * config/s390/vector.md: Likewise. * config/s390/vx-builtins.md: Likewise. --- gcc/config/s390/s390.md | 7 +++++++ gcc/config/s390/vector.md | 9 +++++++++ gcc/config/s390/vx-builtins.md | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index e47c2e9..9bbd7e0 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -4095,6 +4095,7 @@ operands[6] = operands[0]; }) +; rosbg, rxsbg (define_insn "*rsbg__noshift" [(set (match_operand:GPR 0 "nonimmediate_operand" "=d") (IXOR:GPR @@ -4106,6 +4107,7 @@ "rsbg\t%0,%1,%2,%2,0" [(set_attr "op_type" "RIE")]) +; rosbg, rxsbg (define_insn "*rsbg_di_rotl" [(set (match_operand:DI 0 "nonimmediate_operand" "=d") (IXOR:DI @@ -4120,6 +4122,7 @@ "rsbg\t%0,%1,%2,%2,%b3" [(set_attr "op_type" "RIE")]) +; rosbg, rxsbg (define_insn "*rsbg__srl_bitmask" [(set (match_operand:GPR 0 "nonimmediate_operand" "=d") (IXOR:GPR @@ -4136,6 +4139,7 @@ "rsbg\t%0,%1,%2,%2,64-%3" [(set_attr "op_type" "RIE")]) +; rosbg, rxsbg (define_insn "*rsbg__sll_bitmask" [(set (match_operand:GPR 0 "nonimmediate_operand" "=d") (IXOR:GPR @@ -4155,6 +4159,7 @@ ;; unsigned {int,long} a, b ;; a = a | (b << const_int) ;; a = a ^ (b << const_int) +; rosbg, rxsbg (define_insn "*rsbg__sll" [(set (match_operand:GPR 0 "nonimmediate_operand" "=d") (IXOR:GPR @@ -4170,6 +4175,7 @@ ;; unsigned {int,long} a, b ;; a = a | (b >> const_int) ;; a = a ^ (b >> const_int) +; rosbg, rxsbg (define_insn "*rsbg__srl" [(set (match_operand:GPR 0 "nonimmediate_operand" "=d") (IXOR:GPR @@ -10671,6 +10677,7 @@ ; FIXME: There is also mvcin but we cannot use it since src and target ; may overlap. +; lrvr, lrv, strv, lrvgr, lrvg, strvg (define_insn "bswap2" [(set (match_operand:GPR 0 "nonimmediate_operand" "=d,d,T") (bswap:GPR (match_operand:GPR 1 "nonimmediate_operand" " d,T,d")))] diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md index d8c56d5..c4bbffc 100644 --- a/gcc/config/s390/vector.md +++ b/gcc/config/s390/vector.md @@ -144,6 +144,7 @@ (include "vx-builtins.md") ; Full HW vector size moves +; vgmb, vgmh, vgmf, vgmg, vrepib, vrepih, vrepif, vrepig (define_insn "mov" [(set (match_operand:V_128 0 "nonimmediate_operand" "=v,v,R, v, v, v, v, v,v,d") (match_operand:V_128 1 "general_operand" " v,R,v,j00,jm1,jyy,jxx,jKK,d,v"))] @@ -329,6 +330,7 @@ ; FIXME: A target memory operand seems to be useful otherwise we end ; up with vl vlvgg vst. Shouldn't the middle-end be able to handle ; that itself? +; vlvgb, vlvgh, vlvgf, vlvgg, vleb, vleh, vlef, vleg, vleib, vleih, vleif, vleig (define_insn "*vec_set" [(set (match_operand:V 0 "register_operand" "=v,v,v") (unspec:V [(match_operand: 1 "general_operand" "d,R,K") @@ -344,6 +346,7 @@ vlei\t%v0,%1,%2" [(set_attr "op_type" "VRS,VRX,VRI")]) +; vlvgb, vlvgh, vlvgf, vlvgg (define_insn "*vec_set_plus" [(set (match_operand:V 0 "register_operand" "=v") (unspec:V [(match_operand: 1 "general_operand" "d") @@ -366,6 +369,7 @@ UNSPEC_VEC_EXTRACT))] "TARGET_VX") +; vlgvb, vlgvh, vlgvf, vlgvg, vsteb, vsteh, vstef, vsteg (define_insn "*vec_extract" [(set (match_operand: 0 "nonimmediate_operand" "=d,R") (unspec: [(match_operand:V 1 "register_operand" "v,v") @@ -379,6 +383,7 @@ vste\t%v1,%0,%2" [(set_attr "op_type" "VRS,VRX")]) +; vlgvb, vlgvh, vlgvf, vlgvg (define_insn "*vec_extract_plus" [(set (match_operand: 0 "nonimmediate_operand" "=d") (unspec: [(match_operand:V 1 "register_operand" "v") @@ -399,6 +404,7 @@ }) ; Replicate from vector element +; vrepb, vreph, vrepf, vrepg (define_insn "*vec_splat" [(set (match_operand:V_HW 0 "register_operand" "=v") (vec_duplicate:V_HW @@ -410,6 +416,7 @@ "vrep\t%v0,%v1,%2" [(set_attr "op_type" "VRI")]) +; vlrepb, vlreph, vlrepf, vlrepg, vrepib, vrepih, vrepif, vrepig, vrepb, vreph, vrepf, vrepg (define_insn "*vec_splats" [(set (match_operand:V_HW 0 "register_operand" "=v,v,v,v") (vec_duplicate:V_HW (match_operand: 1 "general_operand" " R,K,v,d")))] @@ -692,6 +699,7 @@ }) ; Count leading zeros +; vclzb, vclzh, vclzf, vclzg (define_insn "clz2" [(set (match_operand:V 0 "register_operand" "=v") (clz:V (match_operand:V 1 "register_operand" "v")))] @@ -700,6 +708,7 @@ [(set_attr "op_type" "VRR")]) ; Count trailing zeros +; vctzb, vctzh, vctzf, vctzg (define_insn "ctz2" [(set (match_operand:V 0 "register_operand" "=v") (ctz:V (match_operand:V 1 "register_operand" "v")))] diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md index f2f430a..e53cca8 100644 --- a/gcc/config/s390/vx-builtins.md +++ b/gcc/config/s390/vx-builtins.md @@ -65,6 +65,7 @@ ; Vector gather element +; vgef, vgeg (define_insn "vec_gather_element" [(set (match_operand:V_HW_32_64 0 "register_operand" "=v") (unspec:V_HW_32_64 [(match_operand:V_HW_32_64 1 "register_operand" "0") @@ -167,6 +168,7 @@ ; vec_extract is also an RTL standard name -> vector.md +; vllezb, vllezh, vllezf, vllezg (define_insn "vec_insert_and_zero" [(set (match_operand:V_HW 0 "register_operand" "=v") (unspec:V_HW [(match_operand: 1 "memory_operand" "R")] @@ -187,6 +189,7 @@ ; FIXME: The following two patterns might using vec_merge. But what is ; the canonical form: (vec_select (vec_merge op0 op1)) or (vec_merge ; (vec_select op0) (vec_select op1) +; vmrhb, vmrhh, vmrhf, vmrhg (define_insn "vec_mergeh" [(set (match_operand:V_HW 0 "register_operand" "=v") (unspec:V_HW [(match_operand:V_HW 1 "register_operand" "v") @@ -196,6 +199,7 @@ "vmrh\t%v0,%1,%2" [(set_attr "op_type" "VRR")]) +; vmrlb, vmrlh, vmrlf, vmrlg (define_insn "vec_mergel" [(set (match_operand:V_HW 0 "register_operand" "=v") (unspec:V_HW [(match_operand:V_HW 1 "register_operand" "v") @@ -208,6 +212,7 @@ ; Vector pack +; vpkh, vpkf, vpkg (define_insn "vec_pack" [(set (match_operand: 0 "register_operand" "=v") (unspec: [(match_operand:VI_HW_HSD 1 "register_operand" "v") @@ -220,6 +225,7 @@ ; Vector pack saturate +; vpksh, vpksf, vpksg (define_insn "vec_packs" [(set (match_operand: 0 "register_operand" "=v") (unspec: [(match_operand:VI_HW_HSD 1 "register_operand" "v") @@ -249,6 +255,7 @@ operands[4] = gen_reg_rtx (SImode); }) +; vpksh, vpksf, vpksg (define_insn "*vec_packs_cc" [(set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_operand:VI_HW_HSD 1 "register_operand" "v") @@ -264,6 +271,7 @@ ; Vector pack logical saturate +; vpklsh, vpklsf, vpklsg (define_insn "vec_packsu" [(set (match_operand: 0 "register_operand" "=v") (unspec: [(match_operand:VI_HW_HSD 1 "register_operand" "v") @@ -322,6 +330,7 @@ operands[4] = gen_reg_rtx (SImode); }) +; vpklsh, vpklsf, vpklsg (define_insn "*vec_packsu_cc" [(set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_operand:VI_HW_HSD 1 "register_operand" "v") @@ -403,6 +412,7 @@ [(set_attr "op_type" "VRV")]) ; A 31 bit target address is generated from 64 bit elements +; vsceg (define_insn "vec_scatter_element_SI" [(set (mem: (plus:SI (subreg:SI @@ -417,6 +427,7 @@ [(set_attr "op_type" "VRV")]) ; Element size and target address size is the same +; vscef, vsceg (define_insn "vec_scatter_element_" [(set (mem: (plus: (unspec: @@ -482,6 +493,7 @@ ; Vector sign extend to doubleword ; Sign extend of right most vector element to respective double-word +; vsegb, vsegh, vsegf (define_insn "vec_extend" [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v")] @@ -551,6 +563,7 @@ ; Vector add compute carry +; vaccb, vacch, vaccf, vaccg, vaccq (define_insn "vacc_" [(set (match_operand:VIT_HW 0 "register_operand" "=v") (unspec:VIT_HW [(match_operand:VIT_HW 1 "register_operand" "%v") @@ -638,6 +651,7 @@ ; Vector average +; vavgb, vavgh, vavgf, vavgg (define_insn "vec_avg" [(set (match_operand:VI_HW 0 "register_operand" "=v") (unspec:VI_HW [(match_operand:VI_HW 1 "register_operand" "%v") @@ -649,6 +663,7 @@ ; Vector average logical +; vavglb, vavglh, vavglf, vavglg (define_insn "vec_avgu" [(set (match_operand:VI_HW 0 "register_operand" "=v") (unspec:VI_HW [(match_operand:VI_HW 1 "register_operand" "%v") @@ -787,6 +802,7 @@ ; Vector Galois field multiply sum +; vgfmb, vgfmh, vgfmf (define_insn "vec_gfmsum" [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") @@ -805,6 +821,7 @@ "vgfmg\t%v0,%v1,%v2" [(set_attr "op_type" "VRR")]) +; vgfmab, vgfmah, vgfmaf (define_insn "vec_gfmsum_accum" [(set (match_operand: 0 "register_operand" "=v") (unspec: [(match_operand:VI_HW_QHS 1 "register_operand" "v") @@ -1115,6 +1132,7 @@ ; Vector subtract compute borrow indication +; vscbib, vscbih, vscbif, vscbig, vscbiq (define_insn "vscbi_" [(set (match_operand:VIT_HW 0 "register_operand" "=v") (unspec:VIT_HW [(match_operand:VIT_HW 1 "register_operand" "v")