r134168 - in /branches/ix86/avx/gcc: ChangeLog....
hjl@gcc.gnu.org
hjl@gcc.gnu.org
Thu Apr 10 18:38:00 GMT 2008
Author: hjl
Date: Thu Apr 10 18:38:30 2008
New Revision: 134168
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=134168
Log:
2008-04-10 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
* config/i386/cpuid.h (bit_FMA): New.
(bit_XSAVE): Likewise.
(bit_OSXSAVE): Likewise.
(bit_AVX): Likewise.
* config/i386/gmmintrin.h: New.
* config/i386/i386.c (OPTION_MASK_ISA_AVX_SET): New.
(OPTION_MASK_ISA_FMA_SET): Likewise.
(OPTION_MASK_ISA_AVX_UNSET): Likewise.
(OPTION_MASK_ISA_FMA_SET): Likewise.
(OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
(ix86_handle_option): Handle OPT_mavx and OPT_mfma.
(pta_flags): Add PTA_AVX and PTA_FMA.
(override_options): Handle PTA_AVX and PTA_FMA.
(init_cumulative_args): Handle warn_avx.
(classify_argument): Handle V8SFmode, V8SImode, V32QImode,
V16HImode, V4DFmode and V4DImode.
(function_arg_advance_32): Likewise.
(function_arg_64): Likewise.
(standard_sse_constant_opcode): Handle AVX modes.
(print_reg): Handle 'x' and AVX registers.
(print_operand): Handle 'x' and AVX vector compare instructions.
(output_387_binary_op): Support AVX.
(ix86_builtins): Add IX86_BUILTIN_ADDPD256 and
IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256.
IX86_BUILTIN_DIVPD256, IX86_BUILTIN_DIVPS256,
IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256, IX86_BUILTIN_CMPPS256,
IX86_BUILTIN_CVTPD2PS256, IX86_BUILTIN_CVTPS2DQ256,
IX86_BUILTIN_CVTPS2PD256, IX86_BUILTIN_CVTTPD2DQ256,
IX86_BUILTIN_CVTPD2DQ256 and IX86_BUILTIN_CVTTPS2DQ256.
(bdesc_sse_3arg): Add __builtin_ia32_blendpd256,
__builtin_ia32_blendps256, __builtin_ia32_blendvpd256,
__builtin_ia32_blendvps256, __builtin_ia32_dpps256,
__builtin_ia32_shufpd256, __builtin_ia32_shufps256,
__builtin_ia32_cmpsd, __builtin_ia32_cmpss,
__builtin_ia32_cmppd, __builtin_ia32_cmpps,
__builtin_ia32_cmppd256 and __builtin_ia32_cmpps256.
(bdesc_2arg): Add __builtin_ia32_addpd256,
__builtin_ia32_addps256, __builtin_ia32_addsubpd256,
__builtin_ia32_addsubps256, __builtin_ia32_andpd256,
__builtin_ia32_andps256, __builtin_ia32_andnpd256,
__builtin_ia32_andnps256, __builtin_ia32_divpd256,
__builtin_ia32_divps256, __builtin_ia32_haddpd256,
__builtin_ia32_hsubps256, __builtin_ia32_hsubpd256,
__builtin_ia32_haddps256, __builtin_ia32_maxpd256,
__builtin_ia32_maxps256, __builtin_ia32_minpd256,
__builtin_ia32_minps256, __builtin_ia32_mulpd256,
__builtin_ia32_mulps256, __builtin_ia32_orpd256,
__builtin_ia32_orps256, __builtin_ia32_subpd256,
__builtin_ia32_subps256, __builtin_ia32_xorpd256,
__builtin_ia32_xorps256.
(bdesc_1arg): Add entries for IX86_BUILTIN_CVTDQ2PD256,
IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256 and
IX86_BUILTIN_CVTTPS2DQ256.
(ix86_init_mmx_sse_builtins): Handle __builtin_ia32_blendpd256,
__builtin_ia32_blendps256, __builtin_ia32_blendvpd256,
__builtin_ia32_blendvps256, __builtin_ia32_addpd256 and
__builtin_ia32_addps256. Define __builtin_ia32_cvtdq2pd256,
__builtin_ia32_cvtdq2ps256, __builtin_ia32_cvtpd2ps256,
__builtin_ia32_cvtps2dq256, __builtin_ia32_cvtps2pd256,
__builtin_ia32_cvttpd2dq256, __builtin_ia32_cvtpd2dq256 and
__builtin_ia32_cvttps2dq256.
(ix86_expand_sse_4_operands_builtin): Handle
CODE_FOR_avx_blendpd256, CODE_FOR_avx_blendvpd256,
CODE_FOR_avx_blendvps256, CODE_FOR_avx_cmpsdv2df3,
CODE_FOR_avx_cmpssv4sf3, CODE_FOR_avx_cmppdv2df3,
CODE_FOR_avx_cmppsv4sf3, CODE_FOR_avx_cmppsv8sf3 and
CODE_FOR_avx_cmppdv4df3.
(ix86_expand_builtin): Use switch instead of if.
(ix86_hard_regno_mode_ok): Handle AVX mode.
(ix86_vector_mode_supported_p): Likewise.
* config/i386/i386.h (TARGET_AVX): New.
(TARGET_FMA): Likewise.
(TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
(BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
(VALID_AVX_REG_MODE): New.
(AVX_VEC_FLOAT_MODE_P): Likewise.
(UNITS_PER_SIMD_WORD): Set to 32 for TARGET_AVX.
(SSE_REG_MODE_P): Allow AVX modes.
(ix86_args): Add a warn_avx field.
* config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
(VECTOR_MODES (FLOAT, 32)): Likewise.
(VECTOR_MODE (INT, DI, 8)): Likewise.
(VECTOR_MODE (INT, HI, 32)): Likewise.
(VECTOR_MODE (INT, QI, 64)): Likewise.
(VECTOR_MODE (FLOAT, DF, 8)): Likewise.
(VECTOR_MODE (FLOAT, SF, 16)): Likewise.
(VECTOR_MODE (INT, DI, 4)): Removed.
(VECTOR_MODE (INT, SI, 8)): Likewise.
(VECTOR_MODE (INT, HI, 16)): Likewise.
(VECTOR_MODE (INT, QI, 32)): Likewise.
(VECTOR_MODE (FLOAT, SF, 8)): Likewise.
(INT_MODE (OI, 32)): Likewise.
* config/i386/i386.opt (mavx): New.
(mfma): Likewise.
Added:
branches/ix86/avx/gcc/config/i386/gmmintrin.h
Modified:
branches/ix86/avx/gcc/ChangeLog.avx
branches/ix86/avx/gcc/config.gcc
branches/ix86/avx/gcc/config/i386/cpuid.h
branches/ix86/avx/gcc/config/i386/i386-modes.def
branches/ix86/avx/gcc/config/i386/i386.c
branches/ix86/avx/gcc/config/i386/i386.h
branches/ix86/avx/gcc/config/i386/i386.opt
More information about the Gcc-cvs
mailing list