mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	Remove Intel compiler support
include/linux/compiler-intel.h had no update in the past 3 years.
We often forget about the third C compiler to build the kernel.
For example, commit a0a12c3ed0 ("asm goto: eradicate CC_HAS_ASM_GOTO")
only mentioned GCC and Clang.
init/Kconfig defines CC_IS_GCC and CC_IS_CLANG but not CC_IS_ICC,
and nobody has reported any issue.
I guess the Intel Compiler support is broken, and nobody is caring
about it.
Harald Arnesen pointed out ICC (classic Intel C/C++ compiler) is
deprecated:
    $ icc -v
    icc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is
    deprecated and will be removed from product release in the second half
    of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended
    compiler moving forward. Please transition to use this compiler. Use
    '-diag-disable=10441' to disable this message.
    icc version 2021.7.0 (gcc version 12.1.0 compatibility)
Arnd Bergmann provided a link to the article, "Intel C/C++ compilers
complete adoption of LLVM".
lib/zstd/common/compiler.h and lib/zstd/compress/zstd_fast.c were kept
untouched for better sync with https://github.com/facebook/zstd
Link: https://www.intel.com/content/www/us/en/developer/articles/technical/adoption-of-llvm-complete-icx.html
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									b01fe98d34
								
							
						
					
					
						commit
						95207db816
					
				
					 11 changed files with 5 additions and 287 deletions
				
			
		|  | @ -15,11 +15,7 @@ | |||
| #include <linux/types.h> | ||||
| /* include compiler specific intrinsics */ | ||||
| #include <asm/ia64regs.h> | ||||
| #ifdef __INTEL_COMPILER | ||||
| # include <asm/intel_intrin.h> | ||||
| #else | ||||
| # include <asm/gcc_intrin.h> | ||||
| #endif | ||||
| #include <asm/gcc_intrin.h> | ||||
| 
 | ||||
| /*
 | ||||
|  * This function doesn't exist, so you'll get a linker error if | ||||
|  |  | |||
|  | @ -1,162 +0,0 @@ | |||
| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||||
| #ifndef _ASM_IA64_INTEL_INTRIN_H | ||||
| #define _ASM_IA64_INTEL_INTRIN_H | ||||
| /*
 | ||||
|  * Intel Compiler Intrinsics | ||||
|  * | ||||
|  * Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com> | ||||
|  * Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> | ||||
|  * Copyright (C) 2005,2006 Hongjiu Lu <hongjiu.lu@intel.com> | ||||
|  * | ||||
|  */ | ||||
| #include <ia64intrin.h> | ||||
| 
 | ||||
| #define ia64_barrier()		__memory_barrier() | ||||
| 
 | ||||
| #define ia64_stop()	/* Nothing: As of now stop bit is generated for each | ||||
| 		 	 * intrinsic | ||||
| 		 	 */ | ||||
| 
 | ||||
| #define ia64_getreg		__getReg | ||||
| #define ia64_setreg		__setReg | ||||
| 
 | ||||
| #define ia64_hint		__hint | ||||
| #define ia64_hint_pause		__hint_pause | ||||
| 
 | ||||
| #define ia64_mux1_brcst		_m64_mux1_brcst | ||||
| #define ia64_mux1_mix		_m64_mux1_mix | ||||
| #define ia64_mux1_shuf		_m64_mux1_shuf | ||||
| #define ia64_mux1_alt		_m64_mux1_alt | ||||
| #define ia64_mux1_rev		_m64_mux1_rev | ||||
| 
 | ||||
| #define ia64_mux1(x,v)		_m_to_int64(_m64_mux1(_m_from_int64(x), (v))) | ||||
| #define ia64_popcnt		_m64_popcnt | ||||
| #define ia64_getf_exp		__getf_exp | ||||
| #define ia64_shrp		_m64_shrp | ||||
| 
 | ||||
| #define ia64_tpa		__tpa | ||||
| #define ia64_invala		__invala | ||||
| #define ia64_invala_gr		__invala_gr | ||||
| #define ia64_invala_fr		__invala_fr | ||||
| #define ia64_nop		__nop | ||||
| #define ia64_sum		__sum | ||||
| #define ia64_ssm		__ssm | ||||
| #define ia64_rum		__rum | ||||
| #define ia64_rsm		__rsm | ||||
| #define ia64_fc			__fc | ||||
| 
 | ||||
