This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Add missing Broadwell intrinsics.
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Ilya Tocar <tocarip dot intel at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 2 Sep 2014 15:40:53 +0200
- Subject: Re: Add missing Broadwell intrinsics.
- Authentication-results: sourceware.org; auth=none
- References: <20140902123613 dot GA82638 at msticlxl7 dot ims dot intel dot com>
On Tue, Sep 2, 2014 at 2:36 PM, Ilya Tocar <tocarip.intel@gmail.com> wrote:
> Hi,
>
> Along with intrinsics for adcx/adox (supported since 4.8) ICC also
> added intrinsics for adc/sbb [1]. This patch adds them.
> Bootstraps/passes make-check. Ok for trunk?
>
> [1] http://www.xlsoft.com/jp/products/intel/compilers/ccm/2013/Release_Notes_u3.pdf
>
> ChangeLog below:
>
> gcc/
>
> 2014-09-02 Ilya Tocar <ilya.tocar@intel.com>
>
> * config/i386/adxintrin.h (_subborrow_u32): New.
> (_addcarry_u32): Ditto.
> (_subborrow_u64): Ditto.
> (_addcarry_u64): Ditto.
> * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_SBB32,
> IX86_BUILTIN_SBB64.
> (ix86_init_mmx_sse_builtins): Handle __builtin_ia32_sbb_u32,
> __builtin_ia32_sbb_u64
>
> testsuite/
>
> 2014-09-02 Ilya Tocar <ilya.tocar@intel.com>
>
> * gcc.target/i386/adx-addcarryx32-1.c: Test addcarry, subborrow.
> * gcc.target/i386/adx-addcarryx32-2.c: Ditto.
> * gcc.target/i386/adx-addcarryx32-3.c: Ditto.
> * gcc.target/i386/adx-addcarryx64-1.c: Ditto.
> * gcc.target/i386/adx-addcarryx64-2.c: Ditto.
> * gcc.target/i386/adx-addcarryx64-3.c: Ditto.
OK with two comment changes below.
Thanks,
Uros.
> + /* ADC/SBB instructions. */
Just SBB instruction.
> + IX86_BUILTIN_SBB32,
> + IX86_BUILTIN_SBB64,
> +
> /* FSGSBASE instructions. */
> IX86_BUILTIN_RDFSBASE32,
> IX86_BUILTIN_RDFSBASE64,
> @@ -31213,6 +31217,14 @@ ix86_init_mmx_sse_builtins (void)
> UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG,
> IX86_BUILTIN_ADDCARRYX64);
>
> + /* ADX/SBB */
Also here, these builtins implement just SBB instruction.
> + def_builtin (0, "__builtin_ia32_sbb_u32",
> + UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED, IX86_BUILTIN_SBB32);
> + def_builtin (OPTION_MASK_ISA_64BIT,
> + "__builtin_ia32_sbb_u64",
> + UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG,
> + IX86_BUILTIN_SBB64);
> +