mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			adxintrin.h: Remove guarding __ADX__ check.
Changelog
        * config/i386/adxintrin.h: Remove guarding __ADX__ check.
        * config/i386/x86intrin.h: Likewise.
        * config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove
        OPTION_MASK_ISA_ADX from needed options for
        __builtin_ia32_addcarryx_u32 and __builtin_ia32_addcarryx_u64.
        (ix86_expand_builtin): Use add<mode>3_carry in expanding of
        IX86_BUILTIN_ADDCARRYX32 and IX86_BUILTIN_ADDCARRYX64.
testsuite/Changelog
        * gcc.target/i386/adx-addxcarry32-3.c: New.
        * gcc.target/i386/adx-addxcarry64-3.c: New.
From-SVN: r190254
			
			
This commit is contained in:
		
							parent
							
								
									0c02ab396e
								
							
						
					
					
						commit
						9319fa21f4
					
				|  | @ -1,3 +1,13 @@ | ||||||
|  | 2012-08-09  Michael Zolotukhin  <michael.v.zolotukhin@intel.com> | ||||||
|  | 
 | ||||||
|  | 	* config/i386/adxintrin.h: Remove guarding __ADX__ check. | ||||||
|  | 	* config/i386/x86intrin.h: Likewise. | ||||||
|  | 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove | ||||||
|  | 	OPTION_MASK_ISA_ADX from needed options for | ||||||
|  | 	__builtin_ia32_addcarryx_u32 and __builtin_ia32_addcarryx_u64. | ||||||
|  | 	(ix86_expand_builtin): Use add<mode>3_carry in expanding of | ||||||
|  | 	IX86_BUILTIN_ADDCARRYX32 and IX86_BUILTIN_ADDCARRYX64. | ||||||
|  | 
 | ||||||
| 2012-08-09  Andrey Belevantsev  <abel@ispras.ru> | 2012-08-09  Andrey Belevantsev  <abel@ispras.ru> | ||||||
| 
 | 
 | ||||||
| 	PR rtl-optimization/53701 | 	PR rtl-optimization/53701 | ||||||
|  |  | ||||||
|  | @ -25,10 +25,6 @@ | ||||||
| # error "Never use <adxintrin.h> directly; include <x86intrin.h> instead." | # error "Never use <adxintrin.h> directly; include <x86intrin.h> instead." | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifndef __ADX__ |  | ||||||
| # error "Flag-preserving add-carry instructions not enabled" |  | ||||||
| #endif /* __ADX__ */ |  | ||||||
| 
 |  | ||||||
| #ifndef _ADXINTRIN_H_INCLUDED | #ifndef _ADXINTRIN_H_INCLUDED | ||||||
| #define _ADXINTRIN_H_INCLUDED | #define _ADXINTRIN_H_INCLUDED | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -27968,9 +27968,9 @@ ix86_init_mmx_sse_builtins (void) | ||||||
| 	       INT_FTYPE_PULONGLONG, IX86_BUILTIN_RDSEED64_STEP); | 	       INT_FTYPE_PULONGLONG, IX86_BUILTIN_RDSEED64_STEP); | ||||||
| 
 | 
 | ||||||
|   /* ADCX */ |   /* ADCX */ | ||||||
|   def_builtin (OPTION_MASK_ISA_ADX, "__builtin_ia32_addcarryx_u32", |   def_builtin (0, "__builtin_ia32_addcarryx_u32", | ||||||
| 	       UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED, IX86_BUILTIN_ADDCARRYX32); | 	       UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED, IX86_BUILTIN_ADDCARRYX32); | ||||||
|   def_builtin (OPTION_MASK_ISA_ADX && OPTION_MASK_ISA_64BIT, |   def_builtin (OPTION_MASK_ISA_64BIT, | ||||||
| 	       "__builtin_ia32_addcarryx_u64", | 	       "__builtin_ia32_addcarryx_u64", | ||||||
| 	       UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG, | 	       UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG, | ||||||
| 	       IX86_BUILTIN_ADDCARRYX64); | 	       IX86_BUILTIN_ADDCARRYX64); | ||||||
|  | @ -30343,12 +30343,12 @@ rdseed_step: | ||||||
|       return target; |       return target; | ||||||
| 
 | 
 | ||||||