| #define ia64_ldfs		__ldfs | ||||
| #define ia64_ldfd		__ldfd | ||||
| #define ia64_ldfe		__ldfe | ||||
| #define ia64_ldf8		__ldf8 | ||||
| #define ia64_ldf_fill		__ldf_fill | ||||
| 
 | ||||
| #define ia64_stfs		__stfs | ||||
| #define ia64_stfd		__stfd | ||||
| #define ia64_stfe		__stfe | ||||
| #define ia64_stf8		__stf8 | ||||
| #define ia64_stf_spill		__stf_spill | ||||
| 
 | ||||
| #define ia64_mf			__mf | ||||
| #define ia64_mfa		__mfa | ||||
| 
 | ||||
| #define ia64_fetchadd4_acq	__fetchadd4_acq | ||||
| #define ia64_fetchadd4_rel	__fetchadd4_rel | ||||
| #define ia64_fetchadd8_acq	__fetchadd8_acq | ||||
| #define ia64_fetchadd8_rel	__fetchadd8_rel | ||||
| 
 | ||||
| #define ia64_xchg1		_InterlockedExchange8 | ||||
| #define ia64_xchg2		_InterlockedExchange16 | ||||
| #define ia64_xchg4		_InterlockedExchange | ||||
| #define ia64_xchg8		_InterlockedExchange64 | ||||
| 
 | ||||
| #define ia64_cmpxchg1_rel	_InterlockedCompareExchange8_rel | ||||
| #define ia64_cmpxchg1_acq	_InterlockedCompareExchange8_acq | ||||
| #define ia64_cmpxchg2_rel	_InterlockedCompareExchange16_rel | ||||
| #define ia64_cmpxchg2_acq	_InterlockedCompareExchange16_acq | ||||
| #define ia64_cmpxchg4_rel	_InterlockedCompareExchange_rel | ||||
| #define ia64_cmpxchg4_acq	_InterlockedCompareExchange_acq | ||||
| #define ia64_cmpxchg8_rel	_InterlockedCompareExchange64_rel | ||||
| #define ia64_cmpxchg8_acq	_InterlockedCompareExchange64_acq | ||||
| 
 | ||||
| #define __ia64_set_dbr(index, val)	\ | ||||
| 		__setIndReg(_IA64_REG_INDR_DBR, index, val) | ||||
| #define ia64_set_ibr(index, val)	\ | ||||
| 		__setIndReg(_IA64_REG_INDR_IBR, index, val) | ||||
| #define ia64_set_pkr(index, val)	\ | ||||
| 		__setIndReg(_IA64_REG_INDR_PKR, index, val) | ||||
| #define ia64_set_pmc(index, val)	\ | ||||
| 		__setIndReg(_IA64_REG_INDR_PMC, index, val) | ||||
| #define ia64_set_pmd(index, val)	\ | ||||
| 		__setIndReg(_IA64_REG_INDR_PMD, index, val) | ||||
| #define ia64_set_rr(index, val)		\ | ||||
| 		__setIndReg(_IA64_REG_INDR_RR, index, val) | ||||
| 
 | ||||
| #define ia64_get_cpuid(index)	\ | ||||
| 		__getIndReg(_IA64_REG_INDR_CPUID, index) | ||||
| #define __ia64_get_dbr(index)		__getIndReg(_IA64_REG_INDR_DBR, index) | ||||
| #define ia64_get_ibr(index)		__getIndReg(_IA64_REG_INDR_IBR, index) | ||||
| #define ia64_get_pkr(index)		__getIndReg(_IA64_REG_INDR_PKR, index) | ||||
| #define ia64_get_pmc(index)		__getIndReg(_IA64_REG_INDR_PMC, index) | ||||
| #define ia64_get_pmd(index)		__getIndReg(_IA64_REG_INDR_PMD, index) | ||||
| #define ia64_get_rr(index)		__getIndReg(_IA64_REG_INDR_RR, index) | ||||
| 
 | ||||
| #define ia64_srlz_d		__dsrlz | ||||
| #define ia64_srlz_i		__isrlz | ||||
| 
 | ||||
| #define ia64_dv_serialize_data() | ||||
| #define ia64_dv_serialize_instruction() | ||||
| 
 | ||||
| #define ia64_st1_rel		__st1_rel | ||||
| #define ia64_st2_rel		__st2_rel | ||||
| #define ia64_st4_rel		__st4_rel | ||||
| #define ia64_st8_rel		__st8_rel | ||||
| 
 | ||||
