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.
be
le
ilp32
int
, long
, and pointers.
lp64
int
, 64-bit long
and pointers.
llp64
int
and long
, 64-bit long long
and pointers.
double64
double
.
double64plus
double
that is 64 bits or longer.
longdouble128
long double
.
int32plus
int
that is at 32 bits or longer.
int16
int
that is 16 bits or shorter.
longlong64
long long
.
long_neq_int
int
and long
with different sizes.
short_eq_int
short
and int
with the same size.
ptr_eq_short
void *
) and short
with the same size.
int_eq_float
int
and float
with the same size.
ptr_eq_long
void *
) and long
with the same size.
large_double
double
that is longer than float
.
large_long_double
long double
that is longer than double
.
ptr32plus
size20plus
size24plus
size32plus
4byte_wchar_t
wchar_t
that is at least 4 bytes.
float
n_Float
n type.
float
nx
_Float
nx
type.
float
n_runtime
_Float
n type, including runtime support
for any options added with dg-add-options
.
float
nx_runtime
_Float
nx
type, including runtime support
for any options added with dg-add-options
.
floatn_nx_runtime
dg-add-options
for any _Float
n or
_Float
nx
type.
inf
inf
) for type
double
.
inff
inf
) for type
float
.
fortran_integer_16
integer
that is 16 bytes or longer.
fortran_real_10
real
that is 10 bytes or longer.
fortran_real_16
real
that is 16 bytes or longer.
fortran_large_int
integer
kinds larger than integer(8)
.
fortran_large_real
real
kinds larger than real(8)
.
vect_align_stack_vars
vect_avg_qi
vect_mulhrs_hi
vect_sdiv_pow2_si
vect_condition
vect_cond_mixed
vect_double
double
.
vect_double_cond_arith
double
, via the
cond_
optabs.
vect_element_align_preferred
vect_float
float
when
-funsafe-math-optimizations is in effect.
vect_float_strict
float
when
-funsafe-math-optimizations is not in effect.
This implies vect_float
.
vect_int
int
.
vect_long
long
.
vect_long_long
long long
.
vect_check_ptrs
check_raw_ptrs
and check_war_ptrs
optabs on vectors.
vect_fully_masked
vect_masked_load
vect_masked_store
vect_gather_load_ifn
vect_scatter_store
vect_aligned_arrays
vect_hw_misalign
vect_no_align
vect_peeling_profitable
vect_no_int_min_max
int
.
vect_no_int_add
int
.
vect_no_bitwise
vect_bool_cmp
bool
vectors for at least one
vector length.
vect_char_add
char
vectors for at least one
vector length.
vect_char_mult
vector char
multiplication.
vect_short_mult
vector short
multiplication.
vect_int_mult
vector int
multiplication.
vect_long_mult
vector long
multiplication.
vect_extract_even_odd
vect_extract_even_odd_wide
SImode
or larger.
vect_interleave
vect_strided
vect_strided_wide
vect_perm
vect_perm_byte
vect_perm_short
vect_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_int
vect_perm3_byte
, but for 32-bit elements.
vect_perm3_short
vect_perm3_byte
, but for 16-bit elements.
vect_shift
vect_unaligned_possible
vect_variable_length
vect64
vect32
vect_widen_sum_hi_to_si
short
operands
into int
results, or can promote (unpack) from short
to int
.
vect_widen_sum_qi_to_hi
char
operands
into short
results, or can promote (unpack) from char
to short
.
vect_widen_sum_qi_to_si
char
operands
into int
results.
vect_widen_mult_qi_to_hi
char
operands
into short
results, or can promote (unpack) from char
to
short
and perform non-widening multiplication of short
.
vect_widen_mult_hi_to_si
short
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_pattern
int
operands
into long
results.
vect_sdot_qi
signed char
.
vect_udot_qi
unsigned char
.
vect_usdot_qi
signed char
and the other of unsigned char
.
vect_sdot_hi
signed short
.
vect_udot_hi
unsigned short
.
vect_pack_trunc
short
to char
and from int
to short
using modulo arithmetic.
vect_unpack
char
to short
and from char
to int
.
vect_intfloat_cvt
signed int
to float
.
vect_uintfloat_cvt
unsigned int
to float
.
vect_floatint_cvt
float
to signed int
.
vect_floatuint_cvt
float
to unsigned int
.
vect_intdouble_cvt
signed int
to double
.
vect_doubleint_cvt
double
to signed int
.
vect_max_reduc
vect_sizes_16B_8B
vect_sizes_32B_16B
vect_logical_reduc
vect_fold_extract_last
fold_extract_last
optab.
vect_len_load_store
len_load
and len_store
optabs.
vect_partial_vectors_usage_1
vect-partial-vector-usage
is set to 1.
vect_partial_vectors_usage_2
vect-partial-vector-usage
is set to 2.
vect_partial_vectors
vect-partial-vector-usage
is nonzero.
vect_slp_v2qi_store_align
vect_slp_v4qi_store_align
vect_slp_v4qi_store_unalign
struct_4char_block_move
vect_slp_v4qi_store_unalign_1
struct_8char_block_move
vect_slp_v8qi_store_unalign_1
struct_16char_block_move
vect_slp_v16qi_store_unalign_1
vect_slp_v2hi_store_align
vect_slp_v2hi_store_unalign
vect_slp_v4hi_store_unalign
vect_slp_v2si_store_align
vect_slp_v4si_store_unalign
tls
tls_native
tls_runtime
dfp
dfp_nocache
dfprt
dfprt_nocache
hard_dfp
arm32
arm_little_endian
arm_eabi
arm_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_softfloat
arm_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_neon
arm_tune_string_ops_prefer_neon
arm_neon_hw
arm_neonv2_hw
arm_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_ok
arm_fp16_hw
arm_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_hw
arm_fp16_alternative_ok
arm_fp16_none_ok
arm_thumb1_ok
-mthumb
.
arm_thumb2_ok
-mthumb
.
arm_nothumb
arm_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_ok
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_multilib
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_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_ok
arm_v8_1a_neon_hw
arm_acq_rel
arm_v8_2a_fp16_scalar_ok
arm_v8_2a_fp16_scalar_hw
arm_v8_2a_fp16_neon_ok
arm_v8_2a_fp16_neon_hw
arm_v8_2a_dotprod_neon_ok
arm_v8_2a_dotprod_neon_hw
arm_v8_2a_i8mm_neon_hw
arm_fp16fml_neon_ok
VFMAL
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_ok
arm_v8_2a_i8mm_ok
arm_v8_1m_mve_ok
arm_v8_1m_mve_fp_ok
arm_mve_hw
arm_v8m_main_cde
arm_v8m_main_cde_fp
arm_v8_1m_main_cde_mve
arm_prefer_ldrd_strd
LDRD
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_simode
arm_cmse_ok
-mcmse
option.
arm_cmse_hw
arm_coproc1_ok
CDP
,
LDC
, STC
, MCR
and MRC
.
arm_coproc2_ok
CDP2
, LDC2
,
LDC2l
, STC2
, STC2l
, MCR2
and MRC2
.
arm_coproc3_ok
MCRR
and MRRC
.
arm_coproc4_ok
MCRR2
and MRRC2
.
arm_simd32_ok
arm_acle.h
.
Some multilibs may be incompatible with these options.
arm_sat_ok
arm_acle.h
.
Some multilibs may be incompatible with these options.
arm_dsp_ok
arm_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_mve
arm_v8_1_lob_ok
DLS
and LE
.
Some multilibs may be incompatible with these options.
arm_thumb2_no_arm_v8_1_lob
DLS
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>_ok
ext
via the
.arch_extension
pseudo-op.
aarch64_tiny
aarch64_small
aarch64_large
aarch64_little_endian
aarch64_big_endian
aarch64_small_fpic
aarch64_sve_hw
aarch64_sve128_hw
aarch64_sve256_hw
aarch64_sve512_hw
aarch64_sve1024_hw
aarch64_sve2048_hw
aarch64_sve_hw
, but also test for an exact hardware vector length.
aarch64_fjcvtzs_hw
mips64
nomips16
mips16_attribute
mips_loongson
mips_msa
-mmsa
, MIPS SIMD Architecture (MSA).
mips_newabi_large_long_double
long double
larger than double
when using the new ABI.
mpaired_single
-mpaired-single
.
msp430_small
-msmall
).
msp430_large
-mlarge
).
dfp_hw
p8vector_hw
powerpc64
powerpc_altivec
powerpc_altivec_ok
-maltivec
.
powerpc_eabi_ok
-meabi
.
powerpc_elfv2
-mabi=elfv2
.
powerpc_fprs
powerpc_hard_double
powerpc_htm_ok
-mhtm
powerpc_p8vector_ok
-mpower8-vector
powerpc_popcntb_ok
popcntb
instruction, indicating
that this target supports -mcpu=power5
.
powerpc_ppu_ok
-mcpu=cell
.
powerpc_spe
powerpc_spe_nocache
powerpc_spu
powerpc_vsx_ok
-mvsx
.
powerpc_405_nocache
ppc_recip_hw
vmx_hw
vsx_hw
has_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.
rv32
rv64
autoincdec
avx
avx
instructions.
avx_runtime
avx
instructions.
avx2
avx2
instructions.
avx2_runtime
avx2
instructions.
avxvnni
avxvnni
instructions.
avx512f
avx512f
instructions.
avx512f_runtime
avx512f
instructions.
avx512vp2intersect
avx512vp2intersect
instructions.
amx_tile
amx-tile
instructions.
amx_int8
amx-int8
instructions.
amx_bf16
amx-bf16
instructions.
cell_hw
coldfire_fpu
divmod
divmod_simode
hard_float
non_strict_align
pie_copyreloc
rdrand
rdrand
instruction.
sqrt_insn
sse
sse
instructions.
sse_runtime
sse
instructions.
sse2
sse2
instructions.
sse2_runtime
sse2
instructions.
sync_char_short
char
and short
.
sync_int_long
int
and long
.
ultrasparc_hw
EM_SPARC
executables and chokes on EM_SPARC32PLUS
or EM_SPARCV9
executables.
vect_cmdline_needed
xorsign
c
c++
c99_runtime
correct_iso_cpp_string_wchar_protos
string.h
and wchar.h
headers provide C++ required
overloads for strchr
etc. functions.
d_runtime
d_runtime_has_std_library
dummy_wcsftime
wcsftime
function that always returns zero.
fd_truncate
ftruncate
or
chsize
.
fenv
fenv_exceptions
fenv_exceptions_dfp
fileio
fopen
,
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.
freestanding
gettimeofday
gettimeofday
.
init_priority
inttypes_types
inttypes.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_strtofp
mempcpy
mempcpy
function.
mmap
mmap
.
newlib
newlib_nano_io
--enable-newlib-nano-formatted-io
, which reduces
the code size of Newlib formatted I/O functions.
pow10
pow10
function.
pthread
pthread.h
with no errors or warnings.
pthread_h
pthread.h
.
run_expensive_tests
simulator
signal
signal.h
.
stabs
stdint_types
stdint.h
.
This will be obsolete when GCC ensures a working stdint.h
for
all targets.
stdint_types_mbig_endian
stdint.h
can be included without error when -mbig-endian is passed.
stpcpy
stpcpy
function.
sysconf
sysconf
.
trampolines
uclibc
unwrapped
vxworks_kernel
vxworks_rtp
wchar
R_flag_in_section
automatic_stack_alignment
branch_cost
cxa_atexit
__cxa_atexit
.
default_packed
exceptions
exceptions_enabled
fgraphite
fixed_point
fopenacc
fopenmp
fpic
freorder
fstack_protector
gas
gc_sections
gld
keeps_null_pointer_checks
llvm_binutils
lra
lto
lto_incremental
naked_functions
naked
function attribute.
named_sections
natural_alignment_32
target_natural_alignment_64
noinit
noinit
variable attribute.
nonpic
o_flag_in_section
offload_gcn
persistent
persistent
variable attribute.
pie_enabled
pcc_bitfield_type_matters
PCC_BITFIELD_TYPE_MATTERS
.
pe_aligned_commons
pie
rdynamic
scalar_all_fma
float
and double
. These optabs are: fma_optab
, fms_optab
,
fnma_optab
and fnms_optab
.
section_anchors
short_enums
stack_size
dg-add-options
feature stack_size
.
static
static_libgfortran
string_merging
ucn
ucn_nocache
unaligned_stack
STACK_BOUNDARY
is greater than
or equal to the required vector alignment.
vector_alignment_reachable
vector_alignment_reachable_for_64bit
wchar_t_char16_t_compatible
wchar_t
that is compatible with char16_t
.
wchar_t_char32_t_compatible
wchar_t
that is compatible with char32_t
.
comdat_group
indirect_calls
lgccjit
__OPTIMIZE__
__OPTIMIZE__
) per the current
compiler flags.
gcc.target/i386
3dnow
3dnow
instructions.
aes
aes
instructions.
fma4
fma4
instructions.
mfentry
-mfentry
option that alters the
position of profiling calls such that they precede the prologue.
ms_hook_prologue
ms_hook_prologue
.
pclmul
pclmul
instructions.
sse3
sse3
instructions.
sse4
sse4
instructions.
sse4a
sse4a
instructions.
ssse3
ssse3
instructions.
vaes
vaes
instructions.
vpclmul
vpclmul
instructions.
xop
xop
instructions.
gcc.test-framework
no
yes