From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 87308 invoked by alias); 28 Apr 2016 19:31:45 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 87295 invoked by uid 89); 28 Apr 2016 19:31:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.2 spammy= X-HELO: mail-yw0-f181.google.com Received: from mail-yw0-f181.google.com (HELO mail-yw0-f181.google.com) (209.85.161.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 28 Apr 2016 19:31:42 +0000 Received: by mail-yw0-f181.google.com with SMTP id j74so123196660ywg.1 for ; Thu, 28 Apr 2016 12:31:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=dwbj7xlvuP9NBbeCcgqu7HrjQ/arsVS5IzsiTQ9/4Ro=; b=k6857HrTdMGumGLfu36JZWNhl1ycnjdnyC9ClSVRcgGMtiY59Y9O6nLe/5TGVyX6bu E1JFlfI4+Q/czCoc9l3Vaz4aHBIWk+JaK2+IQhBqA+hu0jxqB548Pzn+iC9zO4gfoD3R z50UmulwHegc5rYCCwStAP+Z5DArr0XdQjuy2dC8WedI5erABKbgkQeBTKGIp3Gfwrjr oMTAvy+5oE1RgWK0CShTvzoWiUp+p7v49Yk8nXN7nUwlkL2bSfcYornDerFn2E1Gs4ra 9zRLHVVAjAjSo6bmpr8QctePy6cJpQCXZ6jTvjSr+3ju9HhQQ+WSBvoU2UdC/VEL3ir4 jYvA== X-Gm-Message-State: AOPr4FW17Q6g2qnvHwtY413uWv2dSZ3ISyOC/bRdXjJYmGT83YEnlyLiWuRpJfFy14hcVbmH5jGH0Zq8XcjDpQ== MIME-Version: 1.0 X-Received: by 10.176.4.20 with SMTP id 20mr8671268uav.125.1461871900849; Thu, 28 Apr 2016 12:31:40 -0700 (PDT) Received: by 10.103.76.220 with HTTP; Thu, 28 Apr 2016 12:31:40 -0700 (PDT) In-Reply-To: <20160428191411.GV26501@tucnak.zalov.cz> References: <20160428191411.GV26501@tucnak.zalov.cz> Date: Thu, 28 Apr 2016 19:31:00 -0000 Message-ID: Subject: Re: [PATCH] Disable some i?86 builtins for -m32 (PR target/70858) From: Uros Bizjak To: Jakub Jelinek Cc: Kirill Yukhin , "gcc-patches@gcc.gnu.org" Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2016-04/txt/msg01897.txt.bz2 On Thu, Apr 28, 2016 at 9:14 PM, Jakub Jelinek wrote: > Hi! > > The PR reported one ICE caused by a builtin for __x86_64__ guarded > intrinsics to be mistakenly available in -m32 too, I've looked for > INT64 substrings in the various i386.c builtin tables and for each > that has been missing OPTION_MASK_ISA_64BIT in the mask looked at > whether the uses of the builtin in *intrin.h aren't guarded #ifdef __x86_64__ > and whether the corresponding insn isn't TARGET_64BIT only. > > This is the result of that effort, 7 builtins that each ICEs when used in -m32. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk/6.2? > > 2016-04-28 Jakub Jelinek > > PR target/70858 > * config/i386/i386.c (bdesc_special_args): Add | OPTION_MASK_ISA_64BIT > to __builtin_ia32_lwpval64 and __builtin_ia32_lwpins64. > (bdesc_args): Add | OPTION_MASK_ISA_64BIT to __builtin_ia32_bextr_u64, > __builtin_ia32_bextri_u64, __builtin_ia32_bzhi_di, > __builtin_ia32_pdep_di and __builtin_ia32_pext_di. > > * gcc.target/i386/pr70858.c: New test. OK everywhere. Thanks, Uros. > --- gcc/config/i386/i386.c.jj 2016-04-28 17:26:10.000000000 +0200 > +++ gcc/config/i386/i386.c 2016-04-28 18:39:06.506976486 +0200 > @@ -32996,9 +32996,9 @@ static const struct builtin_description > { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_llwpcb, "__builtin_ia32_llwpcb", IX86_BUILTIN_LLWPCB, UNKNOWN, (int) VOID_FTYPE_PVOID }, > { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_slwpcb, "__builtin_ia32_slwpcb", IX86_BUILTIN_SLWPCB, UNKNOWN, (int) PVOID_FTYPE_VOID }, > { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvalsi3, "__builtin_ia32_lwpval32", IX86_BUILTIN_LWPVAL32, UNKNOWN, (int) VOID_FTYPE_UINT_UINT_UINT }, > - { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvaldi3, "__builtin_ia32_lwpval64", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT64_UINT_UINT }, > + { OPTION_MASK_ISA_LWP | OPTION_MASK_ISA_64BIT, CODE_FOR_lwp_lwpvaldi3, "__builtin_ia32_lwpval64", IX86_BUILTIN_LWPVAL64, UNKNOWN, (int) VOID_FTYPE_UINT64_UINT_UINT }, > { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinssi3, "__builtin_ia32_lwpins32", IX86_BUILTIN_LWPINS32, UNKNOWN, (int) UCHAR_FTYPE_UINT_UINT_UINT }, > - { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpinsdi3, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT }, > + { OPTION_MASK_ISA_LWP | OPTION_MASK_ISA_64BIT, CODE_FOR_lwp_lwpinsdi3, "__builtin_ia32_lwpins64", IX86_BUILTIN_LWPINS64, UNKNOWN, (int) UCHAR_FTYPE_UINT64_UINT_UINT }, > > /* FSGSBASE */ > { OPTION_MASK_ISA_FSGSBASE | OPTION_MASK_ISA_64BIT, CODE_FOR_rdfsbasesi, "__builtin_ia32_rdfsbase32", IX86_BUILTIN_RDFSBASE32, UNKNOWN, (int) UNSIGNED_FTYPE_VOID }, > @@ -33933,12 +33933,12 @@ static const struct builtin_description > > /* BMI */ > { OPTION_MASK_ISA_BMI, CODE_FOR_bmi_bextr_si, "__builtin_ia32_bextr_u32", IX86_BUILTIN_BEXTR32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT }, > - { OPTION_MASK_ISA_BMI, CODE_FOR_bmi_bextr_di, "__builtin_ia32_bextr_u64", IX86_BUILTIN_BEXTR64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > + { OPTION_MASK_ISA_BMI | OPTION_MASK_ISA_64BIT, CODE_FOR_bmi_bextr_di, "__builtin_ia32_bextr_u64", IX86_BUILTIN_BEXTR64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > { OPTION_MASK_ISA_BMI, CODE_FOR_ctzhi2, "__builtin_ctzs", IX86_BUILTIN_CTZS, UNKNOWN, (int) UINT16_FTYPE_UINT16 }, > > /* TBM */ > { OPTION_MASK_ISA_TBM, CODE_FOR_tbm_bextri_si, "__builtin_ia32_bextri_u32", IX86_BUILTIN_BEXTRI32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT }, > - { OPTION_MASK_ISA_TBM, CODE_FOR_tbm_bextri_di, "__builtin_ia32_bextri_u64", IX86_BUILTIN_BEXTRI64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > + { OPTION_MASK_ISA_TBM | OPTION_MASK_ISA_64BIT, CODE_FOR_tbm_bextri_di, "__builtin_ia32_bextri_u64", IX86_BUILTIN_BEXTRI64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > > /* F16C */ > { OPTION_MASK_ISA_F16C, CODE_FOR_vcvtph2ps, "__builtin_ia32_vcvtph2ps", IX86_BUILTIN_CVTPH2PS, UNKNOWN, (int) V4SF_FTYPE_V8HI }, > @@ -33948,11 +33948,11 @@ static const struct builtin_description > > /* BMI2 */ > { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_bzhi_si3, "__builtin_ia32_bzhi_si", IX86_BUILTIN_BZHI32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT }, > - { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_bzhi_di3, "__builtin_ia32_bzhi_di", IX86_BUILTIN_BZHI64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > + { OPTION_MASK_ISA_BMI2 | OPTION_MASK_ISA_64BIT, CODE_FOR_bmi2_bzhi_di3, "__builtin_ia32_bzhi_di", IX86_BUILTIN_BZHI64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pdep_si3, "__builtin_ia32_pdep_si", IX86_BUILTIN_PDEP32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT }, > - { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pdep_di3, "__builtin_ia32_pdep_di", IX86_BUILTIN_PDEP64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > + { OPTION_MASK_ISA_BMI2 | OPTION_MASK_ISA_64BIT, CODE_FOR_bmi2_pdep_di3, "__builtin_ia32_pdep_di", IX86_BUILTIN_PDEP64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pext_si3, "__builtin_ia32_pext_si", IX86_BUILTIN_PEXT32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT }, > - { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pext_di3, "__builtin_ia32_pext_di", IX86_BUILTIN_PEXT64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > + { OPTION_MASK_ISA_BMI2 | OPTION_MASK_ISA_64BIT, CODE_FOR_bmi2_pext_di3, "__builtin_ia32_pext_di", IX86_BUILTIN_PEXT64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, > > /* AVX512F */ > { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_si512_256si, "__builtin_ia32_si512_256si", IX86_BUILTIN_SI512_SI256, UNKNOWN, (int) V16SI_FTYPE_V8SI }, > --- gcc/testsuite/gcc.target/i386/pr70858.c.jj 2016-04-28 18:59:23.160568289 +0200 > +++ gcc/testsuite/gcc.target/i386/pr70858.c 2016-04-28 19:00:07.529969908 +0200 > @@ -0,0 +1,45 @@ > +/* PR target/70858 */ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -mlwp -mbmi -mtbm -mbmi2 -std=gnu11" } */ > + > +void > +f1 (unsigned long long x, unsigned int y) > +{ > + __builtin_ia32_lwpval64 (x, y, 1); /* { dg-warning "implicit declaration of function .__builtin_ia32_lwpval64." "" { target ia32 } } */ > +} > + > +char > +f2 (unsigned long long x, unsigned int y) > +{ > + return __builtin_ia32_lwpins64 (x, y, 1); /* { dg-warning "implicit declaration of function .__builtin_ia32_lwpins64." "" { target ia32 } } */ > +} > + > +unsigned long long > +f3 (unsigned long long x, unsigned long long y) > +{ > + return __builtin_ia32_bextr_u64 (x, y); /* { dg-warning "implicit declaration of function .__builtin_ia32_bextr_u64." "" { target ia32 } } */ > +} > + > +unsigned long long > +f4 (unsigned long long x) > +{ > + return __builtin_ia32_bextri_u64 (x, 1); /* { dg-warning "implicit declaration of function .__builtin_ia32_bextri_u64." "" { target ia32 } } */ > +} > + > +unsigned long long > +f5 (unsigned long long x, unsigned long long y) > +{ > + return __builtin_ia32_bzhi_di (x, y); /* { dg-warning "implicit declaration of function .__builtin_ia32_bzhi_di." "" { target ia32 } } */ > +} > + > +unsigned long long > +f6 (unsigned long long x, unsigned long long y) > +{ > + return __builtin_ia32_pdep_di (x, y); /* { dg-warning "implicit declaration of function .__builtin_ia32_pdep_di." "" { target ia32 } } */ > +} > + > +unsigned long long > +f7 (unsigned long long x, unsigned long long y) > +{ > + return __builtin_ia32_pext_di (x, y); /* { dg-warning "implicit declaration of function .__builtin_ia32_pext_di." "" { target ia32 } } */ > +} > > Jakub