| /* FIXME: need st4.rel.nta intrinsic */ | ||||
| #define ia64_st4_rel_nta	__st4_rel | ||||
| 
 | ||||
| #define ia64_ld1_acq		__ld1_acq | ||||
| #define ia64_ld2_acq		__ld2_acq | ||||
| #define ia64_ld4_acq		__ld4_acq | ||||
| #define ia64_ld8_acq		__ld8_acq | ||||
| 
 | ||||
| #define ia64_sync_i		__synci | ||||
| #define ia64_thash		__thash | ||||
| #define ia64_ttag		__ttag | ||||
| #define ia64_itcd		__itcd | ||||
| #define ia64_itci		__itci | ||||
| #define ia64_itrd		__itrd | ||||
| #define ia64_itri		__itri | ||||
| #define ia64_ptce		__ptce | ||||
| #define ia64_ptcl		__ptcl | ||||
| #define ia64_ptcg		__ptcg | ||||
| #define ia64_ptcga		__ptcga | ||||
| #define ia64_ptri		__ptri | ||||
| #define ia64_ptrd		__ptrd | ||||
| #define ia64_dep_mi		_m64_dep_mi | ||||
| 
 | ||||
| /* Values for lfhint in __lfetch and __lfetch_fault */ | ||||
| 
 | ||||
| #define ia64_lfhint_none	__lfhint_none | ||||
| #define ia64_lfhint_nt1		__lfhint_nt1 | ||||
| #define ia64_lfhint_nt2		__lfhint_nt2 | ||||
| #define ia64_lfhint_nta		__lfhint_nta | ||||
| 
 | ||||
| #define ia64_lfetch		__lfetch | ||||
| #define ia64_lfetch_excl	__lfetch_excl | ||||
| #define ia64_lfetch_fault	__lfetch_fault | ||||
| #define ia64_lfetch_fault_excl	__lfetch_fault_excl | ||||
| 
 | ||||
| #define ia64_intrin_local_irq_restore(x)		\ | ||||
| do {							\ | ||||
| 	if ((x) != 0) {					\ | ||||
| 		ia64_ssm(IA64_PSR_I);			\ | ||||
| 		ia64_srlz_d();				\ | ||||
| 	} else {					\ | ||||
| 		ia64_rsm(IA64_PSR_I);			\ | ||||
| 	}						\ | ||||
| } while (0) | ||||
| 
 | ||||
| #define __builtin_trap()	__break(0); | ||||
| 
 | ||||
| #endif /* _ASM_IA64_INTEL_INTRIN_H */ | ||||
|  | @ -14,11 +14,7 @@ | |||
| #include <linux/types.h> | ||||
| /* include compiler specific intrinsics */ | ||||
| #include <asm/ia64regs.h> | ||||
| #ifdef __INTEL_COMPILER | ||||
| # include <asm/intel_intrin.h> | ||||
| #else | ||||
| # include <asm/gcc_intrin.h> | ||||
| #endif | ||||
| #include <asm/gcc_intrin.h> | ||||
| #include <asm/cmpxchg.h> | ||||
| 
 | ||||
| #define ia64_set_rr0_to_rr4(val0, val1, val2, val3, val4)		\ | ||||
|  |  | |||
|  | @ -148,15 +148,12 @@ | |||
|  * | ||||
|  *****************************************************************************/ | ||||
| 
 | ||||
| #if defined(__GNUC__) && !defined(__INTEL_COMPILER) | ||||
| #if defined(__GNUC__) | ||||
| #include <acpi/platform/acgcc.h> | ||||
| 
 | ||||
| #elif defined(_MSC_VER) | ||||
| #include "acmsvc.h" | ||||
| 
 | ||||
| #elif defined(__INTEL_COMPILER) | ||||
| #include <acpi/platform/acintel.h> | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #if defined(_LINUX) || defined(__linux__) | ||||
|  |  | |||
|  | @ -35,7 +35,7 @@ | |||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #if defined(__GNUC__) && !defined(__INTEL_COMPILER) | ||||
| #if defined(__GNUC__) | ||||
| #include "acgccex.h" | ||||
| 
 | ||||
| #elif defined(_MSC_VER) | ||||
|  |  | |||
|  | @ -1,55 +0,0 @@ | |||
| /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ | ||||
| /******************************************************************************
 | ||||
|  * | ||||
|  * Name: acintel.h - VC specific defines, etc. | ||||
|  * | ||||
|  * Copyright (C) 2000 - 2022, Intel Corp. | ||||
|  * | ||||
|  *****************************************************************************/ | ||||
| 
 | ||||
