7.2.3 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.
7.2.3.1 Data type sizes
     
- ilp32
- Target has 32-bit int,long, and pointers.
 
- lp64
- Target has 32-bit int, 64-bitlongand pointers.
 
- llp64
- Target has 32-bit intandlong, 64-bitlong longand pointers.
 
- double64
- Target has 64-bit double.
 
- double64plus
- Target has doublethat is 64 bits or longer.
 
- longdouble128
- Target has 128-bit long double.
 
- int32plus
- Target has intthat is at 32 bits or longer.
 
- int16
- Target has intthat is 16 bits or shorter.
 
- long_neq_int
- Target has intandlongwith different sizes.
 
- large_double
- Target supports doublethat is longer thanfloat.
 
- large_long_double
- Target supports long doublethat is longer thandouble.
 
- ptr32plus
- Target has pointers that are 32 bits or longer.
     
 
- size32plus
- Target supports array and structure sizes that are 32 bits or longer.
     
 
- 4byte_wchar_t
- Target has wchar_tthat is at least 4 bytes.
7.2.3.2 Fortran-specific attributes
     
- fortran_integer_16
- Target supports Fortran integerthat is 16 bytes or longer.
 
- fortran_large_int
- Target supports Fortran integerkinds larger thaninteger(8).
 
- fortran_large_real
- Target supports Fortran realkinds larger thanreal(8).
7.2.3.3 Vector-specific attributes
     
- vect_condition
- Target supports vector conditional operations.
     
 
- vect_double
- Target supports hardware vectors of double.
 
- vect_float
- Target supports hardware vectors of float.
 
- vect_int
- Target supports hardware vectors of int.
 
- vect_long
- Target supports hardware vectors of long.
 
- vect_long_long
- Target supports hardware vectors of long long.
 
- vect_aligned_arrays
- Target aligns arrays to vector alignment boundary.
     
 
- vect_hw_misalign
- Target supports a vector misalign access.
     
 
- vect_no_align
- Target does not support a vector alignment mechanism.
     
 
- vect_no_int_min_max
- Target does not support a vector min and max instruction on int.
 
- vect_no_int_add
- Target does not support a vector add instruction on int.
 
- vect_no_bitwise
- Target does not support vector bitwise instructions.
     
 
- vect_char_mult
- Target supports vector charmultiplication.
 
- vect_short_mult
- Target supports vector shortmultiplication.
 
- vect_int_mult
- Target supports vector intmultiplication.
 
- vect_extract_even_odd
- Target supports vector even/odd element extraction.
     
 
- vect_extract_even_odd_wide
- Target supports vector even/odd element extraction of vectors with elements
SImodeor larger.
 
- vect_interleave
- Target supports vector interleaving.
     
 
- vect_strided
- Target supports vector interleaving and extract even/odd.
     
 
- vect_strided_wide
- Target supports vector interleaving and extract even/odd for wide
element types.
     
 
- vect_perm
- Target supports vector permutation.
     
 
- vect_shift
- Target supports a hardware vector shift operation.
     
 
- vect_widen_sum_hi_to_si
- Target supports a vector widening summation of shortoperands
intointresults, or can promote (unpack) fromshorttoint.
 
- vect_widen_sum_qi_to_hi
- Target supports a vector widening summation of charoperands
intoshortresults, or can promote (unpack) fromchartoshort.
 
- vect_widen_sum_qi_to_si
- Target supports a vector widening summation of charoperands
intointresults.
 
- vect_widen_mult_qi_to_hi
- Target supports a vector widening multiplication of charoperands
intoshortresults, or can promote (unpack) fromchartoshortand perform non-widening multiplication ofshort.
 
- vect_widen_mult_hi_to_si
- Target supports a vector widening multiplication of shortoperands
intointresults, or can promote (unpack) fromshorttointand perform non-widening multiplication ofint.
 
- vect_widen_mult_si_to_di_pattern
- Target supports a vector widening multiplication of intoperands
intolongresults.
 
- vect_sdot_qi
- Target supports a vector dot-product of signed char.
 
- vect_udot_qi
- Target supports a vector dot-product of unsigned char.
 
- vect_sdot_hi
- Target supports a vector dot-product of signed short.
 
- vect_udot_hi
- Target supports a vector dot-product of unsigned short.
 
- vect_pack_trunc
- Target supports a vector demotion (packing) of shorttocharand frominttoshortusing modulo arithmetic.
 
- vect_unpack
- Target supports a vector promotion (unpacking) of chartoshortand fromchartoint.
 
- vect_intfloat_cvt
- Target supports conversion from signed inttofloat.
 
- vect_uintfloat_cvt
- Target supports conversion from unsigned inttofloat.
 
- vect_floatint_cvt
- Target supports conversion from floattosigned int.
 
- vect_floatuint_cvt
- Target supports conversion from floattounsigned int.
 
