Next: Add Options, Previous: Selectors, Up: Test Directives
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.
beleilp32int, long, and pointers.
lp64int, 64-bit long and pointers.
llp64int and long, 64-bit long long
and pointers.
double64double.
double64plusdouble that is 64 bits or longer.
longdouble128long double.
int32plusint that is at 32 bits or longer.
int16int that is 16 bits or shorter.
longlong64long long.
long_neq_intint and long with different sizes.
short_eq_intshort and int with the same size.
ptr_eq_shortvoid *) and short with the same size.
int_eq_floatint and float with the same size.
ptr_eq_longvoid *) and long with the same size.
large_doubledouble that is longer than float.
large_long_doublelong double that is longer than double.
ptr32plussize20plussize24plussize32plus4byte_wchar_twchar_t that is at least 4 bytes.
floatn_Floatn type.
floatnx_Floatnx type.
floatn_runtime_Floatn type, including runtime support
for any options added with dg-add-options.
floatnx_runtime_Floatnx type, including runtime support
for any options added with dg-add-options.
floatn_nx_runtimedg-add-options for any _Floatn or
_Floatnx type.
infinf) for type
double.
inffinf) for type
float.
fortran_integer_16integer that is 16 bytes or longer.
fortran_real_10real that is 10 bytes or longer.
fortran_real_16real that is 16 bytes or longer.
fortran_large_intinteger kinds larger than integer(8).
fortran_large_realreal kinds larger than real(8).
vect_align_stack_varsvect_avg_qivect_mulhrs_hivect_sdiv_pow2_sivect_conditionvect_cond_mixedvect_doubledouble.
vect_double_cond_arithdouble, via the
cond_ optabs.
vect_element_align_preferredvect_floatfloat when
-funsafe-math-optimizations is in effect.
vect_float_strictfloat when
-funsafe-math-optimizations is not in effect.
This implies vect_float.
vect_intint.
vect_longlong.
vect_long_longlong long.
vect_check_ptrscheck_raw_ptrs and check_war_ptrs
optabs on vectors.
vect_fully_maskedvect_masked_loadvect_masked_storevect_gather_load_ifnvect_scatter_storevect_aligned_arraysvect_hw_misalignvect_no_alignvect_peeling_profitablevect_no_int_min_maxint.
vect_no_int_addint.
vect_no_bitwisevect_bool_cmpbool vectors for at least one
vector length.
vect_char_addchar vectors for at least one
vector length.
vect_char_multvector char multiplication.
vect_short_multvector short multiplication.
vect_int_multvector int multiplication.
vect_long_multvector long multiplication.
vect_extract_even_oddvect_extract_even_odd_wideSImode or larger.
vect_interleavevect_stridedvect_strided_widevect_permvect_perm_bytevect_perm_shortvect_perm3_byte { 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_intvect_perm3_byte, but for 32-bit elements.
vect_perm3_shortvect_perm3_byte, but for 16-bit elements.
vect_shiftvect_unaligned_possiblevect_variable_lengthvect64vect32vect_widen_sum_hi_to_sishort operands
into int results, or can promote (unpack) from short
to int.
vect_widen_sum_qi_to_hichar operands
into short results, or can promote (unpack) from char
to short.
vect_widen_sum_qi_to_sichar operands
into int results.
vect_widen_mult_qi_to_hichar operands
into short results, or can promote (unpack) from char to
short and perform non-widening multiplication of short.
vect_widen_mult_hi_to_sishort operands
into int results, or can promote (unpack) from short to
int and perform non-widening multiplication of int.
vect_widen_mult_si_to_di_patternint operands
into long results.
vect_sdot_qisigned char.
vect_udot_qiunsigned char.
vect_usdot_qisigned char and the other of unsigned char.
vect_sdot_hisigned short.
vect_udot_hiunsigned short.
vect_pack_truncshort to char
and from int to short using modulo arithmetic.
vect_unpackchar to short
and from char to int.
vect_intfloat_cvtsigned int to float.
vect_uintfloat_cvtunsigned int to float.
vect_floatint_cvtfloat to signed int.
vect_floatuint_cvtfloat to unsigned int.
vect_intdouble_cvtsigned int to double.
vect_doubleint_cvtdouble to signed int.
vect_max_reducvect_sizes_16B_8Bvect_sizes_32B_16Bvect_logical_reducvect_fold_extract_lastfold_extract_last optab.
vect_len_load_storelen_load and len_store optabs.
vect_partial_vectors_usage_1vect-partial-vector-usage is set to 1.
vect_partial_vectors_usage_2vect-partial-vector-usage is set to 2.
vect_partial_vectorsvect-partial-vector-usage is nonzero.
vect_slp_v2qi_store_alignvect_slp_v4qi_store_alignvect_slp_v4qi_store_unalignstruct_4char_block_movevect_slp_v4qi_store_unalign_1struct_8char_block_movevect_slp_v8qi_store_unalign_1struct_16char_block_movevect_slp_v16qi_store_unalign_1vect_slp_v2hi_store_alignvect_slp_v2hi_store_unalignvect_slp_v4hi_store_unalignvect_slp_v2si_store_alignvect_slp_v4si_store_unaligntlstls_nativetls_runtimedfpdfp_nocachedfprtdfprt_nocachehard_dfparm32arm_little_endianarm_eabiarm_fp_ok__ARM_FP using -mfloat-abi=softfp or
equivalent options. Some multilibs may be incompatible with these
options.
arm_fp_dp_ok__ARM_FP with double-precision support using
-mfloat-abi=softfp or equivalent options. Some multilibs may
be incompatible with these options.
arm_hf_eabi-mfloat-abi=hard).
arm_softfloatarm_hard_vfp_ok-mfpu=vfp -mfloat-abi=hard.
Some multilibs may be incompatible with these options.
arm_iwmmxt_ok-mcpu=iwmmxt.
Some multilibs may be incompatible with this option.
arm_neonarm_tune_string_ops_prefer_neonarm_neon_hwarm_neonv2_hwarm_neon_ok-mfpu=neon -mfloat-abi=softfp or compatible
options. Some multilibs may be incompatible with these options.
arm_neon_ok_no_float_abi-mfpu=neon, but without any
-mfloat-abi= option. Some multilibs may be incompatible with this
option.
arm_neonv2_ok-mfpu=neon-vfpv4 -mfloat-abi=softfp or compatible
options. Some multilibs may be incompatible with these options.
arm_fp16_okarm_fp16_hwarm_neon_fp16_ok-mfpu=neon-fp16 -mfloat-abi=softfp or compatible
options, including -mfp16-format=ieee if necessary to obtain the
__fp16 type. Some multilibs may be incompatible with these options.
arm_neon_fp16_hwarm_fp16_alternative_okarm_fp16_none_okarm_thumb1_ok-mthumb.
arm_thumb2_ok-mthumb.
arm_nothumbarm_vfp_ok-mfpu=vfp -mfloat-abi=softfp.
Some multilibs may be incompatible with these options.
arm_vfp3_ok-mfpu=vfp3 -mfloat-abi=softfp.
Some multilibs may be incompatible with these options.
arm_arch_v8a_hard_okarm*-*-* 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_multilibarm*-*-* 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_ok-mfpu=fp-armv8 -mfloat-abi=softfp.
Some multilibs may be incompatible with these options.
arm_v8_neon_ok-mfpu=neon-fp-armv8 -mfloat-abi=softfp.
Some multilibs may be incompatible with these options.
arm_v8_1a_neon_okarm_v8_1a_neon_hwarm_acq_relarm_v8_2a_fp16_scalar_okarm_v8_2a_fp16_scalar_hwarm_v8_2a_fp16_neon_okarm_v8_2a_fp16_neon_hwarm_v8_2a_dotprod_neon_okarm_v8_2a_dotprod_neon_hwarm_v8_2a_i8mm_neon_hwarm_fp16fml_neon_okVFMAL and VFMLS
half-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_v8_2a_i8mm_okarm_v8_1m_mve_okarm_v8_1m_mve_fp_okarm_mve_hwarm_v8m_main_cdearm_v8m_main_cde_fparm_v8_1m_main_cde_mvearm_prefer_ldrd_strdLDRD and STRD instructions over
LDM and STM instructions.
arm_thumb1_movt_ok-mthumb with MOVW
and MOVT instructions available.
arm_thumb1_cbz_ok-mthumb with
CBZ and CBNZ instructions available.
arm_divmod_simodearm_cmse_ok-mcmse
option.
arm_cmse_hwarm_coproc1_okCDP,
LDC, STC, MCR and MRC.
arm_coproc2_okCDP2, LDC2,
LDC2l, STC2, STC2l, MCR2 and MRC2.
arm_coproc3_okMCRR and MRRC.
arm_coproc4_okMCRR2 and MRRC2.
arm_simd32_okarm_acle.h.
Some multilibs may be incompatible with these options.
arm_sat_okarm_acle.h.
Some multilibs may be incompatible with these options.
arm_dsp_okarm_acle.h.
Some multilibs may be incompatible with these options.
arm_softfp_ok-mfloat-abi=softfp option.
arm_hard_ok-mfloat-abi=hard option.
arm_mvearm_v8_1_lob_okDLS and LE.
Some multilibs may be incompatible with these options.
arm_thumb2_no_arm_v8_1_lobDLS and LE.
arm_thumb2_ok_no_arm_v8_1_lob-mthumb but does not
support executing the Armv8.1-M Mainline Low Overhead Loop
instructions DLS and LE.
aarch64_asm_<ext>_okext via the
.arch_extension pseudo-op.
aarch64_tinyaarch64_smallaarch64_largeaarch64_little_endianaarch64_big_endianaarch64_small_fpicaarch64_sve_hwaarch64_sve128_hwaarch64_sve256_hwaarch64_sve512_hwaarch64_sve1024_hwaarch64_sve2048_hwaarch64_sve_hw, but also test for an exact hardware vector length.
aarch64_fjcvtzs_hwmips64nomips16mips16_attributemips_loongsonmips_msa-mmsa, MIPS SIMD Architecture (MSA).
mips_newabi_large_long_doublelong double larger than double
when using the new ABI.
mpaired_single-mpaired-single.
msp430_small-msmall).
msp430_large-mlarge).
dfp_hwp8vector_hwpowerpc64powerpc_altivecpowerpc_altivec_ok-maltivec.
powerpc_eabi_ok-meabi.
powerpc_elfv2-mabi=elfv2.
powerpc_fprspowerpc_hard_doublepowerpc_htm_ok-mhtm
powerpc_p8vector_ok-mpower8-vector
powerpc_popcntb_okpopcntb instruction, indicating
that this target supports -mcpu=power5.
powerpc_ppu_ok-mcpu=cell.
powerpc_spepowerpc_spe_nocachepowerpc_spupowerpc_vsx_ok-mvsx.
powerpc_405_nocacheppc_recip_hwvmx_hwvsx_hwhas_arch_pwr5-mcpu
setting is Power5 or later.
has_arch_pwr6-mcpu
setting is Power6 or later.
has_arch_pwr7-mcpu
setting is Power7 or later.
has_arch_pwr8-mcpu
setting is Power8 or later.
has_arch_pwr9-mcpu
setting is Power9 or later.
rv32rv64autoincdecavxavx instructions.
avx_runtimeavx instructions.
avx2avx2 instructions.
avx2_runtimeavx2 instructions.
avxvnniavxvnni instructions.
avx512favx512f instructions.
avx512f_runtimeavx512f instructions.
avx512vp2intersectavx512vp2intersect instructions.
amx_tileamx-tile instructions.
amx_int8amx-int8 instructions.
amx_bf16amx-bf16 instructions.
cell_hwcoldfire_fpudivmoddivmod_simodehard_floatnon_strict_alignpie_copyrelocrdrandrdrand instruction.
sqrt_insnssesse instructions.
sse_runtimesse instructions.
sse2sse2 instructions.
sse2_runtimesse2 instructions.
sync_char_shortchar and short.
sync_int_longint and long.
ultrasparc_hwEM_SPARC executables and chokes on EM_SPARC32PLUS
or EM_SPARCV9 executables.
vect_cmdline_neededxorsigncc++c99_runtimecorrect_iso_cpp_string_wchar_protosstring.h and wchar.h headers provide C++ required
overloads for strchr etc. functions.
d_runtimed_runtime_has_std_librarydummy_wcsftimewcsftime function that always returns zero.
fd_truncateftruncate or
chsize.
fenvfenv_exceptionsfenv_exceptions_dfpfileiofopen,
fclose, tmpnam, and remove. 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.
freestandinggettimeofdaygettimeofday.
init_priorityinttypes_typesinttypes.h.
This is for tests that GCC's notions of these types agree with those
in the header, as some systems have only inttypes.h.
lax_strtofpmempcpymempcpy function.
mmapmmap.
newlibnewlib_nano_io--enable-newlib-nano-formatted-io, which reduces
the code size of Newlib formatted I/O functions.
pow10pow10 function.
pthreadpthread.h with no errors or warnings.
pthread_hpthread.h.
run_expensive_testssimulatorsignalsignal.h.
stabsstdint_typesstdint.h.
This will be obsolete when GCC ensures a working stdint.h for
all targets.
stdint_types_mbig_endianstdint.h
can be included without error when -mbig-endian is passed.
stpcpystpcpy function.
sysconfsysconf.
trampolinesuclibcunwrappedvxworks_kernelvxworks_rtpwcharR_flag_in_sectionautomatic_stack_alignmentbranch_costcxa_atexit__cxa_atexit.
default_packedexceptionsexceptions_enabledfgraphitefixed_pointfopenaccfopenmpfpicfreorderfstack_protectorgasgc_sectionsgldkeeps_null_pointer_checksllvm_binutilslraltolto_incrementalnaked_functionsnaked function attribute.
named_sectionsnatural_alignment_32target_natural_alignment_64noinitnoinit variable attribute.
nonpico_flag_in_sectionoffload_gcnpersistentpersistent variable attribute.
pie_enabledpcc_bitfield_type_mattersPCC_BITFIELD_TYPE_MATTERS.
pe_aligned_commonspierdynamicscalar_all_fmafloat
and double. These optabs are: fma_optab, fms_optab,
fnma_optab and fnms_optab.
section_anchorsshort_enumsstack_sizedg-add-options feature stack_size.
staticstatic_libgfortranstring_mergingucnucn_nocacheunaligned_stackSTACK_BOUNDARY is greater than
or equal to the required vector alignment.
vector_alignment_reachablevector_alignment_reachable_for_64bitwchar_t_char16_t_compatiblewchar_t that is compatible with char16_t.
wchar_t_char32_t_compatiblewchar_t that is compatible with char32_t.
comdat_groupindirect_callslgccjit__OPTIMIZE____OPTIMIZE__) per the current
compiler flags.
gcc.target/i3863dnow3dnow instructions.
aesaes instructions.
fma4fma4 instructions.
mfentry-mfentry option that alters the
position of profiling calls such that they precede the prologue.
ms_hook_prologuems_hook_prologue.
pclmulpclmul instructions.
sse3sse3 instructions.
sse4sse4 instructions.
sse4asse4a instructions.
ssse3ssse3 instructions.
vaesvaes instructions.
vpclmulvpclmul instructions.
xopxop instructions.
gcc.test-frameworknoyes