| #ifndef __ACINTEL_H__ | ||||
| #define __ACINTEL_H__ | ||||
| 
 | ||||
| /*
 | ||||
|  * Use compiler specific <stdarg.h> is a good practice for even when | ||||
|  * -nostdinc is specified (i.e., ACPI_USE_STANDARD_HEADERS undefined. | ||||
|  */ | ||||
| #ifndef va_arg | ||||
| #include <stdarg.h> | ||||
| #endif | ||||
| 
 | ||||
| /* Configuration specific to Intel 64-bit C compiler */ | ||||
| 
 | ||||
| #define COMPILER_DEPENDENT_INT64    __int64 | ||||
| #define COMPILER_DEPENDENT_UINT64   unsigned __int64 | ||||
| #define ACPI_INLINE                 __inline | ||||
| 
 | ||||
| /*
 | ||||
|  * Calling conventions: | ||||
|  * | ||||
|  * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads) | ||||
|  * ACPI_EXTERNAL_XFACE      - External ACPI interfaces | ||||
|  * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces | ||||
|  * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces | ||||
|  */ | ||||
| #define ACPI_SYSTEM_XFACE | ||||
| #define ACPI_EXTERNAL_XFACE | ||||
| #define ACPI_INTERNAL_XFACE | ||||
| #define ACPI_INTERNAL_VAR_XFACE | ||||
| 
 | ||||
| /* remark 981 - operands evaluated in no particular order */ | ||||
| #pragma warning(disable:981) | ||||
| 
 | ||||
| /* warn C4100: unreferenced formal parameter */ | ||||
| #pragma warning(disable:4100) | ||||
| 
 | ||||
| /* warn C4127: conditional expression is constant */ | ||||
| #pragma warning(disable:4127) | ||||
| 
 | ||||
| /* warn C4706: assignment within conditional expression */ | ||||
| #pragma warning(disable:4706) | ||||
| 
 | ||||
| /* warn C4214: bit field types other than int */ | ||||
| #pragma warning(disable:4214) | ||||
| 
 | ||||
| #endif				/* __ACINTEL_H__ */ | ||||
|  | @ -1,34 +0,0 @@ | |||
| /* SPDX-License-Identifier: GPL-2.0 */ | ||||
| #ifndef __LINUX_COMPILER_TYPES_H | ||||
| #error "Please don't include <linux/compiler-intel.h> directly, include <linux/compiler.h> instead." | ||||
| #endif | ||||
| 
 | ||||
| #ifdef __ECC | ||||
| 
 | ||||
| /* Compiler specific definitions for Intel ECC compiler */ | ||||
| 
 | ||||
| #include <asm/intrinsics.h> | ||||
| 
 | ||||
| /* Intel ECC compiler doesn't support gcc specific asm stmts.
 | ||||
|  * It uses intrinsics to do the equivalent things. | ||||
|  */ | ||||
| 
 | ||||
| #define barrier() __memory_barrier() | ||||
| #define barrier_data(ptr) barrier() | ||||
| 
 | ||||
| #define RELOC_HIDE(ptr, off)					\ | ||||
|   ({ unsigned long __ptr;					\ | ||||
|      __ptr = (unsigned long) (ptr);				\ | ||||
|     (typeof(ptr)) (__ptr + (off)); }) | ||||
| 
 | ||||
| /* This should act as an optimization barrier on var.
 | ||||
|  * Given that this compiler does not have inline assembly, a compiler barrier | ||||
|  * is the best we can do. | ||||
|  */ | ||||
| #define OPTIMIZER_HIDE_VAR(var) barrier() | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| /* icc has this, but it's called _bswap16 */ | ||||
| #define __HAVE_BUILTIN_BSWAP16__ | ||||
| #define __builtin_bswap16 _bswap16 | ||||
|  | @ -64,16 +64,10 @@ | |||
|  * compiler should see some alignment anyway, when the return value is | ||||
|  * massaged by 'flags = ptr & 3; ptr &= ~3;'). | ||||
|  * | ||||
|  * Optional: not supported by icc | ||||
|  * | ||||
|  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-assume_005faligned-function-attribute
 | ||||
|  * clang: https://clang.llvm.org/docs/AttributeReference.html#assume-aligned
 | ||||