|     case IX86_BUILTIN_ADDCARRYX32: |     case IX86_BUILTIN_ADDCARRYX32: | ||||||
|       icode = CODE_FOR_adcxsi3; |       icode = TARGET_ADX ? CODE_FOR_adcxsi3 : CODE_FOR_addsi3_carry; | ||||||
|       mode0 = SImode; |       mode0 = SImode; | ||||||
|       goto addcarryx; |       goto addcarryx; | ||||||
| 
 | 
 | ||||||
|     case IX86_BUILTIN_ADDCARRYX64: |     case IX86_BUILTIN_ADDCARRYX64: | ||||||
|       icode = CODE_FOR_adcxdi3; |       icode = TARGET_ADX ? CODE_FOR_adcxdi3 : CODE_FOR_adddi3_carry; | ||||||
|       mode0 = DImode; |       mode0 = DImode; | ||||||
| 
 | 
 | ||||||
| addcarryx: | addcarryx: | ||||||
|  |  | ||||||
|  | @ -105,8 +105,6 @@ | ||||||
| #include <prfchwintrin.h> | #include <prfchwintrin.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef __ADX__ |  | ||||||
| #include <adxintrin.h> | #include <adxintrin.h> | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| #endif /* _X86INTRIN_H_INCLUDED */ | #endif /* _X86INTRIN_H_INCLUDED */ | ||||||
|  |  | ||||||
|  | @ -1,3 +1,8 @@ | ||||||
|  | 2012-08-09  Michael Zolotukhin  <michael.v.zolotukhin@intel.com> | ||||||
|  | 
 | ||||||
|  | 	* gcc.target/i386/adx-addxcarry32-3.c: New. | ||||||
|  | 	* gcc.target/i386/adx-addxcarry64-3.c: New. | ||||||
|  | 
 | ||||||
| 2012-08-09  Andrey Belevantsev  <abel@ispras.ru> | 2012-08-09  Andrey Belevantsev  <abel@ispras.ru> | ||||||
| 
 | 
 | ||||||
| 	PR rtl-optimization/53701 | 	PR rtl-optimization/53701 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,15 @@ | ||||||
|  | /* { dg-do compile } */ | ||||||
|  | /* { dg-options "-mno-adx -O2" } */ | ||||||
|  | /* { dg-final { scan-assembler "adcl" } } */ | ||||||
|  | 
 | ||||||
|  | #include <x86intrin.h> | ||||||
|  | 
 | ||||||
|  | volatile unsigned char c; | ||||||
|  | volatile unsigned int x, y; | ||||||
|  | unsigned int *sum; | ||||||
|  | 
 | ||||||
|  | void extern | ||||||
|  | adx_test (void) | ||||||
|  | { | ||||||
|  |     c = _addcarryx_u32 (c, x, y, sum); | ||||||
|  | } | ||||||
|  | @ -0,0 +1,15 @@ | ||||||
|  | /* { dg-do compile { target { ! ia32 } } } */ | ||||||
|  | /* { dg-options "-mno-adx -O2" } */ | ||||||
|  | /* { dg-final { scan-assembler "adcq" } } */ | ||||||
|  | 
 | ||||||
|  | #include <x86intrin.h> | ||||||
|  | 
 | ||||||
|  | volatile unsigned char c; | ||||||
|  | volatile unsigned long long x, y; | ||||||
|  | unsigned long long *sum; | ||||||
|  | 
 | ||||||
|  | void extern | ||||||
|  | adx_test (void) | ||||||
|  | { | ||||||
|  |     c = _addcarryx_u64 (c, x, y, sum); | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	 Michael Zolotukhin
						Michael Zolotukhin