- vect_max_reduc
- Target supports max reduction for vectors. 
7.2.3.4 Thread Local Storage attributes
     
- tls
- Target supports thread-local storage.
     
 
- tls_native
- Target supports native (rather than emulated) thread-local storage.
     
 
- tls_runtime
- Test system supports executing TLS executables. 
7.2.3.5 Decimal floating point attributes
     
- dfp
- Targets supports compiling decimal floating point extension to C.
     
 
- dfp_nocache
- Including the options used to compile this particular test, the
target supports compiling decimal floating point extension to C.
     
 
- dfprt
- Test system can execute decimal floating point tests.
     
 
- dfprt_nocache
- Including the options used to compile this particular test, the
test system can execute decimal floating point tests.
     
 
- hard_dfp
- Target generates decimal floating point instructions with current options. 
7.2.3.6 ARM-specific attributes
     
- arm32
- ARM target generates 32-bit code.
     
 
- arm_eabi
- ARM target adheres to the ABI for the ARM Architecture.
     
 
- arm_fp_ok
- ARM target defines __ARM_FPusing-mfloat-abi=softfpor
equivalent options.  Some multilibs may be incompatible with these
options.
 
- arm_hf_eabi
- ARM 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_hard_vfp_ok
- ARM target supports -mfpu=vfp -mfloat-abi=hard. 
Some multilibs may be incompatible with these options.
 
- arm_iwmmxt_ok
- ARM target supports -mcpu=iwmmxt. 
Some multilibs may be incompatible with this option.
 
- arm_neon
- ARM target supports generating NEON instructions.
     
 
- arm_tune_string_ops_prefer_neon
- Test CPU tune supports inlining string operations with NEON instructions.
     
 
- arm_neon_hw
- Test system supports executing NEON instructions.
     
 
- arm_neonv2_hw
- Test system supports executing NEON v2 instructions.
     
 
- arm_neon_ok
- ARM Target supports -mfpu=neon -mfloat-abi=softfpor compatible
options.  Some multilibs may be incompatible with these options.
 
- arm_neonv2_ok
- ARM Target supports -mfpu=neon-vfpv4 -mfloat-abi=softfpor compatible
options.  Some multilibs may be incompatible with these options.
 
- arm_neon_fp16_ok
- ARM 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_hw
- Test system supports executing Neon half-precision float instructions. 
(Implies previous.)
     
 
- arm_thumb1_ok
- ARM target generates Thumb-1 code for -mthumb.
 
- arm_thumb2_ok
- ARM target generates Thumb-2 code for -mthumb.
 
- arm_vfp_ok
- ARM target supports -mfpu=vfp -mfloat-abi=softfp. 
Some multilibs may be incompatible with these options.
 
- arm_vfp3_ok
- ARM target supports -mfpu=vfp3 -mfloat-abi=softfp. 
Some multilibs may be incompatible with these options.
 
- arm_v8_vfp_ok
- ARM target supports -mfpu=fp-armv8 -mfloat-abi=softfp. 
Some multilibs may be incompatible with these options.
 
- arm_v8_neon_ok
- ARM target supports -mfpu=neon-fp-armv8 -mfloat-abi=softfp. 
Some multilibs may be incompatible with these options.
 
- arm_v8_1a_neon_ok
- ARM target supports options to generate ARMv8.1 Adv.SIMD instructions. 
Some multilibs may be incompatible with these options.
     
 
- arm_v8_1a_neon_hw
- ARM target supports executing ARMv8.1 Adv.SIMD instructions.  Some
multilibs may be incompatible with the options needed.  Implies
arm_v8_1a_neon_ok.
     
 
- arm_prefer_ldrd_strd
- ARM target prefers LDRDandSTRDinstructions overLDMandSTMinstructions.
7.2.3.7 AArch64-specific attributes
     
- aarch64_asm_<ext>_ok
- AArch64 assembler supports the architecture extension extvia the.arch_extensionpseudo-op.
 
- aarch64_tiny
- AArch64 target which generates instruction sequences for tiny memory model. 
 
- aarch64_small
- AArch64 target which generates instruction sequences for small memory model. 
 
- aarch64_large
- AArch64 target which generates instruction sequences for large memory model. 
 
- aarch64_little_endian
- AArch64 target which generates instruction sequences for little endian. 
 
- aarch64_big_endian
- AArch64 target which generates instruction sequences for big endian. 
 
- aarch64_small_fpic
- Binutils installed on test system supports relocation types required by -fpic
for AArch64 small memory model.
7.2.3.8 MIPS-specific attributes
     