|  */ | ||||
| #if __has_attribute(__assume_aligned__) | ||||
| # define __assume_aligned(a, ...)       __attribute__((__assume_aligned__(a, ## __VA_ARGS__))) | ||||
| #else | ||||
| # define __assume_aligned(a, ...) | ||||
| #endif | ||||
| #define __assume_aligned(a, ...)        __attribute__((__assume_aligned__(a, ## __VA_ARGS__))) | ||||
| 
 | ||||
| /*
 | ||||
|  * Note the long name. | ||||
|  | @ -85,7 +79,6 @@ | |||
| /*
 | ||||
|  * Optional: only supported since gcc >= 9 | ||||
|  * Optional: not supported by clang | ||||
|  * Optional: not supported by icc | ||||
|  * | ||||
|  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-copy-function-attribute
 | ||||
|  */ | ||||
|  | @ -98,7 +91,6 @@ | |||
| /*
 | ||||
|  * Optional: not supported by gcc | ||||
|  * Optional: only supported since clang >= 14.0 | ||||
|  * Optional: not supported by icc | ||||
|  * | ||||
|  * clang: https://clang.llvm.org/docs/AttributeReference.html#diagnose_as_builtin
 | ||||
|  */ | ||||
|  | @ -122,7 +114,6 @@ | |||
| 
 | ||||
| /*
 | ||||
|  * Optional: not supported by clang | ||||
|  * Optional: not supported by icc | ||||
|  * | ||||
|  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-designated_005finit-type-attribute
 | ||||
|  */ | ||||
|  | @ -236,7 +227,6 @@ | |||
| /*
 | ||||
|  * Optional: only supported since gcc >= 8 | ||||
|  * Optional: not supported by clang | ||||
|  * Optional: not supported by icc | ||||
|  * | ||||
|  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-nonstring-variable-attribute
 | ||||
|  */ | ||||
|  | @ -267,7 +257,6 @@ | |||
| 
 | ||||
| /*
 | ||||
|  * Optional: not supported by gcc. | ||||
|  * Optional: not supported by icc. | ||||
|  * | ||||
|  * clang: https://clang.llvm.org/docs/AttributeReference.html#overloadable
 | ||||
|  */ | ||||
|  | @ -287,7 +276,6 @@ | |||
|  * Note: the "type" argument should match any __builtin_object_size(p, type) usage. | ||||
|  * | ||||
|  * Optional: not supported by gcc. | ||||
|  * Optional: not supported by icc. | ||||
|  * | ||||
|  * clang: https://clang.llvm.org/docs/AttributeReference.html#pass-object-size-pass-dynamic-object-size
 | ||||
|  */ | ||||
|  |  | |||
|  | @ -120,8 +120,6 @@ static inline void __chk_io_ptr(const volatile void __iomem *ptr) { } | |||
| /* Compiler specific macros. */ | ||||
| #ifdef __clang__ | ||||
| #include <linux/compiler-clang.h> | ||||
| #elif defined(__INTEL_COMPILER) | ||||
| #include <linux/compiler-intel.h> | ||||
| #elif defined(__GNUC__) | ||||
| /* The above compilers also define __GNUC__, so order is important here. */ | ||||
| #include <linux/compiler-gcc.h> | ||||
|  |  | |||
|  | @ -12,8 +12,6 @@ get_c_compiler_info() | |||
| 	cat <<- EOF | "$@" -E -P -x c - 2>/dev/null | ||||
| 	#if defined(__clang__) | ||||
| 	Clang	__clang_major__  __clang_minor__  __clang_patchlevel__ | ||||
| 	#elif defined(__INTEL_COMPILER) | ||||
| 	ICC	__INTEL_COMPILER  __INTEL_COMPILER_UPDATE | ||||
| 	#elif defined(__GNUC__) | ||||
| 	GCC	__GNUC__  __GNUC_MINOR__  __GNUC_PATCHLEVEL__ | ||||
| 	#else | ||||
|  |  | |||
|  | @ -19,10 +19,6 @@ binutils) | |||
| gcc) | ||||
| 	echo 5.1.0 | ||||
| 	;; | ||||
| icc) | ||||
| 	# temporary | ||||
| 	echo 16.0.3 | ||||
| 	;; | ||||
| llvm) | ||||
| 	if [ "$SRCARCH" = s390 ]; then | ||||
| 		echo 15.0.0 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Masahiro Yamada
						Masahiro Yamada