From patchwork Mon Feb 24 09:18:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhenqiang Chen X-Patchwork-Id: 25181 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-pa0-f69.google.com (mail-pa0-f69.google.com [209.85.220.69]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 62CD4203C4 for ; Mon, 24 Feb 2014 09:19:40 +0000 (UTC) Received: by mail-pa0-f69.google.com with SMTP id fa1sf18217870pad.8 for ; Mon, 24 Feb 2014 01:19:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:mailing-list:precedence:list-id :list-unsubscribe:list-archive:list-post:list-help:sender :delivered-to:mime-version:date:message-id:subject:from:to :x-original-sender:x-original-authentication-results:content-type; bh=3HSLOHvkucFmlJJqu0Tkl8NuN4PN6zYYdhet8plxuys=; b=Yej/al6oOyAmkVdUzPEwNHUQ8wQGhRDSuqGZZX6Apz0isK4E87ShsmmimblNZgwKY/ +5qiRaXuJQi3Fa6H6V7/Pydw3HZrj2L6jRRZ/DjYWEPZ/7j6CtLRnML3eIT4hB2y5y7m op6cHkdtgAAzJjb7MpsvMJlXlDqpUM1AJVPGQwQUsgtAdvya6EekedkcThrV27zERytm ea64o7qM0pSYSXZVdAPF9oYbeDeT6Gtr//LHwU1oLmAwNbKnoaiFddvhdWYXctFw+FWm QwdzCady2qGXi+SHlQgOuI/T/llIKV5Cx39J8R8DZ7Aob8cebBt0Byso8DipQ44rlx0n MMKg== X-Gm-Message-State: ALoCoQl6UO66tzgGYTzpfjPzCzlPrLxgzungSK0rH49ES32NOY5aRrov0XuINWBZVpryhi0UR6a0 X-Received: by 10.66.182.137 with SMTP id ee9mr10395337pac.0.1393233579528; Mon, 24 Feb 2014 01:19:39 -0800 (PST) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.31.139 with SMTP id f11ls1822842qgf.71.gmail; Mon, 24 Feb 2014 01:19:39 -0800 (PST) X-Received: by 10.220.139.198 with SMTP id f6mr11514304vcu.47.1393233579302; Mon, 24 Feb 2014 01:19:39 -0800 (PST) Received: from mail-vc0-x229.google.com (mail-vc0-x229.google.com [2607:f8b0:400c:c03::229]) by mx.google.com with ESMTPS id b20si5679330veu.68.2014.02.24.01.19.39 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 01:19:39 -0800 (PST) Received-SPF: neutral (google.com: 2607:f8b0:400c:c03::229 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=2607:f8b0:400c:c03::229; Received: by mail-vc0-f169.google.com with SMTP id hq11so5599089vcb.28 for ; Mon, 24 Feb 2014 01:19:39 -0800 (PST) X-Received: by 10.52.61.168 with SMTP id q8mr9823392vdr.40.1393233579189; Mon, 24 Feb 2014 01:19:39 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.174.196 with SMTP id u4csp48050vcz; Mon, 24 Feb 2014 01:19:38 -0800 (PST) X-Received: by 10.67.14.69 with SMTP id fe5mr24245659pad.120.1393233577919; Mon, 24 Feb 2014 01:19:37 -0800 (PST) Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id pg1si16301456pac.96.2014.02.24.01.19.37 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Feb 2014 01:19:37 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-362279-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Received: (qmail 16151 invoked by alias); 24 Feb 2014 09:19:02 -0000 Mailing-List: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org Precedence: list 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 16066 invoked by uid 89); 24 Feb 2014 09:19:01 -0000 X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-la0-f50.google.com Received: from mail-la0-f50.google.com (HELO mail-la0-f50.google.com) (209.85.215.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 24 Feb 2014 09:18:47 +0000 Received: by mail-la0-f50.google.com with SMTP id y1so1321815lam.37 for ; Mon, 24 Feb 2014 01:18:43 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.152.143.231 with SMTP id sh7mr11577344lab.26.1393233522881; Mon, 24 Feb 2014 01:18:42 -0800 (PST) Received: by 10.112.173.137 with HTTP; Mon, 24 Feb 2014 01:18:42 -0800 (PST) Date: Mon, 24 Feb 2014 17:18:42 +0800 Message-ID: Subject: [PATCH 4/n] Add conditional compare support - test cases From: Zhenqiang Chen To: "gcc-patches@gcc.gnu.org" X-IsSubscribed: yes X-Original-Sender: zhenqiang.chen@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 2607:f8b0:400c:c03::229 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org; dkim=pass header.i=@gcc.gnu.org X-Google-Group-Id: 836684582541 Hi, Here is the patch to include testcases to cover most combinations of conditional compares (signed, unsigned, int, short, long, "||", "&&", etc). All PASS on X86-64, ARM and AARCH64. Is it OK for next stage1? Thanks! -Zhenqiang ChangeLog: 2014-02-24 Zhenqiang Chen * gcc.dg/ccmp-s-ne.c: New testcase. * gcc.dg/ccmp-s-eq.c: New testcase. * gcc.dg/ccmp-s-le.c: New testcase. * gcc.dg/ccmp-s-lt.c: New testcase. * gcc.dg/ccmp-s-ge.c: New testcase. * gcc.dg/ccmp-s-gt.c: New testcase. * gcc.dg/ccmp-w-ne.c: New testcase. * gcc.dg/ccmp-w-eq.c: New testcase. * gcc.dg/ccmp-w-le.c: New testcase. * gcc.dg/ccmp-w-lt.c: New testcase. * gcc.dg/ccmp-w-ge.c: New testcase. * gcc.dg/ccmp-w-gt.c: New testcase. * gcc.dg/ccmp-l-ne.c: New testcase. * gcc.dg/ccmp-l-eq.c: New testcase. * gcc.dg/ccmp-l-le.c: New testcase. * gcc.dg/ccmp-l-lt.c: New testcase. * gcc.dg/ccmp-l-ge.c: New testcase. * gcc.dg/ccmp-l-gt.c: New testcase. * gcc.dg/ccmp-us-ne.c: New testcase. * gcc.dg/ccmp-us-eq.c: New testcase. * gcc.dg/ccmp-us-le.c: New testcase. * gcc.dg/ccmp-us-lt.c: New testcase. * gcc.dg/ccmp-us-ge.c: New testcase. * gcc.dg/ccmp-us-gt.c: New testcase. * gcc.dg/ccmp-uw-ne.c: New testcase. * gcc.dg/ccmp-uw-eq.c: New testcase. * gcc.dg/ccmp-uw-le.c: New testcase. * gcc.dg/ccmp-uw-lt.c: New testcase. * gcc.dg/ccmp-uw-ge.c: New testcase. * gcc.dg/ccmp-uw-gt.c: New testcase. * gcc.dg/ccmp-s-ne-1.c: New testcase. * gcc.dg/ccmp-s-eq-1.c: New testcase. * gcc.dg/ccmp-s-le-1.c: New testcase. * gcc.dg/ccmp-s-lt-1.c: New testcase. * gcc.dg/ccmp-s-ge-1.c: New testcase. * gcc.dg/ccmp-s-gt-1.c: New testcase. * gcc.dg/ccmp-w-ne-1.c: New testcase. * gcc.dg/ccmp-w-eq-1.c: New testcase. * gcc.dg/ccmp-w-le-1.c: New testcase. * gcc.dg/ccmp-w-lt-1.c: New testcase. * gcc.dg/ccmp-w-ge-1.c: New testcase. * gcc.dg/ccmp-w-gt-1.c: New testcase. * gcc.dg/ccmp-l-ne-1.c: New testcase. * gcc.dg/ccmp-l-eq-1.c: New testcase. * gcc.dg/ccmp-l-le-1.c: New testcase. * gcc.dg/ccmp-l-lt-1.c: New testcase. * gcc.dg/ccmp-l-ge-1.c: New testcase. * gcc.dg/ccmp-l-gt-1.c: New testcase. * gcc.dg/ccmp-us-ne-1.c: New testcase. * gcc.dg/ccmp-us-eq-1.c: New testcase. * gcc.dg/ccmp-us-le-1.c: New testcase. * gcc.dg/ccmp-us-lt-1.c: New testcase. * gcc.dg/ccmp-us-ge-1.c: New testcase. * gcc.dg/ccmp-us-gt-1.c: New testcase. * gcc.dg/ccmp-uw-ne-1.c: New testcase. * gcc.dg/ccmp-uw-eq-1.c: New testcase. * gcc.dg/ccmp-uw-le-1.c: New testcase. * gcc.dg/ccmp-uw-lt-1.c: New testcase. * gcc.dg/ccmp-uw-ge-1.c: New testcase. * gcc.dg/ccmp-uw-gt-1.c: New testcase. * gcc.dg/ccmn-w-eq.c: New testcase. * gcc.dg/ccmn-w-eq-1.c: New testcase. * gcc.target/aarch64/ccmn-assember.c: New testcase. * gcc.target/aarch64/ccmp-assember.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/ccmn-w-eq-1.c b/gcc/testsuite/gcc.dg/ccmn-w-eq-1.c new file mode 100644 index 0000000..446f8d2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmn-w-eq-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 -20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, -20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, -20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, -20) != T_VAL) + __builtin_abort (); + if (test_2 (20, -20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, -25) != T_VAL) + __builtin_abort (); + if (test_3 (10, -20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, -15) != F_VAL) + __builtin_abort (); + if (test_3 (20, -20) != T_VAL) + __builtin_abort (); + if (test_3 (20, -25) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, -25) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, -20) != T_VAL) + __builtin_abort (); + if (test_4 (20, -20) != F_VAL) + __builtin_abort (); + if (test_4 (20, -15) != F_VAL) + __builtin_abort (); + if (test_4 (20, -25) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, -20) != T_VAL) + __builtin_abort (); + if (test_5 (10, -15) != T_VAL) + __builtin_abort (); + if (test_5 (10, -25) != T_VAL) + __builtin_abort (); + if (test_5 (20, -20) != T_VAL) + __builtin_abort (); + if (test_5 (20, -25) != F_VAL) + __builtin_abort (); + if (test_5 (20, -15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, -15) != T_VAL) + __builtin_abort (); + if (test_6 (10, -20) != T_VAL) + __builtin_abort (); + if (test_6 (10, -25) != T_VAL) + __builtin_abort (); + if (test_6 (20, -15) != T_VAL) + __builtin_abort (); + if (test_6 (20, -20) != F_VAL) + __builtin_abort (); + if (test_6 (20, -25) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmn-w-eq.c b/gcc/testsuite/gcc.dg/ccmn-w-eq.c new file mode 100644 index 0000000..65c6a84 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmn-w-eq.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 -20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, -20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, -20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, -20) != F_VAL) + __builtin_abort (); + if (test_2 (20, -20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, -25) != T_VAL) + __builtin_abort (); + if (test_3 (10, -20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, -15) != F_VAL) + __builtin_abort (); + if (test_3 (20, -20) != F_VAL) + __builtin_abort (); + if (test_3 (20, -25) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, -25) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, -20) != F_VAL) + __builtin_abort (); + if (test_4 (20, -20) != F_VAL) + __builtin_abort (); + if (test_4 (20, -15) != F_VAL) + __builtin_abort (); + if (test_4 (20, -25) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, -20) != T_VAL) + __builtin_abort (); + if (test_5 (10, -15) != T_VAL) + __builtin_abort (); + if (test_5 (10, -25) != F_VAL) + __builtin_abort (); + if (test_5 (20, -20) != F_VAL) + __builtin_abort (); + if (test_5 (20, -25) != F_VAL) + __builtin_abort (); + if (test_5 (20, -15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, -15) != T_VAL) + __builtin_abort (); + if (test_6 (10, -20) != F_VAL) + __builtin_abort (); + if (test_6 (10, -25) != F_VAL) + __builtin_abort (); + if (test_6 (20, -15) != F_VAL) + __builtin_abort (); + if (test_6 (20, -20) != F_VAL) + __builtin_abort (); + if (test_6 (20, -25) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-eq-1.c b/gcc/testsuite/gcc.dg/ccmp-l-eq-1.c new file mode 100644 index 0000000..a9af11c --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-eq-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-eq.c b/gcc/testsuite/gcc.dg/ccmp-l-eq.c new file mode 100644 index 0000000..21a5263 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-eq.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-ge-1.c b/gcc/testsuite/gcc.dg/ccmp-l-ge-1.c new file mode 100644 index 0000000..ade1efb --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-ge-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-ge.c b/gcc/testsuite/gcc.dg/ccmp-l-ge.c new file mode 100644 index 0000000..a515868 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-ge.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-gt-1.c b/gcc/testsuite/gcc.dg/ccmp-l-gt-1.c new file mode 100644 index 0000000..3d8d633 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-gt-1.c @@ -0,0 +1,136 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + +#if 0 + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + +#endif + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-gt.c b/gcc/testsuite/gcc.dg/ccmp-l-gt.c new file mode 100644 index 0000000..103e8e0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-gt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 30) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-le-1.c b/gcc/testsuite/gcc.dg/ccmp-l-le-1.c new file mode 100644 index 0000000..738c424 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-le-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-le.c b/gcc/testsuite/gcc.dg/ccmp-l-le.c new file mode 100644 index 0000000..3ef2e3f --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-le.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-lt-1.c b/gcc/testsuite/gcc.dg/ccmp-l-lt-1.c new file mode 100644 index 0000000..918eaaf --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-lt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 30) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-lt.c b/gcc/testsuite/gcc.dg/ccmp-l-lt.c new file mode 100644 index 0000000..de2560c --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-lt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-ne-1.c b/gcc/testsuite/gcc.dg/ccmp-l-ne-1.c new file mode 100644 index 0000000..6ec09ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-ne-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-l-ne.c b/gcc/testsuite/gcc.dg/ccmp-l-ne.c new file mode 100644 index 0000000..03d0cfe --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-l-ne.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (long a, long b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-eq-1.c b/gcc/testsuite/gcc.dg/ccmp-s-eq-1.c new file mode 100644 index 0000000..d323d0e --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-eq-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-eq.c b/gcc/testsuite/gcc.dg/ccmp-s-eq.c new file mode 100644 index 0000000..0452823 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-eq.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-ge-1.c b/gcc/testsuite/gcc.dg/ccmp-s-ge-1.c new file mode 100644 index 0000000..93b1c90 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-ge-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-ge.c b/gcc/testsuite/gcc.dg/ccmp-s-ge.c new file mode 100644 index 0000000..f8125f5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-ge.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-gt-1.c b/gcc/testsuite/gcc.dg/ccmp-s-gt-1.c new file mode 100644 index 0000000..c1c01c7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-gt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-gt.c b/gcc/testsuite/gcc.dg/ccmp-s-gt.c new file mode 100644 index 0000000..84276e7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-gt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 30) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-le-1.c b/gcc/testsuite/gcc.dg/ccmp-s-le-1.c new file mode 100644 index 0000000..202025f --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-le-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-le.c b/gcc/testsuite/gcc.dg/ccmp-s-le.c new file mode 100644 index 0000000..0f4704b --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-le.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-lt-1.c b/gcc/testsuite/gcc.dg/ccmp-s-lt-1.c new file mode 100644 index 0000000..daa2657 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-lt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 30) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-lt.c b/gcc/testsuite/gcc.dg/ccmp-s-lt.c new file mode 100644 index 0000000..52ba455 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-lt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-ne-1.c b/gcc/testsuite/gcc.dg/ccmp-s-ne-1.c new file mode 100644 index 0000000..a14d641 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-ne-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-s-ne.c b/gcc/testsuite/gcc.dg/ccmp-s-ne.c new file mode 100644 index 0000000..271b26d --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-s-ne.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (short a, short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-eq-1.c b/gcc/testsuite/gcc.dg/ccmp-us-eq-1.c new file mode 100644 index 0000000..eeeff6b --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-eq-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-eq.c b/gcc/testsuite/gcc.dg/ccmp-us-eq.c new file mode 100644 index 0000000..92a59df --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-eq.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-ge-1.c b/gcc/testsuite/gcc.dg/ccmp-us-ge-1.c new file mode 100644 index 0000000..e258619 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-ge-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-ge.c b/gcc/testsuite/gcc.dg/ccmp-us-ge.c new file mode 100644 index 0000000..dcdfe91 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-ge.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 30) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-gt-1.c b/gcc/testsuite/gcc.dg/ccmp-us-gt-1.c new file mode 100644 index 0000000..b4f650b --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-gt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-gt.c b/gcc/testsuite/gcc.dg/ccmp-us-gt.c new file mode 100644 index 0000000..18ba64a --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-gt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 30) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-le-1.c b/gcc/testsuite/gcc.dg/ccmp-us-le-1.c new file mode 100644 index 0000000..fa8b773 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-le-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-le.c b/gcc/testsuite/gcc.dg/ccmp-us-le.c new file mode 100644 index 0000000..0c03f39 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-le.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-lt-1.c b/gcc/testsuite/gcc.dg/ccmp-us-lt-1.c new file mode 100644 index 0000000..10ddb5e --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-lt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 30) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-lt.c b/gcc/testsuite/gcc.dg/ccmp-us-lt.c new file mode 100644 index 0000000..4ef6b27 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-lt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-ne-1.c b/gcc/testsuite/gcc.dg/ccmp-us-ne-1.c new file mode 100644 index 0000000..ff0c795 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-ne-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-us-ne.c b/gcc/testsuite/gcc.dg/ccmp-us-ne.c new file mode 100644 index 0000000..72c6429 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-us-ne.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned short a, unsigned short b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-eq-1.c b/gcc/testsuite/gcc.dg/ccmp-uw-eq-1.c new file mode 100644 index 0000000..dd7aaa3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-eq-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-eq.c b/gcc/testsuite/gcc.dg/ccmp-uw-eq.c new file mode 100644 index 0000000..649aafc --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-eq.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-ge-1.c b/gcc/testsuite/gcc.dg/ccmp-uw-ge-1.c new file mode 100644 index 0000000..fb1da5b --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-ge-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-ge.c b/gcc/testsuite/gcc.dg/ccmp-uw-ge.c new file mode 100644 index 0000000..f68fe66 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-ge.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 30) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-gt-1.c b/gcc/testsuite/gcc.dg/ccmp-uw-gt-1.c new file mode 100644 index 0000000..ea66e69 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-gt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-gt.c b/gcc/testsuite/gcc.dg/ccmp-uw-gt.c new file mode 100644 index 0000000..c205219 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-gt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 30) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-le-1.c b/gcc/testsuite/gcc.dg/ccmp-uw-le-1.c new file mode 100644 index 0000000..6a64881 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-le-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-le.c b/gcc/testsuite/gcc.dg/ccmp-uw-le.c new file mode 100644 index 0000000..244b604 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-le.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-lt-1.c b/gcc/testsuite/gcc.dg/ccmp-uw-lt-1.c new file mode 100644 index 0000000..dcaa633 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-lt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 30) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-lt.c b/gcc/testsuite/gcc.dg/ccmp-uw-lt.c new file mode 100644 index 0000000..4daf4d2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-lt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-ne-1.c b/gcc/testsuite/gcc.dg/ccmp-uw-ne-1.c new file mode 100644 index 0000000..9d9bf55 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-ne-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-uw-ne.c b/gcc/testsuite/gcc.dg/ccmp-uw-ne.c new file mode 100644 index 0000000..ca82292 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-uw-ne.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (unsigned a, unsigned b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-eq-1.c b/gcc/testsuite/gcc.dg/ccmp-w-eq-1.c new file mode 100644 index 0000000..7463c3a --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-eq-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-eq.c b/gcc/testsuite/gcc.dg/ccmp-w-eq.c new file mode 100644 index 0000000..7bf39fc --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-eq.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, ==, ==) +TEST_FUNC(2, ==, !=) +TEST_FUNC(3, ==, <=) +TEST_FUNC(4, ==, <) +TEST_FUNC(5, ==, >=) +TEST_FUNC(6, ==, >) + + +int main () +{ + /* TEST_FUNC(1, ==, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, ==, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, ==, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, ==, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, ==, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, ==, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-ge-1.c b/gcc/testsuite/gcc.dg/ccmp-w-ge-1.c new file mode 100644 index 0000000..e28b8bb --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-ge-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-ge.c b/gcc/testsuite/gcc.dg/ccmp-w-ge.c new file mode 100644 index 0000000..a11b18b --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-ge.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >=, ==) +TEST_FUNC(2, >=, !=) +TEST_FUNC(3, >=, <=) +TEST_FUNC(4, >=, <) +TEST_FUNC(5, >=, >=) +TEST_FUNC(6, >=, >) + + +int main () +{ + /* TEST_FUNC(1, >=, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >=, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >=, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >=, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >=, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >=, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-gt-1.c b/gcc/testsuite/gcc.dg/ccmp-w-gt-1.c new file mode 100644 index 0000000..ef88fcf --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-gt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-gt.c b/gcc/testsuite/gcc.dg/ccmp-w-gt.c new file mode 100644 index 0000000..56480d1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-gt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, >, ==) +TEST_FUNC(2, >, !=) +TEST_FUNC(3, >, <=) +TEST_FUNC(4, >, <) +TEST_FUNC(5, >, >=) +TEST_FUNC(6, >, >) + + +int main () +{ + /* TEST_FUNC(1, >, ==) */ + if (test_1 (5, 20) != F_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, >, !=) */ + if (test_2 (5, 30) != F_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, >, <=) */ + if (test_3 (5, 15) != F_VAL) + __builtin_abort (); + if (test_3 (5, 20) != F_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, >, <) */ + if (test_4 (5, 15) != F_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, >, >=) */ + if (test_5 (5, 20) != F_VAL) + __builtin_abort (); + if (test_5 (5, 25) != F_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, >, >) */ + if (test_6 (5, 25) != F_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-le-1.c b/gcc/testsuite/gcc.dg/ccmp-w-le-1.c new file mode 100644 index 0000000..415cc92 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-le-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != T_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != T_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != T_VAL) + __builtin_abort (); + if (test_4 (10, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != T_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != T_VAL) + __builtin_abort (); + if (test_6 (10, 15) != T_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-le.c b/gcc/testsuite/gcc.dg/ccmp-w-le.c new file mode 100644 index 0000000..f8d60d2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-le.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <=, ==) +TEST_FUNC(2, <=, !=) +TEST_FUNC(3, <=, <=) +TEST_FUNC(4, <=, <) +TEST_FUNC(5, <=, >=) +TEST_FUNC(6, <=, >) + + +int main () +{ + /* TEST_FUNC(1, <=, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <=, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <=, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <=, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <=, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <=, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-lt-1.c b/gcc/testsuite/gcc.dg/ccmp-w-lt-1.c new file mode 100644 index 0000000..843d8ca --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-lt-1.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != T_VAL) + __builtin_abort (); + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != T_VAL) + __builtin_abort (); + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != T_VAL) + __builtin_abort (); + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != T_VAL) + __builtin_abort (); + if (test_4 (5, 20) != T_VAL) + __builtin_abort (); + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != T_VAL) + __builtin_abort (); + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 30) != T_VAL) + __builtin_abort (); + if (test_6 (5, 15) != T_VAL) + __builtin_abort (); + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-lt.c b/gcc/testsuite/gcc.dg/ccmp-w-lt.c new file mode 100644 index 0000000..2059001 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-lt.c @@ -0,0 +1,134 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, <, ==) +TEST_FUNC(2, <, !=) +TEST_FUNC(3, <, <=) +TEST_FUNC(4, <, <) +TEST_FUNC(5, <, >=) +TEST_FUNC(6, <, >) + + +int main () +{ + /* TEST_FUNC(1, <, ==) */ + if (test_1 (5, 20) != T_VAL) + __builtin_abort (); + if (test_1 (5, 30) != F_VAL) + __builtin_abort (); + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != F_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, <, !=) */ + if (test_2 (5, 30) != T_VAL) + __builtin_abort (); + if (test_2 (5, 20) != F_VAL) + __builtin_abort (); + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, <, <=) */ + if (test_3 (5, 15) != T_VAL) + __builtin_abort (); + if (test_3 (5, 20) != T_VAL) + __builtin_abort (); + if (test_3 (5, 30) != F_VAL) + __builtin_abort (); + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != F_VAL) + __builtin_abort (); + if (test_3 (20, 20) != F_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, <, <) */ + if (test_4 (5, 15) != T_VAL) + __builtin_abort (); + if (test_4 (5, 30) != F_VAL) + __builtin_abort (); + if (test_4 (5, 20) != F_VAL) + __builtin_abort (); + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != F_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, <, >=) */ + if (test_5 (5, 20) != T_VAL) + __builtin_abort (); + if (test_5 (5, 25) != T_VAL) + __builtin_abort (); + if (test_5 (5, 15) != F_VAL) + __builtin_abort (); + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != F_VAL) + __builtin_abort (); + if (test_5 (20, 25) != F_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, <, >) */ + if (test_6 (5, 25) != T_VAL) + __builtin_abort (); + if (test_6 (5, 20) != F_VAL) + __builtin_abort (); + if (test_6 (5, 15) != F_VAL) + __builtin_abort (); + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != F_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-ne-1.c b/gcc/testsuite/gcc.dg/ccmp-w-ne-1.c new file mode 100644 index 0000000..9918946 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-ne-1.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 || b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != T_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != T_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != T_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != T_VAL) + __builtin_abort (); + if (test_3 (10, 20) != T_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != T_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != T_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != T_VAL) + __builtin_abort (); + if (test_5 (10, 25) != T_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != T_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != T_VAL) + __builtin_abort (); + if (test_6 (20, 15) != T_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/ccmp-w-ne.c b/gcc/testsuite/gcc.dg/ccmp-w-ne.c new file mode 100644 index 0000000..7ab5dd1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ccmp-w-ne.c @@ -0,0 +1,102 @@ +//* { dg-do run } */ +/* { dg-options "-O2 -fno-inline" } */ +#define T_VAL 8 +#define F_VAL 16 + +#define TEST_FUNC(i, OP1, OP2) \ +int test_##i (int a, int b) \ +{ \ + if (a OP1 10 && b OP2 20) \ + return T_VAL; \ + else \ + return F_VAL; \ +} + +TEST_FUNC(1, !=, ==) +TEST_FUNC(2, !=, !=) +TEST_FUNC(3, !=, <=) +TEST_FUNC(4, !=, <) +TEST_FUNC(5, !=, >=) +TEST_FUNC(6, !=, >) + + +int main () +{ + /* TEST_FUNC(1, !=, ==) */ + if (test_1 (10, 20) != F_VAL) + __builtin_abort (); + if (test_1 (10, 30) != F_VAL) + __builtin_abort (); + if (test_1 (20, 20) != T_VAL) + __builtin_abort (); + if (test_1 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(2, !=, !=) */ + if (test_2 (10, 30) != F_VAL) + __builtin_abort (); + if (test_2 (10, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 20) != F_VAL) + __builtin_abort (); + if (test_2 (20, 30) != T_VAL) + __builtin_abort (); + + /* TEST_FUNC(3, !=, <=) */ + if (test_3 (10, 15) != F_VAL) + __builtin_abort (); + if (test_3 (10, 20) != F_VAL) + __builtin_abort (); + if (test_3 (10, 30) != F_VAL) + __builtin_abort (); + if (test_3 (20, 15) != T_VAL) + __builtin_abort (); + if (test_3 (20, 20) != T_VAL) + __builtin_abort (); + if (test_3 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(4, !=, <) */ + if (test_4 (10, 15) != F_VAL) + __builtin_abort (); + if (test_4 (10, 30) != F_VAL) + __builtin_abort (); + if (test_4 (10, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 20) != F_VAL) + __builtin_abort (); + if (test_4 (20, 15) != T_VAL) + __builtin_abort (); + if (test_4 (20, 30) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(5, !=, >=) */ + if (test_5 (10, 20) != F_VAL) + __builtin_abort (); + if (test_5 (10, 25) != F_VAL) + __builtin_abort (); + if (test_5 (10, 15) != F_VAL) + __builtin_abort (); + if (test_5 (20, 20) != T_VAL) + __builtin_abort (); + if (test_5 (20, 25) != T_VAL) + __builtin_abort (); + if (test_5 (20, 15) != F_VAL) + __builtin_abort (); + + /* TEST_FUNC(6, !=, >) */ + if (test_6 (10, 25) != F_VAL) + __builtin_abort (); + if (test_6 (10, 20) != F_VAL) + __builtin_abort (); + if (test_6 (10, 15) != F_VAL) + __builtin_abort (); + if (test_6 (20, 25) != T_VAL) + __builtin_abort (); + if (test_6 (20, 20) != F_VAL) + __builtin_abort (); + if (test_6 (20, 15) != F_VAL) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/aarch64/ccmn-assember.c b/gcc/testsuite/gcc.target/aarch64/ccmn-assember.c new file mode 100644 index 0000000..304b1ce --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/ccmn-assember.c @@ -0,0 +1,84 @@ +/* { dg-do compile } */ +/* { dg-options " -O2 " } */ + +char foo_c (char a, signed char b) +{ + if (a > 9 && b > -20) + return 4; + else + return 26; +} + +char foo_c_1 (char a, signed char b, char c) +{ + if (a > c && b == -20) + return 4; + else + return 26; +} + +unsigned short foo_us (unsigned short a, short b) +{ + if (a > 9 && b < -20) + return 4; + else + return 26; +} + +unsigned short foo_us_1 (unsigned short a, short b, unsigned short c) +{ + if (a > c && b == -20) + return 4; + else + return 26; +} + +int foo_w (int a, int b) +{ + if (a > 9 && b < -20) + return 4; + else + return 26; +} + +int foo_w_1 (int a, int b, int c) +{ + if (a > c && b == -20) + return 4; + else + return 26; +} + +unsigned foo_uw (unsigned a, int b) +{ + if (a > 9 && b < -20) + return 4; + else + return 26; +} + +unsigned foo_uw_1 (unsigned a, int b, unsigned c) +{ + if (a > c && b == -20) + return 4; + else + return 26; +} + +long foo_l (long a, long b) +{ + if (a > 9 && b < -20) + return 4; + else + return 26; +} + +long foo_l_1 (long a, long b, long c) +{ + if (a > c && b == -20) + return 4; + else + return 26; +} + +/* { dg-final { scan-assembler-times "ccmn" 11 } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/ccmp-assember.c b/gcc/testsuite/gcc.target/aarch64/ccmp-assember.c new file mode 100644 index 0000000..98dd281 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/ccmp-assember.c @@ -0,0 +1,124 @@ +/* { dg-do compile } */ +/* { dg-options " -O2 " } */ + +char foo_c (char a, char b) +{ + if (a > 9 && b < 20) + return 4; + else + return 26; +} + +char foo_c_1 (char a, char b, char c) +{ + if (a > c && b == 20) + return 4; + else + return 26; +} + +char foo_c_2 (char a, char b, char c) +{ + if (a < 9 && b > c) + return 4; + else + return 26; +} + +unsigned short foo_us (unsigned short a, unsigned short b) +{ + if (a > 9 && b < 20) + return 4; + else + return 26; +} + +unsigned short foo_us_1 (unsigned short a, unsigned short b, unsigned short c) +{ + if (a > c && b == 20) + return 4; + else + return 26; +} + +unsigned short foo_us_2 (unsigned short a, unsigned short b, unsigned short c) +{ + if (a < 9 && b > c) + return 4; + else + return 26; +} + +int foo_w (int a, int b) +{ + if (a > 9 && b < 20) + return 4; + else + return 26; +} + +int foo_w_1 (int a, int b, int c) +{ + if (a > c && b == 20) + return 4; + else + return 26; +} + +int foo_w_2 (int a, int b, int c) +{ + if (a < 9 && b > c) + return 4; + else + return 26; +} + +unsigned foo_uw (unsigned a, unsigned b) +{ + if (a > 9 && b < 20) + return 4; + else + return 26; +} + +unsigned foo_uw_1 (unsigned a, unsigned b, unsigned c) +{ + if (a > c && b == 20) + return 4; + else + return 26; +} + +unsigned foo_uw_2 (unsigned a, unsigned b, unsigned c) +{ + if (a < 9 && b > c) + return 4; + else + return 26; +} + +long foo_l (long a, long b) +{ + if (a > 9 && b < 20) + return 4; + else + return 26; +} + +long foo_l_1 (long a, long b, long c) +{ + if (a > c && b == 20) + return 4; + else + return 26; +} + +long foo_l_2 (long a, long b, long c) +{ + if (a < 9 && b > c) + return 4; + else + return 26; +} + +/* { dg-final { scan-assembler-times "ccmp" 16 } } */