Keywords describing target attributes#
Effective-target keywords identify sets of targets that support particular functionality. They are used to limit tests to be run only for particular targets, or to specify that particular sets of targets are expected to fail some tests.
Effective-target keywords are defined in lib/target-supports.exp in
the GCC testsuite, with the exception of those that are documented as
being local to a particular test directory.
The effective target takes into account all of the compiler options
with which the test will be compiled, including the multilib options.
By convention, keywords ending in _nocache can also include options
specified for the particular test in an earlier dg-options or
dg-add-options directive.
Endianness#
beTarget uses big-endian memory order for multi-byte and multi-word data.
leTarget uses little-endian memory order for multi-byte and multi-word data.
Data type sizes#
ilp32Target has 32-bit
int,long, and pointers.lp64Target has 32-bit
int, 64-bitlongand pointers.llp64Target has 32-bit
intandlong, 64-bitlong longand pointers.double64Target has 64-bit
double.double64plusTarget has
doublethat is 64 bits or longer.longdouble128Target has 128-bit
long double.int32plusTarget has
intthat is at 32 bits or longer.int16Target has
intthat is 16 bits or shorter.longlong64Target has 64-bit
long long.long_neq_intTarget has
intandlongwith different sizes.short_eq_intTarget has
shortandintwith the same size.ptr_eq_shortTarget has pointers (
void *) andshortwith the same size.int_eq_floatTarget has
intandfloatwith the same size.ptr_eq_longTarget has pointers (
void *) andlongwith the same size.large_doubleTarget supports
doublethat is longer thanfloat.large_long_doubleTarget supports
long doublethat is longer thandouble.ptr32plusTarget has pointers that are 32 bits or longer.
size20plusTarget has a 20-bit or larger address space, so supports at least 16-bit array and structure sizes.
size24plusTarget has a 24-bit or larger address space, so supports at least 20-bit array and structure sizes.
size32plusTarget has a 32-bit or larger address space, so supports at least 24-bit array and structure sizes.
4byte_wchar_tTarget has
wchar_tthat is at least 4 bytes.floatnTarget has the
_Floatntype.floatnxTarget has the
_Floatnxtype.floatn_runtimeTarget has the
_Floatntype, including runtime support for any options added withdg-add-options.floatnx_runtimeTarget has the
_Floatnxtype, including runtime support for any options added withdg-add-options.floatn_nx_runtimeTarget has runtime support for any options added with
dg-add-optionsfor any_Floatnor_Floatnxtype.infTarget supports floating point infinite (
inf) for typedouble.inffTarget supports floating point infinite (
inf) for typefloat.
Fortran-specific attributes#
fortran_integer_16Target supports Fortran
integerthat is 16 bytes or longer.fortran_real_10Target supports Fortran
realthat is 10 bytes or longer.fortran_real_16Target supports Fortran
realthat is 16 bytes or longer.fortran_large_intTarget supports Fortran
integerkinds larger thaninteger(8).fortran_large_realTarget supports Fortran
realkinds larger thanreal(8).
Vector-specific attributes#
vect_align_stack_varsThe target’s ABI allows stack variables to be aligned to the preferred vector alignment.
vect_avg_qiTarget supports both signed and unsigned averaging operations on vectors of bytes.
vect_mulhrs_hiTarget supports both signed and unsigned multiply-high-with-round-and-scale operations on vectors of half-words.
vect_sdiv_pow2_siTarget supports signed division by constant power-of-2 operations on vectors of 4-byte integers.
vect_conditionTarget supports vector conditional operations.
vect_cond_mixedTarget supports vector conditional operations where comparison operands have different type from the value operands.
vect_doubleTarget supports hardware vectors of
double.vect_double_cond_arithTarget supports conditional addition, subtraction, multiplication, division, minimum and maximum on vectors of
double, via thecond_optabs.vect_element_align_preferredThe target’s preferred vector alignment is the same as the element alignment.
vect_floatTarget supports hardware vectors of
floatwhen-funsafe-math-optimizationsis in effect.vect_float_strictTarget supports hardware vectors of
floatwhen-funsafe-math-optimizationsis not in effect. This impliesvect_float.vect_intTarget supports hardware vectors of
int.vect_longTarget supports hardware vectors of
long.vect_long_longTarget supports hardware vectors of
long long.vect_check_ptrsTarget supports the
check_raw_ptrsandcheck_war_ptrsoptabs on vectors.vect_fully_maskedTarget supports fully-masked (also known as fully-predicated) loops, so that vector loops can handle partial as well as full vectors.
vect_masked_loadTarget supports vector masked loads.
vect_masked_storeTarget supports vector masked stores.
vect_gather_load_ifnTarget supports vector gather loads using internal functions (rather than via built-in functions or emulation).
vect_scatter_storeTarget supports vector scatter stores.
vect_aligned_arraysTarget aligns arrays to vector alignment boundary.
vect_hw_misalignTarget supports a vector misalign access.
vect_no_alignTarget does not support a vector alignment mechanism.
vect_peeling_profitableTarget might require to peel loops for alignment purposes.
vect_no_int_min_maxTarget does not support a vector min and max instruction on
int.vect_no_int_addTarget does not support a vector add instruction on
int.vect_no_bitwiseTarget does not support vector bitwise instructions.
vect_bool_cmpTarget supports comparison of
boolvectors for at least one vector length.vect_char_addTarget supports addition of
charvectors for at least one vector length.vect_char_multTarget supports
vector charmultiplication.vect_short_multTarget supports
vector shortmultiplication.vect_int_multTarget supports
vector intmultiplication.vect_long_multTarget supports 64 bit
vector longmultiplication.vect_extract_even_oddTarget supports vector even/odd element extraction.
vect_extract_even_odd_wideTarget supports vector even/odd element extraction of vectors with elements
SImodeor larger.vect_interleaveTarget supports vector interleaving.
vect_stridedTarget supports vector interleaving and extract even/odd.
vect_strided_wideTarget supports vector interleaving and extract even/odd for wide element types.
vect_permTarget supports vector permutation.
vect_perm_byteTarget supports permutation of vectors with 8-bit elements.
vect_perm_shortTarget supports permutation of vectors with 16-bit elements.
vect_perm3_byteTarget supports permutation of vectors with 8-bit elements, and for the default vector length it is possible to permute:
{ a0, a1, a2, b0, b1, b2, ... }
to:
{ a0, a0, a0, b0, b0, b0, ... } { a1, a1, a1, b1, b1, b1, ... } { a2, a2, a2, b2, b2, b2, ... }
using only two-vector permutes, regardless of how long the sequence is.
vect_perm3_intLike
vect_perm3_byte, but for 32-bit elements.vect_perm3_shortLike
vect_perm3_byte, but for 16-bit elements.vect_shiftTarget supports a hardware vector shift operation.
vect_unaligned_possibleTarget prefers vectors to have an alignment greater than element alignment, but also allows unaligned vector accesses in some circumstances.
vect_variable_lengthTarget has variable-length vectors.
vect64Target supports vectors of 64 bits.
vect32Target supports vectors of 32 bits.
vect_widen_sum_hi_to_siTarget supports a vector widening summation of
shortoperands intointresults, or can promote (unpack) fromshorttoint.vect_widen_sum_qi_to_hiTarget supports a vector widening summation of
charoperands intoshortresults, or can promote (unpack) fromchartoshort.vect_widen_sum_qi_to_siTarget supports a vector widening summation of
charoperands intointresults.vect_widen_mult_qi_to_hiTarget supports a vector widening multiplication of
charoperands intoshortresults, or can promote (unpack) fromchartoshortand perform non-widening multiplication ofshort.vect_widen_mult_hi_to_siTarget supports a vector widening multiplication of
shortoperands intointresults, or can promote (unpack) fromshorttointand perform non-widening multiplication ofint.vect_widen_mult_si_to_di_patternTarget supports a vector widening multiplication of
intoperands intolongresults.vect_sdot_qiTarget supports a vector dot-product of
signed char.vect_udot_qiTarget supports a vector dot-product of
unsigned char.vect_usdot_qiTarget supports a vector dot-product where one operand of the multiply is
signed charand the other ofunsigned char.vect_sdot_hiTarget supports a vector dot-product of
signed short.vect_udot_hiTarget supports a vector dot-product of
unsigned short.vect_pack_truncTarget supports a vector demotion (packing) of
shorttocharand frominttoshortusing modulo arithmetic.vect_unpackTarget supports a vector promotion (unpacking) of
chartoshortand fromchartoint.vect_intfloat_cvtTarget supports conversion from
signed inttofloat.vect_uintfloat_cvtTarget supports conversion from
unsigned inttofloat.vect_floatint_cvtTarget supports conversion from
floattosigned int.vect_floatuint_cvtTarget supports conversion from
floattounsigned int.vect_intdouble_cvtTarget supports conversion from
signed inttodouble.vect_doubleint_cvtTarget supports conversion from
doubletosigned int.vect_max_reducTarget supports max reduction for vectors.
vect_sizes_16B_8BTarget supports 16- and 8-bytes vectors.
vect_sizes_32B_16BTarget supports 32- and 16-bytes vectors.
vect_logical_reducTarget supports AND, IOR and XOR reduction on vectors.
vect_fold_extract_lastTarget supports the
fold_extract_lastoptab.vect_len_load_storeTarget supports the
len_loadandlen_storeoptabs.vect_partial_vectors_usage_1Target supports loop vectorization with partial vectors and
vect-partial-vector-usageis set to 1.vect_partial_vectors_usage_2Target supports loop vectorization with partial vectors and
vect-partial-vector-usageis set to 2.vect_partial_vectorsTarget supports loop vectorization with partial vectors and
vect-partial-vector-usageis nonzero.vect_slp_v2qi_store_alignTarget supports vectorization of 2-byte char stores with 2-byte aligned address at plain
-O2.vect_slp_v4qi_store_alignTarget supports vectorization of 4-byte char stores with 4-byte aligned address at plain
-O2.vect_slp_v4qi_store_unalignTarget supports vectorization of 4-byte char stores with unaligned address at plain
-O2.struct_4char_block_moveTarget supports block move for 8-byte aligned 4-byte size struct initialization.
vect_slp_v4qi_store_unalign_1Target supports vectorization of 4-byte char stores with unaligned address or store them with constant pool at plain
-O2.struct_8char_block_moveTarget supports block move for 8-byte aligned 8-byte size struct initialization.
vect_slp_v8qi_store_unalign_1Target supports vectorization of 8-byte char stores with unaligned address or store them with constant pool at plain
-O2.struct_16char_block_moveTarget supports block move for 8-byte aligned 16-byte size struct initialization.
vect_slp_v16qi_store_unalign_1Target supports vectorization of 16-byte char stores with unaligned address or store them with constant pool at plain
-O2.vect_slp_v2hi_store_alignTarget supports vectorization of 4-byte short stores with 4-byte aligned addressat plain
-O2.vect_slp_v2hi_store_unalignTarget supports vectorization of 4-byte short stores with unaligned address at plain
-O2.vect_slp_v4hi_store_unalignTarget supports vectorization of 8-byte short stores with unaligned address at plain
-O2.vect_slp_v2si_store_alignTarget supports vectorization of 8-byte int stores with 8-byte aligned address at plain
-O2.vect_slp_v4si_store_unalignTarget supports vectorization of 16-byte int stores with unaligned address at plain
-O2.
Thread Local Storage attributes#
tlsTarget supports thread-local storage.
tls_nativeTarget supports native (rather than emulated) thread-local storage.
tls_runtimeTest system supports executing TLS executables.
Decimal floating point attributes#
dfpTargets supports compiling decimal floating point extension to C.
dfp_nocacheIncluding the options used to compile this particular test, the target supports compiling decimal floating point extension to C.
dfprtTest system can execute decimal floating point tests.
dfprt_nocacheIncluding the options used to compile this particular test, the test system can execute decimal floating point tests.
hard_dfpTarget generates decimal floating point instructions with current options.
dfp_bidTarget uses the BID format for decimal floating point.
ARM-specific attributes#
arm32ARM target generates 32-bit code.
arm_little_endianARM target that generates little-endian code.
arm_eabiARM target adheres to the ABI for the ARM Architecture.
arm_fp_okARM target defines
__ARM_FPusing-mfloat-abi=softfpor equivalent options. Some multilibs may be incompatible with these options.
arm_fp_dp_okARM target defines
__ARM_FPwith double-precision support using-mfloat-abi=softfpor equivalent options. Some multilibs may be incompatible with these options.arm_hf_eabiARM target adheres to the VFP and Advanced SIMD Register Arguments variant of the ABI for the ARM Architecture (as selected with
-mfloat-abi=hard).arm_softfloatARM target uses emulated floating point operations.
arm_hard_vfp_okARM target supports
-mfpu=vfp -mfloat-abi=hard. Some multilibs may be incompatible with these options.arm_iwmmxt_okARM target supports
-mcpu=iwmmxt. Some multilibs may be incompatible with this option.arm_neonARM target supports generating NEON instructions.
arm_tune_string_ops_prefer_neonTest CPU tune supports inlining string operations with NEON instructions.
arm_neon_hwTest system supports executing NEON instructions.
arm_neonv2_hwTest system supports executing NEON v2 instructions.
arm_neon_okARM Target supports
-mfpu=neon -mfloat-abi=softfpor compatible options. Some multilibs may be incompatible with these options.arm_neon_ok_no_float_abiARM Target supports NEON with
-mfpu=neon, but without any -mfloat-abi= option. Some multilibs may be incompatible with this option.arm_neonv2_okARM Target supports
-mfpu=neon-vfpv4 -mfloat-abi=softfpor compatible options. Some multilibs may be incompatible with these options.
arm_fp16_okTarget supports options to generate VFP half-precision floating-point instructions. Some multilibs may be incompatible with these options. This test is valid for ARM only.
arm_fp16_hwTarget supports executing VFP half-precision floating-point instructions. This test is valid for ARM only.
arm_neon_fp16_okARM Target supports
-mfpu=neon-fp16 -mfloat-abi=softfpor compatible options, including-mfp16-format=ieeeif necessary to obtain the__fp16type. Some multilibs may be incompatible with these options.arm_neon_fp16_hwTest system supports executing Neon half-precision float instructions. (Implies previous.)
arm_fp16_alternative_okARM target supports the ARM FP16 alternative format. Some multilibs may be incompatible with the options needed.
arm_fp16_none_okARM target supports specifying none as the ARM FP16 format.
arm_thumb1_okARM target generates Thumb-1 code for
-mthumb.arm_thumb2_okARM target generates Thumb-2 code for
-mthumb.arm_nothumbARM target that is not using Thumb.
arm_vfp_okARM target supports
-mfpu=vfp -mfloat-abi=softfp. Some multilibs may be incompatible with these options.
arm_vfp3_okARM target supports
-mfpu=vfp3 -mfloat-abi=softfp. Some multilibs may be incompatible with these options.
arm_arch_v8a_hard_okThe compiler is targeting
arm*-*-*and can compile and assemble code using the options-march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard. This is not enough to guarantee that linking works.arm_arch_v8a_hard_multilibThe compiler is targeting
arm*-*-*and can build programs using the options-march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard. The target can also run the resulting binaries.arm_v8_vfp_okARM target supports
-mfpu=fp-armv8 -mfloat-abi=softfp. Some multilibs may be incompatible with these options.arm_v8_neon_okARM target supports
-mfpu=neon-fp-armv8 -mfloat-abi=softfp. Some multilibs may be incompatible with these options.
arm_v8_1a_neon_okARM target supports options to generate ARMv8.1-A Adv.SIMD instructions. Some multilibs may be incompatible with these options.
arm_v8_1a_neon_hwARM target supports executing ARMv8.1-A Adv.SIMD instructions. Some multilibs may be incompatible with the options needed. Implies arm_v8_1a_neon_ok.
arm_acq_relARM target supports acquire-release instructions.
arm_v8_2a_fp16_scalar_okARM target supports options to generate instructions for ARMv8.2-A and scalar instructions from the FP16 extension. Some multilibs may be incompatible with these options.
arm_v8_2a_fp16_scalar_hwARM target supports executing instructions for ARMv8.2-A and scalar instructions from the FP16 extension. Some multilibs may be incompatible with these options. Implies arm_v8_2a_fp16_neon_ok.
arm_v8_2a_fp16_neon_okARM target supports options to generate instructions from ARMv8.2-A with the FP16 extension. Some multilibs may be incompatible with these options. Implies arm_v8_2a_fp16_scalar_ok.
arm_v8_2a_fp16_neon_hwARM target supports executing instructions from ARMv8.2-A with the FP16 extension. Some multilibs may be incompatible with these options. Implies arm_v8_2a_fp16_neon_ok and arm_v8_2a_fp16_scalar_hw.
arm_v8_2a_dotprod_neon_okARM target supports options to generate instructions from ARMv8.2-A with the Dot Product extension. Some multilibs may be incompatible with these options.
arm_v8_2a_dotprod_neon_hwARM target supports executing instructions from ARMv8.2-A with the Dot Product extension. Some multilibs may be incompatible with these options. Implies arm_v8_2a_dotprod_neon_ok.
arm_v8_2a_i8mm_neon_hwARM target supports executing instructions from ARMv8.2-A with the 8-bit Matrix Multiply extension. Some multilibs may be incompatible with these options. Implies arm_v8_2a_i8mm_ok.
arm_fp16fml_neon_okARM target supports extensions to generate the
VFMALandVFMLShalf-precision floating-point instructions available from ARMv8.2-A and onwards. Some multilibs may be incompatible with these options.arm_v8_2a_bf16_neon_okARM target supports options to generate instructions from ARMv8.2-A with the BFloat16 extension (bf16). Some multilibs may be incompatible with these options.
arm_v8_2a_i8mm_okARM target supports options to generate instructions from ARMv8.2-A with the 8-Bit Integer Matrix Multiply extension (i8mm). Some multilibs may be incompatible with these options.
arm_v8_1m_mve_okARM target supports options to generate instructions from ARMv8.1-M with the M-Profile Vector Extension (MVE). Some multilibs may be incompatible with these options.
arm_v8_1m_mve_fp_okARM target supports options to generate instructions from ARMv8.1-M with the Half-precision floating-point instructions (HP), Floating-point Extension (FP) along with M-Profile Vector Extension (MVE). Some multilibs may be incompatible with these options.
arm_mve_hwTest system supports executing MVE instructions.
arm_v8m_main_cdeARM target supports options to generate instructions from ARMv8-M with the Custom Datapath Extension (CDE). Some multilibs may be incompatible with these options.
arm_v8m_main_cde_fpARM target supports options to generate instructions from ARMv8-M with the Custom Datapath Extension (CDE) and floating-point (VFP). Some multilibs may be incompatible with these options.
arm_v8_1m_main_cde_mveARM target supports options to generate instructions from ARMv8.1-M with the Custom Datapath Extension (CDE) and M-Profile Vector Extension (MVE). Some multilibs may be incompatible with these options.
arm_prefer_ldrd_strdARM target prefers
LDRDandSTRDinstructions overLDMandSTMinstructions.arm_thumb1_movt_okARM target generates Thumb-1 code for
-mthumbwithMOVWandMOVTinstructions available.arm_thumb1_cbz_okARM target generates Thumb-1 code for
-mthumbwithCBZandCBNZinstructions available.arm_divmod_simodeARM target for which divmod transform is disabled, if it supports hardware div instruction.
arm_cmse_okARM target supports ARMv8-M Security Extensions, enabled by the
-mcmseoption.arm_cmse_hwTest system supports executing CMSE instructions.
arm_coproc1_okARM target supports the following coprocessor instructions:
CDP,LDC,STC,MCRandMRC.
arm_coproc2_okARM target supports all the coprocessor instructions also listed as supported in _arm_coproc1_ok in addition to the following:
CDP2,LDC2,LDC2l,STC2,STC2l,MCR2andMRC2.
arm_coproc3_okARM target supports all the coprocessor instructions also listed as supported in arm_coproc2_ok in addition the following:
MCRRandMRRC.arm_coproc4_okARM target supports all the coprocessor instructions also listed as supported in arm_coproc3_ok in addition the following:
MCRR2andMRRC2.arm_simd32_okARM Target supports options suitable for accessing the SIMD32 intrinsics from
arm_acle.h. Some multilibs may be incompatible with these options.arm_sat_okARM Target supports options suitable for accessing the saturation intrinsics from
arm_acle.h. Some multilibs may be incompatible with these options.
arm_dsp_okARM Target supports options suitable for accessing the DSP intrinsics from
arm_acle.h. Some multilibs may be incompatible with these options.arm_softfp_okARM target supports the
-mfloat-abi=softfpoption.arm_hard_okARM target supports the
-mfloat-abi=hardoption.
arm_mveARM target supports generating MVE instructions.
arm_v8_1_lob_okARM Target supports executing the Armv8.1-M Mainline Low Overhead Loop instructions
DLSandLE. Some multilibs may be incompatible with these options.arm_thumb2_no_arm_v8_1_lobARM target where Thumb-2 is used without options but does not support executing the Armv8.1-M Mainline Low Overhead Loop instructions
DLSandLE.arm_thumb2_ok_no_arm_v8_1_lobARM target generates Thumb-2 code for
-mthumbbut does not support executing the Armv8.1-M Mainline Low Overhead Loop instructionsDLSandLE.
AArch64-specific attributes#
aarch64_asm_<ext>_okAArch64 assembler supports the architecture extension
extvia the.arch_extensionpseudo-op.aarch64_tinyAArch64 target which generates instruction sequences for tiny memory model.
aarch64_smallAArch64 target which generates instruction sequences for small memory model.
aarch64_largeAArch64 target which generates instruction sequences for large memory model.
aarch64_little_endianAArch64 target which generates instruction sequences for little endian.
aarch64_big_endianAArch64 target which generates instruction sequences for big endian.
aarch64_small_fpicBinutils installed on test system supports relocation types required by -fpic for AArch64 small memory model.
aarch64_sve_hwAArch64 target that is able to generate and execute SVE code (regardless of whether it does so by default).
aarch64_sve128_hwaarch64_sve256_hwaarch64_sve512_hwaarch64_sve1024_hwaarch64_sve2048_hwLike
aarch64_sve_hw, but also test for an exact hardware vector length.aarch64_fjcvtzs_hwAArch64 target that is able to generate and execute armv8.3-a FJCVTZS instruction.
MIPS-specific attributes#
mips64MIPS target supports 64-bit instructions.
nomips16MIPS target does not produce MIPS16 code.
mips16_attributeMIPS target can generate MIPS16 code.
mips_loongsonMIPS target is a Loongson-2E or -2F target using an ABI that supports the Loongson vector modes.
mips_msaMIPS target supports
-mmsa, MIPS SIMD Architecture (MSA).mips_newabi_large_long_doubleMIPS target supports
long doublelarger thandoublewhen using the new ABI.mpaired_singleMIPS target supports
-mpaired-single.
MSP430-specific attributes#
msp430_smallMSP430 target has the small memory model enabled (
-msmall).msp430_largeMSP430 target has the large memory model enabled (
-mlarge).
PowerPC-specific attributes#
dfp_hwPowerPC target supports executing hardware DFP instructions.
p8vector_hwPowerPC target supports executing VSX instructions (ISA 2.07).
powerpc64Test system supports executing 64-bit instructions.
powerpc_altivecPowerPC target supports AltiVec.
powerpc_altivec_okPowerPC target supports
-maltivec.powerpc_eabi_okPowerPC target supports
-meabi.powerpc_elfv2PowerPC target supports
-mabi=elfv2.powerpc_fprsPowerPC target supports floating-point registers.
powerpc_hard_doublePowerPC target supports hardware double-precision floating-point.
powerpc_htm_okPowerPC target supports
-mhtmpowerpc_p8vector_okPowerPC target supports
-mpower8-vectorpowerpc_popcntb_okPowerPC target supports the
popcntbinstruction, indicating that this target supports-mcpu=power5.powerpc_ppu_okPowerPC target supports
-mcpu=cell.powerpc_spePowerPC target supports PowerPC SPE.
powerpc_spe_nocacheIncluding the options used to compile this particular test, the PowerPC target supports PowerPC SPE.
powerpc_spuPowerPC target supports PowerPC SPU.
powerpc_vsx_okPowerPC target supports
-mvsx.powerpc_405_nocacheIncluding the options used to compile this particular test, the PowerPC target supports PowerPC 405.
ppc_recip_hwPowerPC target supports executing reciprocal estimate instructions.
vmx_hwPowerPC target supports executing AltiVec instructions.
vsx_hwPowerPC target supports executing VSX instructions (ISA 2.06).
has_arch_pwr5PowerPC target pre-defines macro _ARCH_PWR5 which means the
-mcpusetting is Power5 or later.has_arch_pwr6PowerPC target pre-defines macro _ARCH_PWR6 which means the
-mcpusetting is Power6 or later.has_arch_pwr7PowerPC target pre-defines macro _ARCH_PWR7 which means the
-mcpusetting is Power7 or later.has_arch_pwr8PowerPC target pre-defines macro _ARCH_PWR8 which means the
-mcpusetting is Power8 or later.has_arch_pwr9PowerPC target pre-defines macro _ARCH_PWR9 which means the
-mcpusetting is Power9 or later.
RISC-V specific attributes#
rv32Test system has an integer register width of 32 bits.
rv64Test system has an integer register width of 64 bits.
Other hardware attributes#
autoincdecTarget supports autoincrement/decrement addressing.
avxTarget supports compiling
avxinstructions.avx_runtimeTarget supports the execution of
avxinstructions.avx2Target supports compiling
avx2instructions.avx2_runtimeTarget supports the execution of
avx2instructions.avxvnniTarget supports the execution of
avxvnniinstructions.avx512fTarget supports compiling
avx512finstructions.avx512f_runtimeTarget supports the execution of
avx512finstructions.avx512vp2intersectTarget supports the execution of
avx512vp2intersectinstructions.avxifmaTarget supports the execution of
avxifmainstructions.avxneconvertTarget supports the execution of
avxneconvertinstructions.avxvnniint8Target supports the execution of
avxvnniint8instructions.amx_tileTarget supports the execution of
amx-tileinstructions.amx_int8Target supports the execution of
amx-int8instructions.amx_bf16Target supports the execution of
amx-bf16instructions.amx_fp16Target supports the execution of
amx-fp16instructions.cell_hwTest system can execute AltiVec and Cell PPU instructions.
cmpccxaddTarget supports the execution of
cmpccxaddinstructions.coldfire_fpuTarget uses a ColdFire FPU.
divmodTarget supporting hardware divmod insn or divmod libcall.
divmod_simodeTarget supporting hardware divmod insn or divmod libcall for SImode.
hard_floatTarget supports FPU instructions.
non_strict_alignTarget does not require strict alignment.
pie_copyrelocThe x86-64 target linker supports PIE with copy reloc.
prefetchiTarget supports the execution of
prefetchiinstructions.raointTarget supports the execution of
raointinstructions.rdrandTarget supports x86
rdrandinstruction.sqrt_insnTarget has a square root instruction that the compiler can generate.
sseTarget supports compiling
sseinstructions.sse_runtimeTarget supports the execution of
sseinstructions.sse2Target supports compiling
sse2instructions.sse2_runtimeTarget supports the execution of
sse2instructions.sync_char_shortTarget supports atomic operations on
charandshort.sync_int_longTarget supports atomic operations on
intandlong.ultrasparc_hwTest environment appears to run executables on a simulator that accepts only
EM_SPARCexecutables and chokes onEM_SPARC32PLUSorEM_SPARCV9executables.vect_cmdline_neededTarget requires a command line argument to enable a SIMD instruction set.
xorsignTarget supports the xorsign optab expansion.
Environment attributes#
cThe language for the compiler under test is C.
c++The language for the compiler under test is C++.
c99_runtimeTarget provides a full C99 runtime.
correct_iso_cpp_string_wchar_protosTarget
string.handwchar.hheaders provide C++ required overloads forstrchretc. functions.d_runtimeTarget provides the D runtime.
d_runtime_has_std_libraryTarget provides the D standard library (Phobos).
dummy_wcsftimeTarget uses a dummy
wcsftimefunction that always returns zero.fd_truncateTarget can truncate a file from a file descriptor, as used by
libgfortran/io/unix.c:fd_truncate; i.e.ftruncateorchsize.fenvTarget provides
fenv.hinclude file.fenv_exceptionsTarget supports
fenv.hwith all the standard IEEE exceptions and floating-point exceptions are raised by arithmetic operations.fenv_exceptions_dfpTarget supports
fenv.hwith all the standard IEEE exceptions and floating-point exceptions are raised by arithmetic operations for decimal floating point.fileioTarget offers such file I/O library functions as
fopen,fclose,tmpnam, andremove. This is a link-time requirement for the presence of the functions in the library; even if they fail at runtime, the requirement is still regarded as satisfied.freestandingTarget is
freestandingas defined in section 4 of the C99 standard. Effectively, it is a target which supports no extra headers or libraries other than what is considered essential.gettimeofdayTarget supports
gettimeofday.init_priorityTarget supports constructors with initialization priority arguments.
inttypes_typesTarget has the basic signed and unsigned types in
inttypes.h. This is for tests that GCC’s notions of these types agree with those in the header, as some systems have onlyinttypes.h.lax_strtofpTarget might have errors of a few ULP in string to floating-point conversion functions and overflow is not always detected correctly by those functions.
mempcpyTarget provides
mempcpyfunction.mmapTarget supports
mmap.newlibTarget supports Newlib.
newlib_nano_ioGCC was configured with
--enable-newlib-nano-formatted-io, which reduces the code size of Newlib formatted I/O functions.pow10Target provides
pow10function.pthreadTarget can compile using
pthread.hwith no errors or warnings.pthread_hTarget has
pthread.h.run_expensive_testsExpensive testcases (usually those that consume excessive amounts of CPU time) should be run on this target. This can be enabled by setting the
GCC_TEST_RUN_EXPENSIVEenvironment variable to a non-empty string.simulatorTest system runs executables on a simulator (i.e. slowly) rather than hardware (i.e. fast).
signalTarget has
signal.h.stabsTarget supports the stabs debugging format.
stdint_typesTarget has the basic signed and unsigned C types in
stdint.h. This will be obsolete when GCC ensures a workingstdint.hfor all targets.stdint_types_mbig_endianTarget accepts the option
-mbig-endianandstdint.hcan be included without error when-mbig-endianis passed.stpcpyTarget provides
stpcpyfunction.sysconfTarget supports
sysconf.trampolinesTarget supports trampolines.
two_plus_gigsTarget supports linking programs with 2+GiB of data.
uclibcTarget supports uClibc.
unwrappedTarget does not use a status wrapper.
vxworks_kernelTarget is a VxWorks kernel.
vxworks_rtpTarget is a VxWorks RTP.
wcharTarget supports wide characters.
Other attributes#
R_flag_in_sectionTarget supports the ‘R’ flag in .section directive in assembly inputs.
automatic_stack_alignmentTarget supports automatic stack alignment.
branch_costTarget supports
-branch-cost=N.cxa_atexitTarget uses
__cxa_atexit.
default_packedTarget has packed layout of structure members by default.
exceptionsTarget supports exceptions.
exceptions_enabledTarget supports exceptions and they are enabled in the current testing configuration.
fgraphiteTarget supports Graphite optimizations.
fixed_pointTarget supports fixed-point extension to C.
fopenaccTarget supports OpenACC via
-fopenacc.fopenmpTarget supports OpenMP via
-fopenmp.fpicfreorderTarget supports
-freorder-blocks-and-partition.fstack_protectorTarget supports
-fstack-protector.gasTarget uses GNU as.
gc_sectionsTarget supports
--gc-sections.gldTarget uses GNU ld.
keeps_null_pointer_checksTarget keeps null pointer checks, either due to the use of
-fno-delete-null-pointer-checksor hardwired into the target.llvm_binutilsTarget is using an LLVM assembler and/or linker, instead of GNU Binutils.
lraTarget supports local register allocator (LRA).
ltoCompiler has been configured to support link-time optimization (LTO).
lto_incrementalCompiler and linker support link-time optimization relocatable linking with
-rand-fltooptions.naked_functionsTarget supports the
nakedfunction attribute.named_sectionsTarget supports named sections.
natural_alignment_32Target uses natural alignment (aligned to type size) for types of 32 bits or less.
target_natural_alignment_64Target uses natural alignment (aligned to type size) for types of 64 bits or less.
no_alignment_constraintsTarget defines __BIGGEST_ALIGNMENT__=1. Hence target imposes no alignment constraints. This is similar, but not necessarily the same as default_packed. Although
BIGGEST_FIELD_ALIGNMENTdefaults toBIGGEST_ALIGNMENTfor most targets, it is possible for a target to set those two with different values and have different alignment constraints for aggregate and non-aggregate types.noinitTarget supports the
noinitvariable attribute.nonpicTarget does not generate PIC by default.
o_flag_in_sectionTarget supports the ‘o’ flag in .section directive in assembly inputs.
offload_gcnTarget has been configured for OpenACC/OpenMP offloading on AMD GCN.
persistentTarget supports the
persistentvariable attribute.pie_enabledTarget generates PIE by default.
pcc_bitfield_type_mattersTarget defines
PCC_BITFIELD_TYPE_MATTERS.pe_aligned_commonsTarget supports
-mpe-aligned-commons.pierdynamicTarget supports
-rdynamic.scalar_all_fmaTarget supports all four fused multiply-add optabs for both
floatanddouble. These optabs are:fma_optab,fms_optab,fnma_optabandfnms_optab.section_anchorsTarget supports section anchors.
short_enumsTarget defaults to short enums.
stack_sizeTarget has limited stack size. The stack size limit can be obtained using the STACK_SIZE macro defined by stack_size.
staticTarget supports
-static.static_libgfortranTarget supports statically linking
libgfortran.string_mergingTarget supports merging string constants at link time.
ucnTarget supports compiling and assembling UCN.
ucn_nocacheIncluding the options used to compile this particular test, the target supports compiling and assembling UCN.
unaligned_stackTarget does not guarantee that its
STACK_BOUNDARYis greater than or equal to the required vector alignment.vector_alignment_reachableVector alignment is reachable for types of 32 bits or less.
vector_alignment_reachable_for_64bitVector alignment is reachable for types of 64 bits or less.
vma_equals_lmaTarget generates executable with VMA equal to LMA for .data section.
wchar_t_char16_t_compatibleTarget supports
wchar_tthat is compatible withchar16_t.wchar_t_char32_t_compatibleTarget supports
wchar_tthat is compatible withchar32_t.comdat_groupTarget uses comdat groups.
indirect_callsTarget supports indirect calls, i.e. calls where the target is not constant.
lgccjitTarget supports -lgccjit, i.e. libgccjit.so can be linked into jit tests.
__OPTIMIZE__Optimizations are enabled (
__OPTIMIZE__) per the current compiler flags.
Local to tests in gcc.target/i386#
3dnowTarget supports compiling
3dnowinstructions.aesTarget supports compiling
aesinstructions.fma4Target supports compiling
fma4instructions.mfentryTarget supports the
-mfentryoption that alters the position of profiling calls such that they precede the prologue.ms_hook_prologueTarget supports attribute
ms_hook_prologue.pclmulTarget supports compiling
pclmulinstructions.sse3Target supports compiling
sse3instructions.sse4Target supports compiling
sse4instructions.sse4aTarget supports compiling
sse4ainstructions.ssse3Target supports compiling
ssse3instructions.vaesTarget supports compiling
vaesinstructions.vpclmulTarget supports compiling
vpclmulinstructions.xopTarget supports compiling
xopinstructions.
Local to tests in gcc.test-framework#
noAlways returns 0.
yesAlways returns 1.