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.
long_neq_int
int
and long
with different sizes.
large_double
double
that is longer than float
.
large_long_double
long double
that is longer than double
.
ptr32plus
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.
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_condition
vect_cond_mixed
vect_double
double
.
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_fully_masked
vect_masked_store
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_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
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_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.
tls
tls_native
tls_runtime
dfp
dfp_nocache
dfprt
dfprt_nocache
hard_dfp
arm32
arm_eabi
arm_fp_ok
__ARM_FP
using -mfloat-abi=softfp
or
equivalent options. Some multilibs may be incompatible with these
options.
arm_hf_eabi
-mfloat-abi=hard
).
arm_softfloat
-mfloat-abi=soft
).
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_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_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_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_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_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
.
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
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
.
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
spu_auto_overlay
vmx_hw
vsx_hw
autoincdec
avx
avx
instructions.
avx_runtime
avx
instructions.
avx2
avx2
instructions.
avx2_runtime
avx2
instructions.
avx512f
avx512f
instructions.
avx512f_runtime
avx512f
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.
dummy_wcsftime
wcsftime
function that always returns zero.
fd_truncate
ftruncate
or
chsize
.
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
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.
stpcpy
stpcpy
function.
trampolines
uclibc
unwrapped
vxworks_kernel
vxworks_rtp
wchar
automatic_stack_alignment
branch_cost
cxa_atexit
__cxa_atexit
.
default_packed
fgraphite
fixed_point
fopenacc
fopenmp
fpic
freorder
fstack_protector
gas
gc_sections
gld
keeps_null_pointer_checks
lto
naked_functions
naked
function attribute.
named_sections
natural_alignment_32
target_natural_alignment_64
nonpic
pie_enabled
pcc_bitfield_type_matters
PCC_BITFIELD_TYPE_MATTERS
.
pe_aligned_commons
pie
rdynamic
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
gcc.target/i386
3dnow
3dnow
instructions.
aes
aes
instructions.
fma4
fma4
instructions.
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.target/spu/ea
ealib
__ea
library functions are available.
gcc.test-framework
no
yes