- mips64
- MIPS target supports 64-bit instructions.
     
 
- nomips16
- MIPS target does not produce MIPS16 code.
     
 
- mips16_attribute
- MIPS target can generate MIPS16 code.
     
 
- mips_loongson
- MIPS target is a Loongson-2E or -2F target using an ABI that supports
the Loongson vector modes.
     
 
- mips_newabi_large_long_double
- MIPS target supports long doublelarger thandoublewhen using the new ABI.
 
- mpaired_single
- MIPS target supports -mpaired-single.
7.2.3.9 PowerPC-specific attributes
     
- dfp_hw
- PowerPC target supports executing hardware DFP instructions.
     
 
- p8vector_hw
- PowerPC target supports executing VSX instructions (ISA 2.07).
     
 
- powerpc64
- Test system supports executing 64-bit instructions.
     
 
- powerpc_altivec
- PowerPC target supports AltiVec.
     
 
- powerpc_altivec_ok
- PowerPC target supports -maltivec.
 
- powerpc_eabi_ok
- PowerPC target supports -meabi.
 
- powerpc_elfv2
- PowerPC target supports -mabi=elfv2.
 
- powerpc_fprs
- PowerPC target supports floating-point registers.
     
 
- powerpc_hard_double
- PowerPC target supports hardware double-precision floating-point.
     
 
- powerpc_htm_ok
- PowerPC target supports -mhtm
 
- powerpc_p8vector_ok
- PowerPC target supports -mpower8-vector
 
- powerpc_ppu_ok
- PowerPC target supports -mcpu=cell.
 
- powerpc_spe
- PowerPC target supports PowerPC SPE.
     
 
- powerpc_spe_nocache
- Including the options used to compile this particular test, the
PowerPC target supports PowerPC SPE.
     
 
- powerpc_spu
- PowerPC target supports PowerPC SPU.
     
 
- powerpc_vsx_ok
- PowerPC target supports -mvsx.
 
- powerpc_405_nocache
- Including the options used to compile this particular test, the
PowerPC target supports PowerPC 405.
     
 
- ppc_recip_hw
- PowerPC target supports executing reciprocal estimate instructions.
     
 
- spu_auto_overlay
- SPU target has toolchain that supports automatic overlay generation.
     
 
- vmx_hw
- PowerPC target supports executing AltiVec instructions.
     
 
- vsx_hw
- PowerPC target supports executing VSX instructions (ISA 2.06). 
7.2.3.10 Other hardware attributes
     
- avx
- Target supports compiling avxinstructions.
 
- avx_runtime
- Target supports the execution of avxinstructions.
 
- cell_hw
- Test system can execute AltiVec and Cell PPU instructions.
     
 
- coldfire_fpu
- Target uses a ColdFire FPU.
     
 
- hard_float
- Target supports FPU instructions.
     
 
- non_strict_align
- Target does not require strict alignment.
     
 
- sqrt_insn
- Target has a square root instruction that the compiler can generate.
     
 
- sse
- Target supports compiling sseinstructions.
 
- sse_runtime
- Target supports the execution of sseinstructions.
 
- sse2
- Target supports compiling sse2instructions.
 
- sse2_runtime
- Target supports the execution of sse2instructions.
 
- sync_char_short
- Target supports atomic operations on charandshort.
 
- sync_int_long
- Target supports atomic operations on intandlong.
 
- ultrasparc_hw
- Test environment appears to run executables on a simulator that
accepts only EM_SPARCexecutables and chokes onEM_SPARC32PLUSorEM_SPARCV9executables.
 
- vect_cmdline_needed
- Target requires a command line argument to enable a SIMD instruction set.
     
 
- pie_copyreloc
- The x86-64 target linker supports PIE with copy reloc. 
7.2.3.11 Environment attributes
     
- c
- The language for the compiler under test is C.
     
 
- c++
- The language for the compiler under test is C++.
     
 
- c99_runtime
- Target provides a full C99 runtime.
     
 
- correct_iso_cpp_string_wchar_protos
- Target string.handwchar.hheaders provide C++ required
overloads forstrchretc. functions.
 
- dummy_wcsftime
- Target uses a dummy wcsftimefunction that always returns zero.
 
- fd_truncate
- Target can truncate a file from a file descriptor, as used by
libgfortran/io/unix.c:fd_truncate; i.e. ftruncateorchsize.
 
- freestanding
- Target is ‘freestanding’ as 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.
     
 
- init_priority
- Target supports constructors with initialization priority arguments.
     
 
- inttypes_types
- Target 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_strtofp
- Target might have errors of a few ULP in string to floating-point
conversion functions and overflow is not always detected correctly by
those functions.
     
 
- mempcpy
- Target provides mempcpyfunction.
 
- mmap
- Target supports mmap.
 
- newlib
- Target supports Newlib.
     
 
- pow10
- Target provides pow10function.
 
- pthread
- Target can compile using pthread.hwith no errors or warnings.
 
- pthread_h
- Target has pthread.h.
 
