From patchwork Mon Jan 30 15:11:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 50325 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2232799wrn; Mon, 30 Jan 2023 07:12:12 -0800 (PST) X-Google-Smtp-Source: AK7set9RKKPKKkSbUzA/3awZGwLJzKh3fqijGjzPkiNpDK1H3lexzHrBW3oQ2c6joHXEsWQkBGkC X-Received: by 2002:a17:906:55ca:b0:885:a62c:5a5c with SMTP id z10-20020a17090655ca00b00885a62c5a5cmr6974836ejp.46.1675091531920; Mon, 30 Jan 2023 07:12:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675091531; cv=none; d=google.com; s=arc-20160816; b=ROTHNeO+5We5tuARUi6SDeAVYeSjknb0gswnp4CxvzPrEH3/gO/EYjGLTxQf+s0jCM SrLjyx7UTlVcMt5z+jtgkHBhdXYqhBevCE29NHE4bkyW4XdhTrgQNIWA7Hz/HjeFUEhF 2KfiuNAcbA847rpYLccTk0zTn/g9a3mQMcqmU9yPhNDfxpXpXSBNn57GePgckZMeKGQL rJexl3O8u8rjSXOnpZalJiN//DpR97+MbncWar4Cj4hQKhRh2yVDcGGbY07ZMfuKQv1f capm7lcrpn0uNraTGvDb25HegyY1mTbD5vIT8HUllSAOh7SrvliaiZp6c5YV+SJDmDcF oicQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=vMt8Lif0DLEDKq7hESwZOnRp8KfDNNpvFN1FJAiN824=; b=fTz+sziEFcn31PsZnc0WfLF6cNAlqTcOjQq8yqmh5CcnmfgWW/GpGiKdMOQzDv6buu PDrgcnxe+mo55FnmespsAhN7WRJvEo3FZXsscZKlMwZaEoByixqGyv5z/Bn/lowi4sEo T8/FpDGuJqvS58+qSjsYoFFFeehNtCPs8kD7sffIagIXjifsn261A0G5MXiHl/bpQ90D WQ8XPYQ05dtiQI0NySSN09qfWdcbBFVt3GpgtJkvEv9wrIaYBwsA4iBup6X5sI2Xoied ZBzlCxllcxYfCjA4ioXoTk05JRZV1gjyz6D4S5BtaVIgx2dlnBrVwnHm+fPEFgzZX0hl LzXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=ulMhxDap; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id 21-20020a170906001500b007c1753251a4si14299703eja.928.2023.01.30.07.12.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Jan 2023 07:12:11 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=ulMhxDap; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3A4313858404 for ; Mon, 30 Jan 2023 15:12:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3A4313858404 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675091530; bh=vMt8Lif0DLEDKq7hESwZOnRp8KfDNNpvFN1FJAiN824=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=ulMhxDapUa0NsNh28gcvqrIMeh7oBl+AqnZvMANaqdAvOpdvuO2NdEJrFJZh3XGbS aQFUNWRnztgvYozVXNTTa8Eo/p4fPzSiggeVvUKkJx3ykLmg+L63r2nl2cVkDYgRYo tYhvfZLvhupm+SxF2bba/19noOOILM8ja8Aqprck= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 880ED385840C for ; Mon, 30 Jan 2023 15:12:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 880ED385840C Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-628-FnuwTW_OPr-OZ8eVgbpxzQ-1; Mon, 30 Jan 2023 10:11:51 -0500 X-MC-Unique: FnuwTW_OPr-OZ8eVgbpxzQ-1 Received: by mail-qt1-f200.google.com with SMTP id bp43-20020a05622a1bab00b003b63be6827dso5099607qtb.23 for ; Mon, 30 Jan 2023 07:11:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vMt8Lif0DLEDKq7hESwZOnRp8KfDNNpvFN1FJAiN824=; b=zVFSPhhp1C7BMWC0LCaqBC6XN0JI9WEJu4qUdSxdgl6dE/6XAakoBV4UtM+yA6QRmT K44gC3gOWX5EBs2a+yMSezbQNKM5CMA4oh2TpsmtCZ+330fUzZSCRFG0mZsafWXBk9G2 mjxQW6zqY/AYESMo7A1UT0tCYTOW625w0aelYuMKIBVZARDwBdAtQsnP0hSvgmohEoUq AkUuJAMojSoCmp9qubUn/VgNj2lXBmmONqtPUWcpGv0Bv6sW4Q+3t3IrB7R1xfLvwXnP M5dUfDxssg37F9dsc9kvTsJ23xk5xIGmm5rXewuSVSQdawwDqC9kASSvbYGALNw7KKXK gO1Q== X-Gm-Message-State: AO0yUKXOzZdDmulUam1QHayziK0H9za0rlP+wxgg+VOBGzX4kJdr9P+e R2otm3FHjbDJonnYdDEEmcK5hefC0RGTy7tmrPKdcZmqyXO33c628fG/l5G7Ze2rpSEFpdgrLho Ff8OOjarhkdAIrzKyu8tv6rIWkeZjJahlvAH60OBqGJn+3CTz0bNxelu575lgsD3DcVuw9Q== X-Received: by 2002:a05:622a:1884:b0:3b4:d5be:a2e0 with SMTP id v4-20020a05622a188400b003b4d5bea2e0mr13603901qtc.20.1675091510813; Mon, 30 Jan 2023 07:11:50 -0800 (PST) X-Received: by 2002:a05:622a:1884:b0:3b4:d5be:a2e0 with SMTP id v4-20020a05622a188400b003b4d5bea2e0mr13603857qtc.20.1675091510360; Mon, 30 Jan 2023 07:11:50 -0800 (PST) Received: from localhost (95.72.115.87.dyn.plus.net. [87.115.72.95]) by smtp.gmail.com with ESMTPSA id s24-20020ac85ed8000000b003b2d890752dsm8098533qtx.88.2023.01.30.07.11.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Jan 2023 07:11:49 -0800 (PST) To: binutils@sourceware.org Cc: Andrew Burgess Subject: [PATCH] gas/ppc: Additional tests for DFP instructions Date: Mon, 30 Jan 2023 15:11:41 +0000 Message-Id: <95d700d49f5cdd2239c44ec17dadd11652f7be93.1675091147.git.aburgess@redhat.com> X-Mailer: git-send-email 2.25.4 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Andrew Burgess via Binutils From: Andrew Burgess Reply-To: Andrew Burgess Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756460778382522257?= X-GMAIL-MSGID: =?utf-8?q?1756460778382522257?= For I was reviewing an out of tree GDB patch which added some PPC specific tests. The GDB test was testing GDB's ability to disassemble somewhat random set of PPC DFP instructions. I was going to drop the GDB patch as instruction disassembly is usually tested through gas/objdump, but I did a quick check, and it turns out that most of the instructions covered by this out of tree patch are not tested in the gas testsuite. At least, not as far as I can see. So this patch just adds some additional PPC assembler tests. I've checked that the instructions disassemble back to their original form, but I've made no attempt to validate the actual encoded instruction form, I'm just assuming that Power6 stuff all works, and this is just extending the test coverage. --- I noticed that some of the Power6 DFP instructions were not covered by the assembler tests. I've added a new test file which I believe covers all the DFP Power6 instructions. The existing gas/testsuite/gas/ppc/power6.d test is called: POWER6 tests (includes DFP and Altivec) And does cover some of the DFP instructions. But, given the number of additional instructions I'm adding I opted to add a whole new test file. I've left the original power6.d unchanged, so there is now some overlap, but I don't think that should hurt much. --- gas/testsuite/gas/ppc/power6-dfp.d | 95 ++++++++++++++++++++++++++++++ gas/testsuite/gas/ppc/power6-dfp.s | 90 ++++++++++++++++++++++++++++ gas/testsuite/gas/ppc/ppc.exp | 1 + 3 files changed, 186 insertions(+) create mode 100644 gas/testsuite/gas/ppc/power6-dfp.d create mode 100644 gas/testsuite/gas/ppc/power6-dfp.s base-commit: fe08c994fa9431909a6e63582b0a7f4c34f6e826 diff --git a/gas/testsuite/gas/ppc/power6-dfp.d b/gas/testsuite/gas/ppc/power6-dfp.d new file mode 100644 index 00000000000..d3594b65e5d --- /dev/null +++ b/gas/testsuite/gas/ppc/power6-dfp.d @@ -0,0 +1,95 @@ +#as: -a32 -mpower6 +#objdump: -dr -Mpower6 +#name: POWER6 all DFP instructions + +.* + +Disassembly of section \.text: + +0+00 : + 0: (ee 11 90 04|04 90 11 ee) dadd f16,f17,f18 + 4: (ee 11 90 05|05 90 11 ee) dadd\. f16,f17,f18 + 8: (fe 96 c0 04|04 c0 96 fe) daddq f20,f22,f24 + c: (fe 96 c0 05|05 c0 96 fe) daddq\. f20,f22,f24 + 10: (ee 11 94 04|04 94 11 ee) dsub f16,f17,f18 + 14: (ee 11 94 05|05 94 11 ee) dsub\. f16,f17,f18 + 18: (fe 96 c4 04|04 c4 96 fe) dsubq f20,f22,f24 + 1c: (fe 96 c4 05|05 c4 96 fe) dsubq\. f20,f22,f24 + 20: (ee 11 90 44|44 90 11 ee) dmul f16,f17,f18 + 24: (ee 11 90 45|45 90 11 ee) dmul\. f16,f17,f18 + 28: (fe 96 c0 44|44 c0 96 fe) dmulq f20,f22,f24 + 2c: (fe 96 c0 45|45 c0 96 fe) dmulq\. f20,f22,f24 + 30: (ee 11 94 44|44 94 11 ee) ddiv f16,f17,f18 + 34: (ee 11 94 45|45 94 11 ee) ddiv\. f16,f17,f18 + 38: (fe 96 c4 44|44 c4 96 fe) ddivq f20,f22,f24 + 3c: (fe 96 c4 45|45 c4 96 fe) ddivq\. f20,f22,f24 + 40: (ec 83 29 04|04 29 83 ec) dcmpo cr1,f3,f5 + 44: (fd 86 21 04|04 21 86 fd) dcmpoq cr3,f6,f4 + 48: (ed 03 2d 04|04 2d 03 ed) dcmpu cr2,f3,f5 + 4c: (fd 06 25 04|04 25 06 fd) dcmpuq cr2,f6,f4 + 50: (ec 01 fd 84|84 fd 01 ec) dtstdc cr0,f1,63 + 54: (fc 02 01 84|84 01 02 fc) dtstdcq cr0,f2,0 + 58: (ec 03 81 c4|c4 81 03 ec) dtstdg cr0,f3,32 + 5c: (fc 04 05 c4|c4 05 04 fc) dtstdgq cr0,f4,1 + 60: (ef 81 29 44|44 29 81 ef) dtstex cr7,f1,f5 + 64: (ff 02 31 44|44 31 02 ff) dtstexq cr6,f2,f6 + 68: (ee 83 3d 44|44 3d 83 ee) dtstsf cr5,f3,f7 + 6c: (fe 04 45 44|44 45 04 fe) dtstsfq cr4,f4,f8 + 70: (ec 10 22 86|86 22 10 ec) dquai -16,f0,f4,1 + 74: (ec 10 22 87|87 22 10 ec) dquai\. -16,f0,f4,1 + 78: (fc 4f 36 86|86 36 4f fc) dquaiq 15,f2,f6,3 + 7c: (fc 4f 36 87|87 36 4f fc) dquaiq\. 15,f2,f6,3 + 80: (ec 22 28 06|06 28 22 ec) dqua f1,f2,f5,0 + 84: (ec 64 32 07|07 32 64 ec) dqua\. f3,f4,f6,1 + 88: (fc 46 24 06|06 24 46 fc) dquaq f2,f6,f4,2 + 8c: (fc 88 16 07|07 16 88 fc) dquaq\. f4,f8,f2,3 + 90: (ec 22 1a 46|46 1a 22 ec) drrnd f1,f2,f3,1 + 94: (ec 44 32 47|47 32 44 ec) drrnd\. f2,f4,f6,1 + 98: (fc 02 24 46|46 24 02 fc) drrndq f0,f2,f4,2 + 9c: (fc 86 44 47|47 44 86 fc) drrndq\. f4,f6,f8,2 + a0: (ec 20 10 c6|c6 10 20 ec) drintx 0,f1,f2,0 + a4: (ec 41 0a c7|c7 0a 41 ec) drintx\. 1,f2,f1,1 + a8: (fc 40 24 c6|c6 24 40 fc) drintxq 0,f2,f4,2 + ac: (fc 81 36 c7|c7 36 81 fc) drintxq\. 1,f4,f6,3 + b0: (ec 21 19 c6|c6 19 21 ec) drintn 1,f1,f3,0 + b4: (ec 80 13 c7|c7 13 80 ec) drintn\. 0,f4,f2,1 + b8: (fc 01 15 c6|c6 15 01 fc) drintnq 1,f0,f2,2 + bc: (fc 80 17 c7|c7 17 80 fc) drintnq\. 0,f4,f2,3 + c0: (ec 40 22 04|04 22 40 ec) dctdp f2,f4 + c4: (ec 40 22 05|05 22 40 ec) dctdp\. f2,f4 + c8: (fc 40 22 04|04 22 40 fc) dctqpq f2,f4 + cc: (fc 40 22 05|05 22 40 fc) dctqpq\. f2,f4 + d0: (ec 40 26 04|04 26 40 ec) drsp f2,f4 + d4: (ec 40 26 05|05 26 40 ec) drsp\. f2,f4 + d8: (fc 40 26 04|04 26 40 fc) drdpq f2,f4 + dc: (fc 40 26 05|05 26 40 fc) drdpq\. f2,f4 + e0: (fc 40 26 44|44 26 40 fc) dcffixq f2,f4 + e4: (fc 40 26 45|45 26 40 fc) dcffixq\. f2,f4 + e8: (ec 40 22 44|44 22 40 ec) dctfix f2,f4 + ec: (ec 40 22 45|45 22 40 ec) dctfix\. f2,f4 + f0: (fc 40 22 44|44 22 40 fc) dctfixq f2,f4 + f4: (fc 40 22 45|45 22 40 fc) dctfixq\. f2,f4 + f8: (ec 20 12 84|84 12 20 ec) ddedpd 0,f1,f2 + fc: (ec 08 0a 85|85 0a 08 ec) ddedpd\. 1,f0,f1 + 100: (fc 48 22 84|84 22 48 fc) ddedpdq 1,f2,f4 + 104: (fc 80 12 85|85 12 80 fc) ddedpdq\. 0,f4,f2 + 108: (ec 20 16 84|84 16 20 ec) denbcd 0,f1,f2 + 10c: (ec 10 0e 85|85 0e 10 ec) denbcd\. 1,f0,f1 + 110: (fc 10 16 84|84 16 10 fc) denbcdq 1,f0,f2 + 114: (fc 40 26 85|85 26 40 fc) denbcdq\. 0,f2,f4 + 118: (ec 00 0a c4|c4 0a 00 ec) dxex f0,f1 + 11c: (ec 40 1a c5|c5 1a 40 ec) dxex\. f2,f3 + 120: (fc 80 32 c4|c4 32 80 fc) dxexq f4,f6 + 124: (fc 40 02 c5|c5 02 40 fc) dxexq\. f2,f0 + 128: (ec 01 16 c4|c4 16 01 ec) diex f0,f1,f2 + 12c: (ec 64 2e c5|c5 2e 64 ec) diex\. f3,f4,f5 + 130: (fc 02 26 c4|c4 26 02 fc) diexq f0,f2,f4 + 134: (fc c4 16 c5|c5 16 c4 fc) diexq\. f6,f4,f2 + 138: (ec 22 00 84|84 00 22 ec) dscli f1,f2,0 + 13c: (ec 03 fc 85|85 fc 03 ec) dscli\. f0,f3,63 + 140: (fc 48 04 84|84 04 48 fc) dscliq f2,f8,1 + 144: (fc 86 80 85|85 80 86 fc) dscliq\. f4,f6,32 + 148: (ec 20 40 c4|c4 40 20 ec) dscri f1,f0,16 + 14c: (ec 62 3c c5|c5 3c 62 ec) dscri\. f3,f2,15 + 150: (fd 00 a8 c4|c4 a8 00 fd) dscriq f8,f0,42 + 154: (fc 86 54 c5|c5 54 86 fc) dscriq\. f4,f6,21 diff --git a/gas/testsuite/gas/ppc/power6-dfp.s b/gas/testsuite/gas/ppc/power6-dfp.s new file mode 100644 index 00000000000..e3432e5e555 --- /dev/null +++ b/gas/testsuite/gas/ppc/power6-dfp.s @@ -0,0 +1,90 @@ +# POWER6 DFP Instructions +#as: -mpower6 + .text +start: + dadd 16,17,18 + dadd. 16,17,18 + daddq 20,22,24 + daddq. 20,22,24 + dsub 16,17,18 + dsub. 16,17,18 + dsubq 20,22,24 + dsubq. 20,22,24 + dmul 16,17,18 + dmul. 16,17,18 + dmulq 20,22,24 + dmulq. 20,22,24 + ddiv 16,17,18 + ddiv. 16,17,18 + ddivq 20,22,24 + ddivq. 20,22,24 + dcmpo 1,3,5 + dcmpoq 3,6,4 + dcmpu 2,3,5 + dcmpuq 2,6,4 + dtstdc 0,1,0x3f + dtstdcq 0,2,0x00 + dtstdg 0,3,0x20 + dtstdgq 0,4,0x01 + dtstex 7,1,5 + dtstexq 6,2,6 + dtstsf 5,3,7 + dtstsfq 4,4,8 + dquai -16,0,4,1 + dquai. -16,0,4,1 + dquaiq 15,2,6,3 + dquaiq. 15,2,6,3 + dqua 1,2,5,0 + dqua. 3,4,6,1 + dquaq 2,6,4,2 + dquaq. 4,8,2,3 + drrnd 1,2,3,1 + drrnd. 2,4,6,1 + drrndq 0,2,4,2 + drrndq. 4,6,8,2 + drintx 0,1,2,0 + drintx. 1,2,1,1 + drintxq 0,2,4,2 + drintxq. 1,4,6,3 + drintn 1,1,3,0 + drintn. 0,4,2,1 + drintnq 1,0,2,2 + drintnq. 0,4,2,3 + dctdp 2,4 + dctdp. 2,4 + dctqpq 2,4 + dctqpq. 2,4 + drsp 2,4 + drsp. 2,4 + drdpq 2,4 + drdpq. 2,4 + dcffixq 2,4 + dcffixq. 2,4 + dctfix 2,4 + dctfix. 2,4 + dctfixq 2,4 + dctfixq. 2,4 + ddedpd 0,1,2 + ddedpd. 1,0,1 + ddedpdq 1,2,4 + ddedpdq. 0,4,2 + denbcd 0,1,2 + denbcd. 1,0,1 + denbcdq 1,0,2 + denbcdq. 0,2,4 + dxex 0,1 + dxex. 2,3 + dxexq 4,6 + dxexq. 2,0 + diex 0,1,2 + diex. 3,4,5 + diexq 0,2,4 + diexq. 6,4,2 + dscli 1,2,0x00 + dscli. 0,3,0x3f + dscliq 2,8,0x01 + dscliq. 4,6,0x20 + dscri 1,0,0x10 + dscri. 3,2,0x0f + dscriq 8,0,0x2a + dscriq. 4,6,0x15 diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp index 2041429bd67..689503d7c20 100644 --- a/gas/testsuite/gas/ppc/ppc.exp +++ b/gas/testsuite/gas/ppc/ppc.exp @@ -114,6 +114,7 @@ run_dump_test "e6500_nop" run_dump_test "power4_32" run_dump_test "power5" run_dump_test "power6" +run_dump_test "power6-dfp" run_dump_test "power7" run_dump_test "power8" run_dump_test "power9"