Hi, <immintrin.h> should support all Intel intrinsics. This patch adds BMI, BMI2 and LZCNT support to <immintrin.h>. OK for trunk?
Thanks. H.J. --- 2011-08-25 H.J. Lu <hongjiu...@intel.com> * config/i386/bmi2intrin.h: Allow in <immintrin.h>. * config/i386/bmiintrin.h: Likewise. * config/i386/lzcntintrin.h: Likewise. * config/i386/immintrin.h: Include <lzcntintrin.h>, <bmiintrin.h> and <bmi2intrin.h>. diff --git a/gcc/config/i386/bmi2intrin.h b/gcc/config/i386/bmi2intrin.h index f3ffa52..a72c9a9 100644 --- a/gcc/config/i386/bmi2intrin.h +++ b/gcc/config/i386/bmi2intrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -21,7 +21,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _X86INTRIN_H_INCLUDED +#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED # error "Never use <bmi2intrin.h> directly; include <x86intrin.h> instead." #endif diff --git a/gcc/config/i386/bmiintrin.h b/gcc/config/i386/bmiintrin.h index 1699c61..af5d9dc 100644 --- a/gcc/config/i386/bmiintrin.h +++ b/gcc/config/i386/bmiintrin.h @@ -21,7 +21,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _X86INTRIN_H_INCLUDED +#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED # error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead." #endif diff --git a/gcc/config/i386/immintrin.h b/gcc/config/i386/immintrin.h index 3704df7..d2e715f 100644 --- a/gcc/config/i386/immintrin.h +++ b/gcc/config/i386/immintrin.h @@ -60,6 +60,18 @@ #include <avx2intrin.h> #endif +#ifdef __LZCNT__ +#include <lzcntintrin.h> +#endif + +#ifdef __BMI__ +#include <bmiintrin.h> +#endif + +#ifdef __BMI2__ +#include <bmi2intrin.h> +#endif + #ifdef __RDRND__ extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff --git a/gcc/config/i386/lzcntintrin.h b/gcc/config/i386/lzcntintrin.h index 8df01d2..31db7dc 100644 --- a/gcc/config/i386/lzcntintrin.h +++ b/gcc/config/i386/lzcntintrin.h @@ -21,7 +21,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _X86INTRIN_H_INCLUDED +#if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED # error "Never use <lzcntintrin.h> directly; include <x86intrin.h> instead." #endif