- run_expensive_tests
- Expensive 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_EXPENSIVE environment variable to a non-empty string.
     
 
- simulator
- Test system runs executables on a simulator (i.e. slowly) rather than
hardware (i.e. fast).
     
 
- stabs
- Target supports the stabs debugging format.
     
 
- stdint_types
- Target has the basic signed and unsigned C types in stdint.h. 
This will be obsolete when GCC ensures a workingstdint.hfor
all targets.
 
- stpcpy
- Target provides stpcpyfunction.
 
- trampolines
- Target supports trampolines.
     
 
- uclibc
- Target supports uClibc.
     
 
- unwrapped
- Target does not use a status wrapper.
     
 
- vxworks_kernel
- Target is a VxWorks kernel.
     
 
- vxworks_rtp
- Target is a VxWorks RTP.
     
 
- wchar
- Target supports wide characters. 
7.2.3.12 Other attributes
     
- automatic_stack_alignment
- Target supports automatic stack alignment.
     
 
- cxa_atexit
- Target uses __cxa_atexit.
 
- default_packed
- Target has packed layout of structure members by default.
     
 
- fgraphite
- Target supports Graphite optimizations.
     
 
- fixed_point
- Target supports fixed-point extension to C.
     
 
- fopenacc
- Target supports OpenACC via -fopenacc.
     
 
- fopenmp
- Target supports OpenMP via -fopenmp.
     
 
- fpic
- Target supports -fpic and -fPIC.
     
 
- freorder
- Target supports -freorder-blocks-and-partition.
     
 
- fstack_protector
- Target supports -fstack-protector.
     
 
- gas
- Target uses GNU as.
     
 
- gc_sections
- Target supports --gc-sections.
     
 
- gld
- Target uses GNU ld.
     
 
- keeps_null_pointer_checks
- Target keeps null pointer checks, either due to the use of
-fno-delete-null-pointer-checks or hardwired into the target.
     
 
- lto
- Compiler has been configured to support link-time optimization (LTO).
     
 
- naked_functions
- Target supports the nakedfunction attribute.
 
- named_sections
- Target supports named sections.
     
 
- natural_alignment_32
- Target uses natural alignment (aligned to type size) for types of
32 bits or less.
     
 
- target_natural_alignment_64
- Target uses natural alignment (aligned to type size) for types of
64 bits or less.
     
 
- nonpic
- Target does not generate PIC by default.
     
 
- pie_enabled
- Target generates PIE by default.
     
 
- pcc_bitfield_type_matters
- Target defines PCC_BITFIELD_TYPE_MATTERS.
 
- pe_aligned_commons
- Target supports -mpe-aligned-commons.
     
 
- pie
- Target supports -pie, -fpie and -fPIE.
     
 
- section_anchors
- Target supports section anchors.
     
 
- short_enums
- Target defaults to short enums.
     
 
- static
- Target supports -static.
     
 
- static_libgfortran
- Target supports statically linking ‘libgfortran’.
     
 
- string_merging
- Target supports merging string constants at link time.
     
 
- ucn
- Target supports compiling and assembling UCN.
     
 
- ucn_nocache
- Including the options used to compile this particular test, the
target supports compiling and assembling UCN.
     
 
- unaligned_stack
- Target does not guarantee that its STACK_BOUNDARYis greater than
or equal to the required vector alignment.
 
- vector_alignment_reachable
- Vector alignment is reachable for types of 32 bits or less.
     
 
- vector_alignment_reachable_for_64bit
- Vector alignment is reachable for types of 64 bits or less.
     
 
- wchar_t_char16_t_compatible
- Target supports wchar_tthat is compatible withchar16_t.
 
- wchar_t_char32_t_compatible
- Target supports wchar_tthat is compatible withchar32_t.
 
- comdat_group
- Target uses comdat groups. 
7.2.3.13 Local to tests in gcc.target/i386
     
- 3dnow
- Target supports compiling 3dnowinstructions.
 
- aes
- Target supports compiling aesinstructions.
 
- fma4
- Target supports compiling fma4instructions.
 
- ms_hook_prologue
- Target supports attribute ms_hook_prologue.
 
- pclmul
- Target supports compiling pclmulinstructions.
 
- sse3
- Target supports compiling sse3instructions.
 
- sse4
- Target supports compiling sse4instructions.
 
- sse4a
- Target supports compiling sse4ainstructions.
 
- ssse3
- Target supports compiling ssse3instructions.
 
- vaes
- Target supports compiling vaesinstructions.
 
- vpclmul
- Target supports compiling vpclmulinstructions.
 
- xop
- Target supports compiling xopinstructions.
7.2.3.14 Local to tests in gcc.target/spu/ea
     
- ealib
- Target __ealibrary functions are available.
7.2.3.15 Local to tests in gcc.test-framework
     
- no
- Always returns 0.
     
 
- yes
- Always returns 1.