Commit graph

1029 commits

Author SHA1 Message Date
Wolfgang Hospital
3b88dade7f AVR: target/115065 - Tweak __clzhi2.
The libgcc implementation of __clzhi2 can be tweaked by
one cycle in some situations by re-arranging the instructions.
It also reduces the WCET by 1 cycle.

libgcc/
	PR target/115065
	* config/avr/lib1funcs.S (__clzhi2): Tweak.

(cherry picked from commit 988838da722dea09bd81ee9d49800a6f24980372)
2024-05-18 15:14:58 +02:00
Georg-Johann Lay
fcdd723779 AVR: target/114981 - Tweak __builtin_powif / __powisf2
Implement __powisf2 in assembly.

	PR target/114981
libgcc/
	* config/avr/t-avr (LIB2FUNCS_EXCLUDE): Add _powisf2.
	(LIB1ASMFUNCS) [!avrtiny]: Add _powif.
	* config/avr/lib1funcs.S (mov4): New .macro.
	(L_powif, __powisf2) [!avrtiny]: New module and function.

gcc/testsuite/
	* gcc.target/avr/pr114981-powif.c: New test.

(cherry picked from commit af64af69c3cc85dbe00c520651a54850bf5cadc1)
2024-05-10 12:02:14 +02:00
GCC Administrator
93793ed35d Daily bump. 2024-05-09 11:03:31 +00:00
Georg-Johann Lay
a9e313ed38 AVR: target/114981 - Support __builtin_powi[l] / __powidf2.
This supports __powidf2 by means of a double wrapper for already
existing f7_powi (renamed to __f7_powi by f7-renames.h).
It tweaks the implementation so that it does not perform trivial
multiplications with 1.0 any more, but instead uses a move.
It also fixes the last statement of f7_powi, which was wrong.
Notice that f7_powi was unused until now.

	PR target/114981
libgcc/config/avr/libf7/
	* libf7-common.mk (F7_ASM_PARTS): Add D_powi
	* libf7-asm.sx (F7MOD_D_powi_, __powidf2): New module and function.
	* libf7.c (f7_powi): Fix last (wrong) statement.
	Tweak trivial multiplications with 1.0.

gcc/testsuite/
	* gcc.target/avr/pr114981-powil.c: New test.

(cherry picked from commit de4eea7d7ea86e54843507c68d6672eca9d8c7bb)
2024-05-09 10:13:54 +02:00
Jakub Jelinek
cd0059a197 Update ChangeLog and version files for release 2024-05-07 06:52:35 +00:00
Georg-Johann Lay
a44d16efa7 AVR: target/114794 - Tweak __udivmodqi4
libgcc/
	PR target/114794
	* config/avr/lib1funcs.S (__udivmodqi4): Tweak.
2024-04-21 14:39:08 +02:00
Jakub Jelinek
f8409c3109 m68k: Quiet up cppcheck warning [PR114689]
cppcheck apparently warns on the | !!sticky part of the expression and
using | (!!sticky) quiets it up (it is correct as is).
The following patch adds the ()s, and also adds them around mant >> 1 just
in case it makes it clearer to all readers that the expression is parsed
that way already.

2024-04-15  Jakub Jelinek  <jakub@redhat.com>

	PR libgcc/114689
	* config/m68k/fpgnulib.c (__truncdfsf2): Add parentheses around
	!!sticky bitwise or operand to quiet up cppcheck.  Add parentheses
	around mant >> 1 bitwise or operand.
2024-04-15 17:46:03 +02:00
Andre Vieira
5aa3fec38c aarch64: Add support for _BitInt
This patch adds support for C23's _BitInt for the AArch64 port when compiling
for little endianness.  Big Endianness requires further target-agnostic
support and we therefor disable it for now.

gcc/ChangeLog:

	* config/aarch64/aarch64.cc (TARGET_C_BITINT_TYPE_INFO): Declare MACRO.
	(aarch64_bitint_type_info): New function.
	(aarch64_return_in_memory_1): Return large _BitInt's in memory.
	(aarch64_function_arg_alignment): Adapt to correctly return the ABI
	mandated alignment of _BitInt(N) where N > 128 as the alignment of
	TImode.
	(aarch64_composite_type_p): Return true for _BitInt(N), where N > 128.

libgcc/ChangeLog:

	* config/aarch64/t-softfp (softfp_extras): Add floatbitinthf,
	floatbitintbf, floatbitinttf and fixtfbitint.
	* config/aarch64/libgcc-softfp.ver (GCC_14.0.0): Add __floatbitinthf,
	__floatbitintbf, __floatbitinttf and __fixtfbitint.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/bitint-alignments.c: New test.
	* gcc.target/aarch64/bitint-args.c: New test.
	* gcc.target/aarch64/bitint-sizes.c: New test.
	* gcc.target/aarch64/bitfield-bitint-abi.h: New header.
	* gcc.target/aarch64/bitfield-bitint-abi-align16.c: New test.
	* gcc.target/aarch64/bitfield-bitint-abi-align8.c: New test.
2024-04-10 16:47:15 +01:00
Sergey Bugaev
46c91665f4 libgcc: Add basic support for aarch64-gnu (GNU/Hurd on AArch64)
There is currently no unwinding implementation.

libgcc/ChangeLog:

	* config.host: Recognize aarch64*-*-gnu* hosts.
	* config/aarch64/gnu-unwind.h: New file.
	* config/aarch64/heap-trampoline.c
	(allocate_trampoline_page): Support GNU/Hurd.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
2024-04-09 09:23:33 +02:00
Wilco Dijkstra
8f9e92eec3 libgcc: Add missing HWCAP entries to aarch64/cpuinfo.c
A few HWCAP entries are missing from aarch64/cpuinfo.c.  This results in build
errors on older machines.

libgcc/
	* config/aarch64/cpuinfo.c: Add HWCAP_EVTSTRM, HWCAP_CRC32, HWCAP_CPUID,
	HWCAP_PACA and HWCAP_PACG.
2024-04-03 16:24:03 +01:00
Flavio Cruz
b7c4ae5ace Hurd x86_64: add unwind support for signal trampoline code
Tested with some simple toy examples where an exception is thrown in the
signal handler.

libgcc/ChangeLog:
	* config/i386/gnu-unwind.h: Support unwinding x86_64 signal frames.

Signed-off-by: Flavio Cruz <flaviocruz@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2024-03-20 20:25:09 +01:00
Kewen Lin
438ef14367 rs6000: Neuter option -mpower{8,9}-vector [PR109987]
As PR109987 and its duplicated bugs show, -mno-power8-vector
(and -mno-power9-vector) cause some problems and as Segher
pointed out in [1] they are workaround options, so this patch
is to remove -m{no,}-power{8,9}-options.  Like what we did
for option -mdirect-move before, this patch still keep the
corresponding internal flags and they are automatically set
based on -mcpu.  The test suite update takes some efforts,
it consists of some aspects:
  - effective target powerpc_p{8,9}vector_ok are removed
    and replaced with powerpc_vsx_ok.
  - Some cases having -mpower{8,9}-vector are updated with
    -mvsx, some of them already have -mdejagnu-cpu.  For
    those that don't have -mdejagnu-cpu, if -mdejagnu-cpu
    is needed for the test point, then it's appended;
    otherwise, add additional-options -mdejagnu-cpu=power{8,9}
    if has_arch_pwr{8,9} isn't satisfied.
  - Some test cases are updated with explicit -mvsx.
  - Some test cases with those two option mixed are adjusted
    to keep the test points, like -mpower8-vector
    -mno-power9-vector are updated with -mdejagnu-cpu=power8
    -mvsx etc.
  - Some test cases with -mno-power{8,9}-vector are updated
    by replacing -mno-power{8,9}-vector with -mno-vsx, or
    just removing it.
  - For some cases, we don't always specify -mdejagnu-cpu to
    avoid to restrict the testing coverage, it would check
    has_arch_pwr{8,9} and appended that as need.
  - For vect test cases run, it doesn't specify -mcpu=power9
    for power10 and up.

Bootstrapped and regtested on:
  - powerpc64-linux-gnu P7/P8/P9 {-m32,-m64}
  - powerpc64le-linux-gnu P8/P9/P10

Although it's stage4 now, as the discussion in PR113115 we
are still eager to neuter these two options, so is it ok
for trunk?

[1] https://gcc.gnu.org/pipermail/gcc-patches/2022-January/589303.html

	PR target/109987

gcc/ChangeLog:

	* config/rs6000/constraints.md (we): Update internal doc without
	referring to option -mpower9-vector.
	* config/rs6000/driver-rs6000.cc (asm_names): Remove mpower9-vector
	special handlings.
	* config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS,
	OTHER_P8_VECTOR_MASKS): Merge to ...
	(OTHER_VSX_VECTOR_MASKS): ... here.
	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Remove
	some error message handlings and explicit option mask adjustments on
	explicit option power{8,9}-vector conflicting with other options.
	(rs6000_print_isa_options): Update comments.
	(rs6000_disable_incompatible_switches): Remove power{8,9}-vector
	related array items and handlings.
	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Remove mpower9-vector
	special handlings.
	* config/rs6000/rs6000.opt: Make option power{8,9}-vector as
	WarnRemoved.
	* doc/extend.texi: Remove documentation referring to option
	-mpower8-vector.
	* doc/invoke.texi: Remove documentation for option
	-mpower{8,9}-vector and adjust some documentation referring to them.
	* doc/md.texi: Update documentation for constraint we.
	* doc/sourcebuild.texi: Remove documentation for powerpc_p8vector_ok.

libgcc/ChangeLog:

	* config/rs6000/t-float128-hw: Replace options -mpower{8,9}-vector
	with -mcpu=power9.
	* configure.ac: Update use of option -mpower9-vector with
	-mcpu=power9.
	* configure: Regenerate.

gcc/testsuite/ChangeLog:

	* lib/target-supports.exp
	(check_effective_target_powerpc_p8vector_ok): Remove.
	(check_effective_target_powerpc_p9vector_ok): Remove.
	(check_p8vector_hw_available): Replace -mpower8-vector with
	-mcpu=power8.
	(check_p9vector_hw_available): Replace -mpower9-vector with
	-mcpu=power9.
	(check_ppc_float128_hw_available): Likewise.
	(check_vect_support_and_set_flags): Replace -mpower8-vector with
	-mcpu=power8, replace -mpower9-vector with -mcpu=power9 or
	nothing if check_power10_hw_available and place -mcpu=970 first
	if needed to avoid possible overriding.
	* g++.target/powerpc/altivec-19.C: Replace powerpc_p9vector_ok with
	powerpc_vsx_ok and append -mvsx to dg-options.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-5.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-5.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-10.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-11.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-5.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-6.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-7.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-8.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-9.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-10.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-11.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-5.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-6.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-7.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-8.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-9.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-5.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-0.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-0.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-0.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-4.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-5.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-6.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-7.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-0.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-4.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-5.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-6.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-7.c: Likewise.
	* gcc.target/powerpc/builtins-3-p9.c: Likewise.
	* gcc.target/powerpc/byte-in-either-range-0.c: Likewise.
	* gcc.target/powerpc/byte-in-either-range-1.c: Likewise.
	* gcc.target/powerpc/byte-in-range-0.c: Likewise.
	* gcc.target/powerpc/byte-in-range-1.c: Likewise.
	* gcc.target/powerpc/byte-in-set-0.c: Likewise.
	* gcc.target/powerpc/byte-in-set-1.c: Likewise.
	* gcc.target/powerpc/byte-in-set-2.c: Likewise.
	* gcc.target/powerpc/clone1.c: Likewise.
	* gcc.target/powerpc/ctz-3.c: Likewise.
	* gcc.target/powerpc/ctz-4.c: Likewise.
	* gcc.target/powerpc/darn-0.c: Likewise.
	* gcc.target/powerpc/darn-1.c: Likewise.
	* gcc.target/powerpc/darn-2.c: Likewise.
	* gcc.target/powerpc/dform-3.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-0.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-1.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-10.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-11.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-12.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-13.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-14.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-15.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-16.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-17.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-18.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-19.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-2.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-20.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-21.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-22.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-23.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-24.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-25.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-26.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-27.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-28.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-29.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-3.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-30.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-31.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-32.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-33.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-34.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-35.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-36.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-37.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-38.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-39.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-4.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-40.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-41.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-42.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-43.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-44.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-45.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-46.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-47.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-48.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-49.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-5.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-50.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-51.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-52.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-53.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-54.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-55.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-56.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-57.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-58.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-59.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-6.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-60.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-61.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-62.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-63.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-64.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-65.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-66.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-67.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-68.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-69.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-7.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-70.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-71.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-72.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-73.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-74.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-75.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-76.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-77.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-78.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-79.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-8.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-9.c: Likewise.
	* gcc.target/powerpc/direct-move-vector.c: Likewise.
	* gcc.target/powerpc/float128-type-2.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-int-fwrapv.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-int.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-longlong.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-char.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-short.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-char.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-float.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-int.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-longlong.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-short.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-char-p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-float-p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-int-p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-short-p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-mult-int128-p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-int.p9.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-longlong.p9.c: Likewise.
	* gcc.target/powerpc/p9-dimode1.c: Likewise.
	* gcc.target/powerpc/p9-dimode2.c: Likewise.
	* gcc.target/powerpc/p9-extract-1.c: Likewise.
	* gcc.target/powerpc/p9-extract-2.c: Likewise.
	* gcc.target/powerpc/p9-extract-3.c: Likewise.
	* gcc.target/powerpc/p9-extract-4.c: Likewise.
	* gcc.target/powerpc/p9-fpcvt-1.c: Likewise.
	* gcc.target/powerpc/p9-fpcvt-2.c: Likewise.
	* gcc.target/powerpc/p9-fpcvt-3.c: Likewise.
	* gcc.target/powerpc/p9-lxvx-stxvx-1.c: Likewise.
	* gcc.target/powerpc/p9-lxvx-stxvx-2.c: Likewise.
	* gcc.target/powerpc/p9-lxvx-stxvx-3.c: Likewise.
	* gcc.target/powerpc/p9-minmax-1.c: Likewise.
	* gcc.target/powerpc/p9-minmax-2.c: Likewise.
	* gcc.target/powerpc/p9-minmax-3.c: Likewise.
	* gcc.target/powerpc/p9-novsx.c: Likewise.
	* gcc.target/powerpc/p9-permute.c: Likewise.
	* gcc.target/powerpc/p9-sign_extend-runnable.c: Likewise.
	* gcc.target/powerpc/p9-splat-1.c: Likewise.
	* gcc.target/powerpc/p9-splat-2.c: Likewise.
	* gcc.target/powerpc/p9-splat-3.c: Likewise.
	* gcc.target/powerpc/p9-splat-4.c: Likewise.
	* gcc.target/powerpc/p9-splat-5.c: Likewise.
	* gcc.target/powerpc/p9-vbpermd.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-1.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-2.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-3.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-4.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-5.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-6.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-7.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-epil-8.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-1.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-2.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-3.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-4.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-5.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-6.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-7.c: Likewise.
	* gcc.target/powerpc/p9-vec-length-full-8.c: Likewise.
	* gcc.target/powerpc/p9-vneg.c: Likewise.
	* gcc.target/powerpc/p9-vparity.c: Likewise.
	* gcc.target/powerpc/p9-vpermr.c: Likewise.
	* gcc.target/powerpc/p9-xxbr-1.c: Likewise.
	* gcc.target/powerpc/p9-xxbr-2.c: Likewise.
	* gcc.target/powerpc/p9-xxbr-3.c: Likewise.
	* gcc.target/powerpc/ppc-fortran/pr80108-1.f90: Likewise.
	* gcc.target/powerpc/ppc-round3.c: Likewise.
	* gcc.target/powerpc/pr103124.c: Likewise.
	* gcc.target/powerpc/pr104015-1.c: Likewise.
	* gcc.target/powerpc/pr106769-p9.c: Likewise.
	* gcc.target/powerpc/pr107412.c: Likewise.
	* gcc.target/powerpc/pr110429.c: Likewise.
	* gcc.target/powerpc/pr66144-1.c: Likewise.
	* gcc.target/powerpc/pr71186.c: Likewise.
	* gcc.target/powerpc/pr71309.c: Likewise.
	* gcc.target/powerpc/pr71670.c: Likewise.
	* gcc.target/powerpc/pr71698.c: Likewise.
	* gcc.target/powerpc/pr71720.c: Likewise.
	* gcc.target/powerpc/pr72853.c: Likewise.
	* gcc.target/powerpc/pr78056-1.c: Likewise.
	* gcc.target/powerpc/pr78658.c: Likewise.
	* gcc.target/powerpc/pr78953.c: Likewise.
	* gcc.target/powerpc/pr79004.c: Likewise.
	* gcc.target/powerpc/pr79038-1.c: Likewise.
	* gcc.target/powerpc/pr79179.c: Likewise.
	* gcc.target/powerpc/pr79251.p9.c: Likewise.
	* gcc.target/powerpc/pr79799-1.c: Likewise.
	* gcc.target/powerpc/pr79799-2.c: Likewise.
	* gcc.target/powerpc/pr79799-3.c: Likewise.
	* gcc.target/powerpc/pr79799-5.c: Likewise.
	* gcc.target/powerpc/pr80695-p9.c: Likewise.
	* gcc.target/powerpc/pr81348.c: Likewise.
	* gcc.target/powerpc/pr81622.c: Likewise.
	* gcc.target/powerpc/pr84154-3.c: Likewise.
	* gcc.target/powerpc/pr90763.c: Likewise.
	* gcc.target/powerpc/pr96933-1.c: Likewise.
	* gcc.target/powerpc/sad-vectorize-1.c: Likewise.
	* gcc.target/powerpc/sad-vectorize-2.c: Likewise.
	* gcc.target/powerpc/signbit-2.c: Likewise.
	* gcc.target/powerpc/vadsdu-0.c: Likewise.
	* gcc.target/powerpc/vadsdu-1.c: Likewise.
	* gcc.target/powerpc/vadsdu-2.c: Likewise.
	* gcc.target/powerpc/vadsdu-3.c: Likewise.
	* gcc.target/powerpc/vadsdu-4.c: Likewise.
	* gcc.target/powerpc/vadsdu-5.c: Likewise.
	* gcc.target/powerpc/vadsdub-1.c: Likewise.
	* gcc.target/powerpc/vadsdub-2.c: Likewise.
	* gcc.target/powerpc/vadsduh-1.c: Likewise.
	* gcc.target/powerpc/vadsduh-2.c: Likewise.
	* gcc.target/powerpc/vadsduw-1.c: Likewise.
	* gcc.target/powerpc/vadsduw-2.c: Likewise.
	* gcc.target/powerpc/vec-extract-4.c: Likewise.
	* gcc.target/powerpc/vec-init-3.c: Likewise.
	* gcc.target/powerpc/vec-minmax-1.c: Likewise.
	* gcc.target/powerpc/vec-minmax-2.c: Likewise.
	* gcc.target/powerpc/vec-set-char.c: Likewise.
	* gcc.target/powerpc/vec-set-int.c: Likewise.
	* gcc.target/powerpc/vec-set-short.c: Likewise.
	* gcc.target/powerpc/vec_reve_2.c: Likewise.
	* gcc.target/powerpc/vector_float.c: Likewise.
	* gcc.target/powerpc/vslv-0.c: Likewise.
	* gcc.target/powerpc/vslv-1.c: Likewise.
	* gcc.target/powerpc/vsrv-0.c: Likewise.
	* gcc.target/powerpc/vsrv-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-10.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-11.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-12.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-13.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-14.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-8.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-ne-9.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-10.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-11.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-12.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-13.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-14.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-8.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eq-9.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-8.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpne-9.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cntlz-lsbb-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cntlz-lsbb-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cntlz-lsbb-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cntlz-lsbb-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cnttz-lsbb-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cnttz-lsbb-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cnttz-lsbb-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cnttz-lsbb-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-10.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-11.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-12.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-13.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-8.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-9.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-0.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-1.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-10.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-11.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-12.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-13.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-3.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-4.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-5.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-6.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-8.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-9.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-msum.c: Likewise.
	* gcc.target/powerpc/vsx-himode.c: Likewise.
	* gcc.target/powerpc/vsx-himode2.c: Likewise.
	* gcc.target/powerpc/vsx-himode3.c: Likewise.
	* gcc.target/powerpc/vsx-qimode.c: Likewise.
	* gcc.target/powerpc/vsx-qimode2.c: Likewise.
	* gcc.target/powerpc/vsx-qimode3.c: Likewise.
	* g++.target/powerpc/pr65240-1.C: Replace powerpc_p8vector_ok with
	powerpc_vsx_ok and append -mvsx to dg-options.
	* g++.target/powerpc/pr65240-2.C: Likewise.
	* g++.target/powerpc/pr65240-3.C: Likewise.
	* g++.target/powerpc/pr65242.C: Likewise.
	* g++.target/powerpc/pr67211.C: Likewise.
	* g++.target/powerpc/pr71294.C: Likewise.
	* g++.target/powerpc/pr84279.C: Likewise.
	* g++.target/powerpc/pr93974.C: Likewise.
	* gcc.target/powerpc/atomic-p8.c: Likewise.
	* gcc.target/powerpc/atomic_load_store-p8.c: Likewise.
	* gcc.target/powerpc/bcd-2.c: Likewise.
	* gcc.target/powerpc/bcd-3.c: Likewise.
	* gcc.target/powerpc/bool2-p8.c: Likewise.
	* gcc.target/powerpc/bool3-p8.c: Likewise.
	* gcc.target/powerpc/builtins-1.c: Likewise.
	* gcc.target/powerpc/builtins-3-p8.c: Likewise.
	* gcc.target/powerpc/builtins-5.c: Likewise.
	* gcc.target/powerpc/builtins-9.c: Likewise.
	* gcc.target/powerpc/crypto-builtin-1.c: Likewise.
	* gcc.target/powerpc/crypto-builtin-2.c: Likewise.
	* gcc.target/powerpc/direct-move-double1.c: Likewise.
	* gcc.target/powerpc/direct-move-float1.c: Likewise.
	* gcc.target/powerpc/direct-move-long1.c: Likewise.
	* gcc.target/powerpc/direct-move-vint1.c: Likewise.
	* gcc.target/powerpc/float128-type-1.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-char.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-double.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-float.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-int.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-extract-short.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-char-p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-float-p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-int-p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-insert-short-p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-char.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-floatdouble.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-int.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-short.c: Likewise.
	* gcc.target/powerpc/fold-vec-select-double.c: Likewise.
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c: Likewise.
	* gcc.target/powerpc/fusion.c: Likewise.
	* gcc.target/powerpc/fusion2.c: Likewise.
	* gcc.target/powerpc/mul-vectorize-1.c: Likewise.
	* gcc.target/powerpc/p8-vec-xl-xst-v2.c: Likewise.
	* gcc.target/powerpc/p8-vec-xl-xst.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-1.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-2.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-3.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-4.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-5.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-6.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-7.c: Likewise.
	* gcc.target/powerpc/p8vector-fp.c: Likewise.
	* gcc.target/powerpc/p8vector-int128-1.c: Likewise.
	* gcc.target/powerpc/p8vector-ldst.c: Likewise.
	* gcc.target/powerpc/p8vector-vbpermq.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-1.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-2.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-3.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-4.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-5.c: Likewise.
	* gcc.target/powerpc/ppc-round2.c: Likewise.
	* gcc.target/powerpc/pr100866-1.c: Likewise.
	* gcc.target/powerpc/pr100866-2.c: Likewise.
	* gcc.target/powerpc/pr104239-1.c: Likewise.
	* gcc.target/powerpc/pr104239-2.c: Likewise.
	* gcc.target/powerpc/pr104239-3.c: Likewise.
	* gcc.target/powerpc/pr106769-p8.c: Likewise.
	* gcc.target/powerpc/pr108396.c: Likewise.
	* gcc.target/powerpc/pr111449-1.c: Likewise.
	* gcc.target/powerpc/pr57744.c: Likewise.
	* gcc.target/powerpc/pr58673-1.c: Likewise.
	* gcc.target/powerpc/pr58673-2.c: Likewise.
	* gcc.target/powerpc/pr60137.c: Likewise.
	* gcc.target/powerpc/pr60203.c: Likewise.
	* gcc.target/powerpc/pr66144-2.c: Likewise.
	* gcc.target/powerpc/pr66144-3.c: Likewise.
	* gcc.target/powerpc/pr68163.c: Likewise.
	* gcc.target/powerpc/pr69548.c: Likewise.
	* gcc.target/powerpc/pr70669.c: Likewise.
	* gcc.target/powerpc/pr71977-1.c: Likewise.
	* gcc.target/powerpc/pr71977-2.c: Likewise.
	* gcc.target/powerpc/pr72717.c: Likewise.
	* gcc.target/powerpc/pr78056-3.c: Likewise.
	* gcc.target/powerpc/pr78056-4.c: Likewise.
	* gcc.target/powerpc/pr78102.c: Likewise.
	* gcc.target/powerpc/pr78543.c: Likewise.
	* gcc.target/powerpc/pr78604.c: Likewise.
	* gcc.target/powerpc/pr79251.p8.c: Likewise.
	* gcc.target/powerpc/pr79354.c: Likewise.
	* gcc.target/powerpc/pr79544.c: Likewise.
	* gcc.target/powerpc/pr79907.c: Likewise.
	* gcc.target/powerpc/pr79951.c: Likewise.
	* gcc.target/powerpc/pr80315-1.c: Likewise.
	* gcc.target/powerpc/pr80315-2.c: Likewise.
	* gcc.target/powerpc/pr80315-3.c: Likewise.
	* gcc.target/powerpc/pr80315-4.c: Likewise.
	* gcc.target/powerpc/pr80510-2.c: Likewise.
	* gcc.target/powerpc/pr80695-p8.c: Likewise.
	* gcc.target/powerpc/pr80718.c: Likewise.
	* gcc.target/powerpc/pr84154-2.c: Likewise.
	* gcc.target/powerpc/pr88558-p8.c: Likewise.
	* gcc.target/powerpc/pr88845.c: Likewise.
	* gcc.target/powerpc/pr91903.c: Likewise.
	* gcc.target/powerpc/pr92923-2.c: Likewise.
	* gcc.target/powerpc/pr96933-2.c: Likewise.
	* gcc.target/powerpc/pr97019.c: Likewise.
	* gcc.target/powerpc/pragma_power8.c: Likewise.
	* gcc.target/powerpc/signbit-1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-12.c: Likewise.
	* gcc.target/powerpc/swaps-p8-14.c: Likewise.
	* gcc.target/powerpc/swaps-p8-15.c: Likewise.
	* gcc.target/powerpc/swaps-p8-16.c: Likewise.
	* gcc.target/powerpc/swaps-p8-17.c: Likewise.
	* gcc.target/powerpc/swaps-p8-18.c: Likewise.
	* gcc.target/powerpc/swaps-p8-19.c: Likewise.
	* gcc.target/powerpc/swaps-p8-2.c: Likewise.
	* gcc.target/powerpc/swaps-p8-22.c: Likewise.
	* gcc.target/powerpc/swaps-p8-23.c: Likewise.
	* gcc.target/powerpc/swaps-p8-24.c: Likewise.
	* gcc.target/powerpc/swaps-p8-25.c: Likewise.
	* gcc.target/powerpc/swaps-p8-26.c: Likewise.
	* gcc.target/powerpc/swaps-p8-27.c: Likewise.
	* gcc.target/powerpc/swaps-p8-3.c: Likewise.
	* gcc.target/powerpc/swaps-p8-30.c: Likewise.
	* gcc.target/powerpc/swaps-p8-33.c: Likewise.
	* gcc.target/powerpc/swaps-p8-36.c: Likewise.
	* gcc.target/powerpc/swaps-p8-39.c: Likewise.
	* gcc.target/powerpc/swaps-p8-4.c: Likewise.
	* gcc.target/powerpc/swaps-p8-42.c: Likewise.
	* gcc.target/powerpc/swaps-p8-45.c: Likewise.
	* gcc.target/powerpc/swaps-p8-46.c: Likewise.
	* gcc.target/powerpc/swaps-p8-5.c: Likewise.
	* gcc.target/powerpc/unpack-vectorize-3.c: Likewise.
	* gcc.target/powerpc/upper-regs-sf.c: Likewise.
	* gcc.target/powerpc/vec-cmp.c: Likewise.
	* gcc.target/powerpc/vec-extract-1.c: Likewise.
	* gcc.target/powerpc/vec-extract-3.c: Likewise.
	* gcc.target/powerpc/vec-extract-5.c: Likewise.
	* gcc.target/powerpc/vec-extract-6.c: Likewise.
	* gcc.target/powerpc/vec-extract-7.c: Likewise.
	* gcc.target/powerpc/vec-extract-8.c: Likewise.
	* gcc.target/powerpc/vec-extract-9.c: Likewise.
	* gcc.target/powerpc/vec-init-10.c: Likewise.
	* gcc.target/powerpc/vec-init-6.c: Likewise.
	* gcc.target/powerpc/vec-init-7.c: Likewise.
	* gcc.target/powerpc/vsx-extract-3.c: Likewise.
	* gcc.target/powerpc/vsx-extract-4.c: Likewise.
	* gcc.target/powerpc/vsx-extract-5.c: Likewise.
	* gcc.target/powerpc/vsx-simode.c: Likewise.
	* gcc.target/powerpc/vsx-simode2.c: Likewise.
	* gcc.target/powerpc/vsx-simode3.c: Likewise.
	* gcc.target/powerpc/builtins-4-int128-runnable.c: Replace
	powerpc_p8vector_ok with powerpc_vsx_ok, replace -mpower8-vector
	with -mvsx, and add dg-additional-options -mdejagnu-cpu=power8
	if !has_arch_pwr8.
	* gcc.target/powerpc/builtins-mergew-mergow.c: Likewise.
	* gcc.target/powerpc/direct-move-float3.c: Likewise.
	* gcc.target/powerpc/divkc3-2.c: Likewise.
	* gcc.target/powerpc/divkc3-3.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-add-4.c: Likewise.
	* gcc.target/powerpc/fold-vec-add-7.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-int.h: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-short.h: Likewise.
	* gcc.target/powerpc/fold-vec-cntlz-char.c: Likewise.
	* gcc.target/powerpc/fold-vec-cntlz-int.c: Likewise.
	* gcc.target/powerpc/fold-vec-cntlz-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-cntlz-short.c: Likewise.
	* gcc.target/powerpc/fold-vec-ld-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-eqv-char.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-eqv-float.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-eqv-floatdouble.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-eqv-int.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-eqv-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-eqv-short.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-ors-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-other-char.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-other-int.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-other-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-logical-other-short.c: Likewise.
	* gcc.target/powerpc/fold-vec-mergehl-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-minmax-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-mult-int.c: Likewise.
	* gcc.target/powerpc/fold-vec-mult-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-int.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-longlong.h: Likewise.
	* gcc.target/powerpc/fold-vec-pack-double.c: Likewise.
	* gcc.target/powerpc/fold-vec-pack-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-shift-left-longlong-fwrapv.c: Likewise.
	* gcc.target/powerpc/fold-vec-shift-left-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-shift-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-st-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-sub-int128.c: Likewise.
	* gcc.target/powerpc/fold-vec-sub-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-unpack-float.c: Likewise.
	* gcc.target/powerpc/fold-vec-unpack-int.c: Likewise.
	* gcc.target/powerpc/mmx-packs.c: Likewise.
	* gcc.target/powerpc/mmx-packssdw-1.c: Likewise.
	* gcc.target/powerpc/mmx-packsswb-1.c: Likewise.
	* gcc.target/powerpc/mmx-packuswb-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddb-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddd-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddsb-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddsw-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddusb-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddusw-1.c: Likewise.
	* gcc.target/powerpc/mmx-paddw-1.c: Likewise.
	* gcc.target/powerpc/mmx-pcmpeqb-1.c: Likewise.
	* gcc.target/powerpc/mmx-pcmpeqd-1.c: Likewise.
	* gcc.target/powerpc/mmx-pcmpeqw-1.c: Likewise.
	* gcc.target/powerpc/mmx-pcmpgtb-1.c: Likewise.
	* gcc.target/powerpc/mmx-pcmpgtd-1.c: Likewise.
	* gcc.target/powerpc/mmx-pcmpgtw-1.c: Likewise.
	* gcc.target/powerpc/mmx-pmaddwd-1.c: Likewise.
	* gcc.target/powerpc/mmx-pmulhw-1.c: Likewise.
	* gcc.target/powerpc/mmx-pmullw-1.c: Likewise.
	* gcc.target/powerpc/mmx-pslld-1.c: Likewise.
	* gcc.target/powerpc/mmx-psllw-1.c: Likewise.
	* gcc.target/powerpc/mmx-psrad-1.c: Likewise.
	* gcc.target/powerpc/mmx-psraw-1.c: Likewise.
	* gcc.target/powerpc/mmx-psrld-1.c: Likewise.
	* gcc.target/powerpc/mmx-psrlw-1.c: Likewise.
	* gcc.target/powerpc/mmx-psubb-2.c: Likewise.
	* gcc.target/powerpc/mmx-psubd-2.c: Likewise.
	* gcc.target/powerpc/mmx-psubsb-1.c: Likewise.
	* gcc.target/powerpc/mmx-psubsw-1.c: Likewise.
	* gcc.target/powerpc/mmx-psubusb-1.c: Likewise.
	* gcc.target/powerpc/mmx-psubusw-1.c: Likewise.
	* gcc.target/powerpc/mmx-psubw-2.c: Likewise.
	* gcc.target/powerpc/mmx-punpckhbw-1.c: Likewise.
	* gcc.target/powerpc/mmx-punpckhdq-1.c: Likewise.
	* gcc.target/powerpc/mmx-punpckhwd-1.c: Likewise.
	* gcc.target/powerpc/mmx-punpcklbw-1.c: Likewise.
	* gcc.target/powerpc/mmx-punpckldq-1.c: Likewise.
	* gcc.target/powerpc/mmx-punpcklwd-1.c: Likewise.
	* gcc.target/powerpc/mulkc3-2.c: Likewise.
	* gcc.target/powerpc/mulkc3-3.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-8.c: Likewise.
	* gcc.target/powerpc/pr37191.c: Likewise.
	* gcc.target/powerpc/pr83862.c: Likewise.
	* gcc.target/powerpc/pr84154-1.c: Likewise.
	* gcc.target/powerpc/pr84220-sld2.c: Likewise.
	* gcc.target/powerpc/pr85456.c: Likewise.
	* gcc.target/powerpc/pr86731-longlong.c: Likewise.
	* gcc.target/powerpc/sse-addps-1.c: Likewise.
	* gcc.target/powerpc/sse-addss-1.c: Likewise.
	* gcc.target/powerpc/sse-andnps-1.c: Likewise.
	* gcc.target/powerpc/sse-andps-1.c: Likewise.
	* gcc.target/powerpc/sse-cmpss-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpi16ps-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpi32ps-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpi32x2ps-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpi8ps-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpspi16-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpspi8-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpu16ps-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtpu8ps-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtsi2ss-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtsi2ss-2.c: Likewise.
	* gcc.target/powerpc/sse-cvtss2si-1.c: Likewise.
	* gcc.target/powerpc/sse-cvtss2si-2.c: Likewise.
	* gcc.target/powerpc/sse-cvttss2si-1.c: Likewise.
	* gcc.target/powerpc/sse-cvttss2si-2.c: Likewise.
	* gcc.target/powerpc/sse-divps-1.c: Likewise.
	* gcc.target/powerpc/sse-divss-1.c: Likewise.
	* gcc.target/powerpc/sse-maxps-1.c: Likewise.
	* gcc.target/powerpc/sse-maxps-2.c: Likewise.
	* gcc.target/powerpc/sse-maxss-1.c: Likewise.
	* gcc.target/powerpc/sse-minps-1.c: Likewise.
	* gcc.target/powerpc/sse-minps-2.c: Likewise.
	* gcc.target/powerpc/sse-minss-1.c: Likewise.
	* gcc.target/powerpc/sse-movaps-1.c: Likewise.
	* gcc.target/powerpc/sse-movaps-2.c: Likewise.
	* gcc.target/powerpc/sse-movhlps-1.c: Likewise.
	* gcc.target/powerpc/sse-movhps-1.c: Likewise.
	* gcc.target/powerpc/sse-movhps-2.c: Likewise.
	* gcc.target/powerpc/sse-movlhps-1.c: Likewise.
	* gcc.target/powerpc/sse-movlps-1.c: Likewise.
	* gcc.target/powerpc/sse-movlps-2.c: Likewise.
	* gcc.target/powerpc/sse-movmskb-1.c: Likewise.
	* gcc.target/powerpc/sse-movmskps-1.c: Likewise.
	* gcc.target/powerpc/sse-movss-1.c: Likewise.
	* gcc.target/powerpc/sse-movss-2.c: Likewise.
	* gcc.target/powerpc/sse-movss-3.c: Likewise.
	* gcc.target/powerpc/sse-mulps-1.c: Likewise.
	* gcc.target/powerpc/sse-mulss-1.c: Likewise.
	* gcc.target/powerpc/sse-orps-1.c: Likewise.
	* gcc.target/powerpc/sse-pavgw-1.c: Likewise.
	* gcc.target/powerpc/sse-pmaxsw-1.c: Likewise.
	* gcc.target/powerpc/sse-pmaxub-1.c: Likewise.
	* gcc.target/powerpc/sse-pminsw-1.c: Likewise.
	* gcc.target/powerpc/sse-pminub-1.c: Likewise.
	* gcc.target/powerpc/sse-pmulhuw-1.c: Likewise.
	* gcc.target/powerpc/sse-psadbw-1.c: Likewise.
	* gcc.target/powerpc/sse-rcpps-1.c: Likewise.
	* gcc.target/powerpc/sse-rsqrtps-1.c: Likewise.
	* gcc.target/powerpc/sse-shufps-1.c: Likewise.
	* gcc.target/powerpc/sse-sqrtps-1.c: Likewise.
	* gcc.target/powerpc/sse-subps-1.c: Likewise.
	* gcc.target/powerpc/sse-subss-1.c: Likewise.
	* gcc.target/powerpc/sse-ucomiss-1.c: Likewise.
	* gcc.target/powerpc/sse-ucomiss-2.c: Likewise.
	* gcc.target/powerpc/sse-ucomiss-3.c: Likewise.
	* gcc.target/powerpc/sse-ucomiss-4.c: Likewise.
	* gcc.target/powerpc/sse-ucomiss-5.c: Likewise.
	* gcc.target/powerpc/sse-ucomiss-6.c: Likewise.
	* gcc.target/powerpc/sse-unpckhps-1.c: Likewise.
	* gcc.target/powerpc/sse-unpcklps-1.c: Likewise.
	* gcc.target/powerpc/sse-xorps-1.c: Likewise.
	* gcc.target/powerpc/sse2-addpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-addsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-andnpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-andpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-cmppd-1.c: Likewise.
	* gcc.target/powerpc/sse2-cmpsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-comisd-1.c: Likewise.
	* gcc.target/powerpc/sse2-comisd-2.c: Likewise.
	* gcc.target/powerpc/sse2-comisd-3.c: Likewise.
	* gcc.target/powerpc/sse2-comisd-4.c: Likewise.
	* gcc.target/powerpc/sse2-comisd-5.c: Likewise.
	* gcc.target/powerpc/sse2-comisd-6.c: Likewise.
	* gcc.target/powerpc/sse2-cvtdq2pd-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtdq2ps-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtpd2dq-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtpd2ps-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtps2dq-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtps2pd-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtsd2si-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtsd2si-2.c: Likewise.
	* gcc.target/powerpc/sse2-cvtsd2ss-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtsi2sd-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvtsi2sd-2.c: Likewise.
	* gcc.target/powerpc/sse2-cvtss2sd-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvttpd2dq-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvttps2dq-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvttsd2si-1.c: Likewise.
	* gcc.target/powerpc/sse2-cvttsd2si-2.c: Likewise.
	* gcc.target/powerpc/sse2-divpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-divsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-maxpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-maxsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-minpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-minsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-mmx.c: Likewise.
	* gcc.target/powerpc/sse2-movhpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-movhpd-2.c: Likewise.
	* gcc.target/powerpc/sse2-movlpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-movlpd-2.c: Likewise.
	* gcc.target/powerpc/sse2-movmskpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-movq-1.c: Likewise.
	* gcc.target/powerpc/sse2-movq-2.c: Likewise.
	* gcc.target/powerpc/sse2-movq-3.c: Likewise.
	* gcc.target/powerpc/sse2-movsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-movsd-2.c: Likewise.
	* gcc.target/powerpc/sse2-movsd-3.c: Likewise.
	* gcc.target/powerpc/sse2-mulpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-mulsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-orpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-packssdw-1.c: Likewise.
	* gcc.target/powerpc/sse2-packsswb-1.c: Likewise.
	* gcc.target/powerpc/sse2-packuswb-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddb-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddd-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddq-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddsb-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddsw-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddusb-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddusw-1.c: Likewise.
	* gcc.target/powerpc/sse2-paddw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pand-1.c: Likewise.
	* gcc.target/powerpc/sse2-pandn-1.c: Likewise.
	* gcc.target/powerpc/sse2-pavgb-1.c: Likewise.
	* gcc.target/powerpc/sse2-pavgw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pcmpeqb-1.c: Likewise.
	* gcc.target/powerpc/sse2-pcmpeqd-1.c: Likewise.
	* gcc.target/powerpc/sse2-pcmpeqw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pcmpgtb-1.c: Likewise.
	* gcc.target/powerpc/sse2-pcmpgtd-1.c: Likewise.
	* gcc.target/powerpc/sse2-pcmpgtw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pextrw.c: Likewise.
	* gcc.target/powerpc/sse2-pinsrw.c: Likewise.
	* gcc.target/powerpc/sse2-pmaddwd-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmaxsw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmaxub-1.c: Likewise.
	* gcc.target/powerpc/sse2-pminsw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pminub-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmovmskb-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmulhuw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmulhw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmullw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pmuludq-1.c: Likewise.
	* gcc.target/powerpc/sse2-por-1.c: Likewise.
	* gcc.target/powerpc/sse2-psadbw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pshufd-1.c: Likewise.
	* gcc.target/powerpc/sse2-pshufhw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pshuflw-1.c: Likewise.
	* gcc.target/powerpc/sse2-pslld-1.c: Likewise.
	* gcc.target/powerpc/sse2-pslld-2.c: Likewise.
	* gcc.target/powerpc/sse2-pslldq-1.c: Likewise.
	* gcc.target/powerpc/sse2-psllq-1.c: Likewise.
	* gcc.target/powerpc/sse2-psllq-2.c: Likewise.
	* gcc.target/powerpc/sse2-psllw-1.c: Likewise.
	* gcc.target/powerpc/sse2-psllw-2.c: Likewise.
	* gcc.target/powerpc/sse2-psrad-1.c: Likewise.
	* gcc.target/powerpc/sse2-psrad-2.c: Likewise.
	* gcc.target/powerpc/sse2-psraw-1.c: Likewise.
	* gcc.target/powerpc/sse2-psraw-2.c: Likewise.
	* gcc.target/powerpc/sse2-psrld-1.c: Likewise.
	* gcc.target/powerpc/sse2-psrld-2.c: Likewise.
	* gcc.target/powerpc/sse2-psrldq-1.c: Likewise.
	* gcc.target/powerpc/sse2-psrlq-1.c: Likewise.
	* gcc.target/powerpc/sse2-psrlq-2.c: Likewise.
	* gcc.target/powerpc/sse2-psrlw-1.c: Likewise.
	* gcc.target/powerpc/sse2-psrlw-2.c: Likewise.
	* gcc.target/powerpc/sse2-psubb-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubd-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubq-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubsb-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubsw-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubusb-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubusw-1.c: Likewise.
	* gcc.target/powerpc/sse2-psubw-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpckhbw-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpckhdq-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpckhqdq-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpckhwd-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpcklbw-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpckldq-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpcklqdq-1.c: Likewise.
	* gcc.target/powerpc/sse2-punpcklwd-1.c: Likewise.
	* gcc.target/powerpc/sse2-pxor-1.c: Likewise.
	* gcc.target/powerpc/sse2-shufpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-sqrtpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-subpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-subsd-1.c: Likewise.
	* gcc.target/powerpc/sse2-ucomisd-1.c: Likewise.
	* gcc.target/powerpc/sse2-ucomisd-2.c: Likewise.
	* gcc.target/powerpc/sse2-ucomisd-3.c: Likewise.
	* gcc.target/powerpc/sse2-ucomisd-4.c: Likewise.
	* gcc.target/powerpc/sse2-ucomisd-5.c: Likewise.
	* gcc.target/powerpc/sse2-ucomisd-6.c: Likewise.
	* gcc.target/powerpc/sse2-unpckhpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-unpcklpd-1.c: Likewise.
	* gcc.target/powerpc/sse2-xorpd-1.c: Likewise.
	* gcc.target/powerpc/sse3-addsubpd.c: Likewise.
	* gcc.target/powerpc/sse3-addsubps.c: Likewise.
	* gcc.target/powerpc/sse3-haddpd.c: Likewise.
	* gcc.target/powerpc/sse3-haddps.c: Likewise.
	* gcc.target/powerpc/sse3-hsubpd.c: Likewise.
	* gcc.target/powerpc/sse3-hsubps.c: Likewise.
	* gcc.target/powerpc/sse3-lddqu.c: Likewise.
	* gcc.target/powerpc/sse3-movddup.c: Likewise.
	* gcc.target/powerpc/sse3-movshdup.c: Likewise.
	* gcc.target/powerpc/sse3-movsldup.c: Likewise.
	* gcc.target/powerpc/sse4_1-blendpd.c: Likewise.
	* gcc.target/powerpc/sse4_1-blendps-2.c: Likewise.
	* gcc.target/powerpc/sse4_1-blendps.c: Likewise.
	* gcc.target/powerpc/sse4_1-blendvpd.c: Likewise.
	* gcc.target/powerpc/sse4_1-blendvps.c: Likewise.
	* gcc.target/powerpc/sse4_1-ceilpd.c: Likewise.
	* gcc.target/powerpc/sse4_1-ceilps.c: Likewise.
	* gcc.target/powerpc/sse4_1-ceilsd.c: Likewise.
	* gcc.target/powerpc/sse4_1-ceilss.c: Likewise.
	* gcc.target/powerpc/sse4_1-floorpd.c: Likewise.
	* gcc.target/powerpc/sse4_1-floorps.c: Likewise.
	* gcc.target/powerpc/sse4_1-floorsd.c: Likewise.
	* gcc.target/powerpc/sse4_1-floorss.c: Likewise.
	* gcc.target/powerpc/sse4_1-pblendvb.c: Likewise.
	* gcc.target/powerpc/sse4_1-pblendw-2.c: Likewise.
	* gcc.target/powerpc/sse4_1-pblendw.c: Likewise.
	* gcc.target/powerpc/sse4_1-pcmpeqq.c: Likewise.
	* gcc.target/powerpc/sse4_1-pinsrb.c: Likewise.
	* gcc.target/powerpc/sse4_1-pinsrd.c: Likewise.
	* gcc.target/powerpc/sse4_1-pinsrq.c: Likewise.
	* gcc.target/powerpc/sse4_1-pmovsxbq.c: Likewise.
	* gcc.target/powerpc/sse4_1-pmovsxdq.c: Likewise.
	* gcc.target/powerpc/sse4_1-pmovsxwq.c: Likewise.
	* gcc.target/powerpc/sse4_1-pmuldq.c: Likewise.
	* gcc.target/powerpc/sse4_1-ptest-1.c: Likewise.
	* gcc.target/powerpc/sse4_1-roundpd-2.c: Likewise.
	* gcc.target/powerpc/sse4_1-roundpd-3.c: Likewise.
	* gcc.target/powerpc/sse4_2-pcmpgtq.c: Likewise.
	* gcc.target/powerpc/ssse3-pabsb.c: Likewise.
	* gcc.target/powerpc/ssse3-pabsd.c: Likewise.
	* gcc.target/powerpc/ssse3-pabsw.c: Likewise.
	* gcc.target/powerpc/ssse3-palignr.c: Likewise.
	* gcc.target/powerpc/ssse3-phaddd.c: Likewise.
	* gcc.target/powerpc/ssse3-phaddsw.c: Likewise.
	* gcc.target/powerpc/ssse3-phaddw.c: Likewise.
	* gcc.target/powerpc/ssse3-phsubd.c: Likewise.
	* gcc.target/powerpc/ssse3-phsubsw.c: Likewise.
	* gcc.target/powerpc/ssse3-phsubw.c: Likewise.
	* gcc.target/powerpc/ssse3-pmaddubsw.c: Likewise.
	* gcc.target/powerpc/ssse3-pmulhrsw.c: Likewise.
	* gcc.target/powerpc/ssse3-pshufb.c: Likewise.
	* gcc.target/powerpc/ssse3-psignb.c: Likewise.
	* gcc.target/powerpc/ssse3-psignd.c: Likewise.
	* gcc.target/powerpc/ssse3-psignw.c: Likewise.
	* gcc.target/powerpc/vec-cmp-sel.c: Likewise.
	* gcc.target/powerpc/vec-sld-modulo.c: Likewise.
	* gcc.target/powerpc/vec-srad-modulo.c: Likewise.
	* gcc.target/powerpc/vec-srd-modulo.c: Likewise.
	* gcc.target/powerpc/amo1.c: Replace powerpc_p9vector_ok with
	powerpc_vsx_ok, replace -mpower9-vector with -mvsx, and add
	dg-additional-options -mdejagnu-cpu=power9 if !has_arch_pwr9.
	* gcc.target/powerpc/amo2.c: Likewise.
	* gcc.target/powerpc/dform-1.c: Likewise.
	* gcc.target/powerpc/dform-2.c: Likewise.
	* gcc.target/powerpc/float128-5.c: Likewise.
	* gcc.target/powerpc/float128-complex-2.c: Likewise.
	* gcc.target/powerpc/float128-fma1.c: Likewise.
	* gcc.target/powerpc/float128-hw.c: Likewise.
	* gcc.target/powerpc/float128-hw10.c: Likewise.
	* gcc.target/powerpc/float128-hw11.c: Likewise.
	* gcc.target/powerpc/float128-hw2.c: Likewise.
	* gcc.target/powerpc/float128-hw3.c: Likewise.
	* gcc.target/powerpc/float128-hw4.c: Likewise.
	* gcc.target/powerpc/float128-hw5.c: Likewise.
	* gcc.target/powerpc/float128-hw6.c: Likewise.
	* gcc.target/powerpc/float128-hw7.c: Likewise.
	* gcc.target/powerpc/float128-hw8.c: Likewise.
	* gcc.target/powerpc/float128-hw9.c: Likewise.
	* gcc.target/powerpc/float128-minmax.c: Likewise.
	* gcc.target/powerpc/float128-odd.c: Likewise.
	* gcc.target/powerpc/float128-sqrt1.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-int.p9.c: Likewise.
	* gcc.target/powerpc/gnuattr2.c: Likewise.
	* gcc.target/powerpc/pr71656-1.c: Likewise.
	* gcc.target/powerpc/pr71656-2.c: Likewise.
	* gcc.target/powerpc/pr81959.c: Likewise.
	* gcc.target/powerpc/pr82748-1.c: Likewise.
	* gcc.target/powerpc/pr82748-2.c: Likewise.
	* gcc.target/powerpc/pr111449-2.c: Replace powerpc_p8vector_ok
	with powerpc_vsx_ok.
	* gcc.target/powerpc/pr98914.c: Likewise.
	* gcc.target/powerpc/versioned-copy-loop.c: Replace
	powerpc_p8vector_ok with powerpc_vsx_ok and append -mvsx to
	dg-options.
	* gcc.target/powerpc/clone2.c: Replace powerpc_p9vector_ok with
	powerpc_vsx_ok.
	* gcc.target/powerpc/p9-options-1.c: Replace powerpc_p9vector_ok
	with powerpc_vsx_ok, replace -mno-power9-vector with -mno-vsx.
	* gcc.target/powerpc/pr84226.c: Replace powerpc_p9vector_ok with
	powerpc_vsx_ok and append -mvsx to dg-options.
	* g++.dg/pr69667.C: Replace powerpc_p8vector_ok with
	powerpc_vsx_ok and append -mvsx to dg-options.
	* gcc.dg/vect/costmodel/ppc/costmodel-slp-perm.c: Replace
	powerpc_p9vector_ok with powerpc_vsx_ok and replace
	-mpower9-vector with -mvsx.
	* gcc.dg/vect/pr109011-1.c: Replace powerpc_p8vector_ok with
	powerpc_vsx_ok, and replace -mpower8-vector with
	-mdejagnu-cpu=power8 -mvsx or -mvsx under different conditions.
	* gcc.dg/vect/pr109011-2.c: Replace powerpc_p9vector_ok
	with powerpc_vsx_ok, and replace -mpower9-vector with
	-mdejagnu-cpu=power9 -mvsx or -mvsx under different conditions.
	* gcc.dg/vect/pr109011-4.c: Likewise.
	* gcc.dg/vect/pr109011-3.c: Replace powerpc_p8vector_ok with
	powerpc_vsx_ok, and replace -mpower8-vector -mno-power9-vector
	with -mdejagnu-cpu=power8 -mvsx.
	* gcc.dg/vect/pr109011-5.c: Likewise.
	* gcc.target/powerpc/altivec-35.c: Remove -mno-power8-vector.
	* gcc.target/powerpc/vsx-vector-7.c: Replace -mno-power8-vector
	with -mdejagnu-cpu=power7.
	* gcc.dg/vect/O3-pr70130.c: Replace -mcpu=power7 with options
	-mdejagnu-cpu=power7 -mvsx and remove option -mno-power9-vector
	-mno-power8-vector.
	* gfortran.dg/vect/pr45714-b.f: Likewise.
	* gcc.dg/vect/pr48765.c: Remove dg-skip-if and replace -mcpu=power7
	with option -mdejagnu-cpu=power6.
	* gcc.target/powerpc/pr78056-2.c: Likewise.
	* gcc.target/powerpc/altivec-2-runnable.c: Replace
	powerpc_p8vector_ok with powerpc_vsx_ok, remove -mpower8-vector
	and add dg-additional-options -mdejagnu-cpu=power8 if !has_arch_pwr8.
	* gcc.target/powerpc/altivec-37.c: Likewise.
	* gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.p8.c: Replace
	powerpc_p8vector_ok with powerpc_vsx_ok and replace -mpower8-vector
	with -mvsx.
	* gcc.target/powerpc/fold-vec-abs-longlong.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-char.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-int.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-cmp-short.p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-mergeeo-floatdouble.c: Likewise.
	* gcc.target/powerpc/fold-vec-mergeeo-int.c: Likewise.
	* gcc.target/powerpc/fold-vec-mergeeo-longlong.c: Likewise.
	* gcc.target/powerpc/fold-vec-mult-int128-p8.c: Likewise.
	* gcc.target/powerpc/fold-vec-neg-longlong.p8.c: Likewise.
	* gcc.target/powerpc/pr104124.c: Likewise.
	* gcc.target/powerpc/vec-cmpne-long.c: Likewise.
	* gcc.target/powerpc/pr86731-fwrapv-longlong.c: Replace
	powerpc_p8vector_ok with powerpc_vsx_ok, replace -mpower8-vector with
	-mvsx and add dg-additional-options -mdejagnu-cpu=power8 if
	!has_arch_pwr8.
	* gcc.target/powerpc/pr80098-1.c: Replace powerpc_p9vector_ok with
	powerpc_vsx_ok and replace -mno-power9-vector with -mno-vsx.
	* gcc.target/powerpc/pr80098-2.c: Replace powerpc_p8vector_ok with
	powerpc_vsx_ok and replace -mno-power8-vector with -mno-vsx.
	* gcc.target/powerpc/pragma_misc9.c: Replace powerpc_p9vector_ok
	with powerpc_vsx_ok.
2024-02-21 20:41:18 -06:00
Iain Sandoe
c0a80af4a1 libgcc, aarch64: Allow for BE platforms in heap trampolines.
This arranges that the byte order of the instruction sequences is
independent of the byte order of memory.

libgcc/ChangeLog:

	* config/aarch64/heap-trampoline.c
	(aarch64_trampoline_insns): Arrange to encode instructions as a
	byte array so that the order is independent of memory byte order.
	(struct aarch64_trampoline): Likewise.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
2024-02-21 07:53:22 +00:00
Iain Sandoe
61ab046a32 aarch64: Allow aarch64-linux-muscl for heap trampolines [PR113971].
This allows the same trampoline pattern to be used on all linux variants
rather than restricting it to linux gnu.

	PR target/113971

libgcc/ChangeLog:

	* config/aarch64/heap-trampoline.c: Allow all linux variants.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
2024-02-20 15:02:44 +00:00
Matteo Italia
05ad8fb55a libgcc: fix Win32 CV abnormal spurious wakeups in timed wait [PR113850]
Fix a typo in __gthr_win32_abs_to_rel_time that caused it to return a
relative time in seconds instead of milliseconds. As a consequence,
__gthr_win32_cond_timedwait called SleepConditionVariableCS with a
1000x shorter timeout; this caused ~1000x more spurious wakeups in
CV timed waits such as std::condition_variable::wait_for or wait_until,
resulting generally in much higher CPU usage.

This can be demonstrated by this sample program:

```

int main() {
    std::condition_variable cv;
    std::mutex mx;
    bool pass = false;

    auto thread_fn = [&](bool timed) {
        int wakeups = 0;
        using sc = std::chrono::system_clock;
        auto before = sc::now();
        std::unique_lock<std::mutex> ml(mx);
        if (timed) {
            cv.wait_for(ml, std::chrono::seconds(2), [&]{
                ++wakeups;
                return pass;
            });
        } else {
            cv.wait(ml, [&]{
                ++wakeups;
                return pass;
            });
        }
        printf("pass: %d; wakeups: %d; elapsed: %d ms\n", pass, wakeups,
                int((sc::now() - before) / std::chrono::milliseconds(1)));
        pass = false;
    };

    {
        // timed wait, let expire
        std::thread t(thread_fn, true);
        t.join();
    }

    {
        // timed wait, wake up explicitly after 1 second
        std::thread t(thread_fn, true);
        std::this_thread::sleep_for(std::chrono::seconds(1));
        {
            std::unique_lock<std::mutex> ml(mx);
            pass = true;
        }
        cv.notify_all();
        t.join();
    }

    {
        // non-timed wait, wake up explicitly after 1 second
        std::thread t(thread_fn, false);
        std::this_thread::sleep_for(std::chrono::seconds(1));
        {
            std::unique_lock<std::mutex> ml(mx);
            pass = true;
        }
        cv.notify_all();
        t.join();
    }
    return 0;
}
```

On builds based on non-affected threading models (e.g. POSIX on Linux,
or winpthreads or MCF on Win32) the output is something like
```
pass: 0; wakeups: 2; elapsed: 2000 ms
pass: 1; wakeups: 2; elapsed: 991 ms
pass: 1; wakeups: 2; elapsed: 996 ms
```

while with the Win32 threading model we get
```
pass: 0; wakeups: 1418; elapsed: 2000 ms
pass: 1; wakeups: 479; elapsed: 988 ms
pass: 1; wakeups: 2; elapsed: 992 ms
```
(notice the huge number of wakeups in the timed wait cases only).

This commit fixes the conversion, adjusting the final division by
NSEC100_PER_SEC to use NSEC100_PER_MSEC instead (already defined in the
file and not used in any other place, so probably just a typo).

libgcc/ChangeLog:

	PR libgcc/113850
	* config/i386/gthr-win32-cond.c (__gthr_win32_abs_to_rel_time):
	fix absolute timespec to relative milliseconds count
	conversion (it incorrectly returned seconds instead of
	milliseconds); this avoids spurious wakeups in
	__gthr_win32_cond_timedwait
2024-02-16 23:47:16 +00:00
H.J. Lu
67ce5c9716 x86: Support x32 and IBT in heap trampoline
Add x32 and IBT support to x86 heap trampoline implementation with a
testcase.

2024-02-13  Jakub Jelinek  <jakub@redhat.com>
	    H.J. Lu  <hjl.tools@gmail.com>

libgcc/

	PR target/113855
	* config/i386/heap-trampoline.c (trampoline_insns): Add IBT
	support and pad to the multiple of 4 bytes.  Use movabsq
	instead of movabs in comments.  Add -mx32 variant.

gcc/testsuite/

	PR target/113855
	* gcc.dg/heap-trampoline-1.c: New test.
	* lib/target-supports.exp (check_effective_target_heap_trampoline):
	New.
2024-02-14 11:56:26 -08:00
Iain Sandoe
5e39897ee2 x86, libgcc: Implement ia32 basic heap trampoline [PR113855].
The initial heap trampoline implementation was targeting 64b
platforms.  As the PR demonstrates this creates an issue where it
is expected that the same symbols are exported for 32 and 64b.

Rather than conditionalize the exports and code-gen on x86_64,
this patch provides a basic implementation of the IA32 trampoline.

This also avoids potential user confusion, when a 32b target has
64b multilibs, and vice versa; which is the case for Darwin.

	PR target/113855

gcc/ChangeLog:

	* config/i386/darwin.h (DARWIN_HEAP_T_LIB): Moved to be
	available to all sub-targets.
	* config/i386/darwin32-biarch.h (DARWIN_HEAP_T_LIB): Delete.
	* config/i386/darwin64-biarch.h (DARWIN_HEAP_T_LIB): Delete.

libgcc/ChangeLog:

	* config.host: Add trampoline support to x?86-linux.
	* config/i386/heap-trampoline.c (trampoline_insns): Provide
	a variant for IA32.
	(union ix86_trampoline): Likewise.
	(__gcc_nested_func_ptr_created): Implement a basic trampoline
	for IA32.
2024-02-12 15:03:12 +00:00
Iain Sandoe
0a329ecf11 libgcc, Darwin: Update symbol exports to include bitint and bf.
Some exports were missed from the GCC-13 cycle, these are added here
along with the bitint-related ones added in GCC-14.

libgcc/ChangeLog:

	* config/i386/libgcc-darwin.ver: Export bf and bitint-related
	synbols.
2024-02-09 10:23:21 +00:00
Rainer Orth
c5f48b5fdd libgcc: Export i386 symbols added after GCC_7.0.0 on Solaris [PR113700]
As reported in the PR, all libgcc x86 symbol versions added after
GCC_7.0.0 were only added to i386/libgcc-glibc.ver, missing all of
libgcc-sol2.ver, libgcc-bsd.ver, and libgcc-darwin.ver.

This patch fixes this for Solaris/x86, adding all of them
(GCC_1[234].0.0) as GCC_14.0.0 to not retroactively change history.

Since this isn't the first time this happens, I've added a note to the
end of libgcc-glibc.ver to request notifying other maintainers in case
of additions.

Tested on i386-pc-solaris2.11.

2024-02-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	libgcc:
	PR target/113700
	* config/i386/libgcc-sol2.ver (GCC_14.0.0): Added all symbols from
	i386/libgcc-glibc.ver (GCC_12.0.0, GCC_13.0.0, GCC_14.0.0).
	* config/i386/libgcc-glibc.ver: Request notifications on updates.
2024-02-06 10:20:30 +01:00
Khem Raj
2c27aa8d75 [PATCH] libgcc: Include stdlib.h for abort() on mingw32
libgcc/
	* config/i386/enable-execute-stack-mingw32.c: Include
	stdlib.h for abort() definition.
2024-02-02 07:43:45 -07:00
Jakub Jelinek
9f5caef53e libgcc: Export XF, TF, HF and BFmode specific _BitInt symbols from libgcc_s.so.1 [PR113700]
Rainer pointed out that __PFX__ and __FIXPTPFX__ prefix replacement is done
solely for libgcc-std.ver.in and not for the *.ver files in config.
I've used the __PFX__ prefix even in config/i386/libgcc-glibc.ver because it
was used for similar symbols in libgcc-std.ver.in, and that results in those
symbols being STB_LOCAL in libgcc_s.so.1.  Tests still work because gcc by
default uses -static-libgcc when linking (unlike g++ etc.), but would
have failed when using -shared-libgcc (but I see nothing in the testsuite
actually testing with -shared-libgcc, so am not adding tests).

With the patch, libgcc_s.so.1 now exports
__fixtfbitint@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__fixxfbitint@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitintbf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitinthf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitinttf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitintxf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
on x86_64-linux which it wasn't before.

2024-02-02  Jakub Jelinek  <jakub@redhat.com>

	PR target/113700
	* config/i386/libgcc-glibc.ver (GCC_14.0.0): Remove __PFX prefixes
	from symbol names.
2024-02-02 11:46:34 +01:00
Jakub Jelinek
e9b2f15d98 libgcc: Avoid warnings on __gcc_nested_func_ptr_created [PR113402]
I'm seeing hundreds of
In file included from ../../../libgcc/libgcc2.c:56:
../../../libgcc/libgcc2.h:32:13: warning: conflicting types for built-in function ‘__gcc_nested_func_ptr_created’; expected ‘void(void *, void *, void *)’
+[-Wbuiltin-declaration-mismatch]
   32 | extern void __gcc_nested_func_ptr_created (void *, void *, void **);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warnings.

Either we need to add like in r14-6218
  #pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch"
(but in that case because of the libgcc2.h prototype (why is it there?)
it would need to be also with #pragma GCC diagnostic push/pop around),
or we could go with just following how the builtins are prototyped on the
compiler side and only cast to void ** when dereferencing (which is in
a single spot in each TU).

2024-02-01  Jakub Jelinek  <jakub@redhat.com>

	PR libgcc/113402
	* libgcc2.h (__gcc_nested_func_ptr_created): Change type of last
	argument from void ** to void *.
	* config/i386/heap-trampoline.c (__gcc_nested_func_ptr_created):
	Change type of dst from void ** to void * and cast dst to void **
	before dereferencing it.
	* config/aarch64/heap-trampoline.c (__gcc_nested_func_ptr_created):
	Likewise.
2024-02-01 21:10:10 +01:00
Jakub Jelinek
03519175e2 libgcc: Fix up i386/t-heap-trampoline [PR113403]
I'm seeing
../../../libgcc/shared-object.mk:14: warning: overriding recipe for target 'heap-trampoline.o'
../../../libgcc/shared-object.mk:14: warning: ignoring old recipe for target 'heap-trampoline.o'
../../../libgcc/shared-object.mk:17: warning: overriding recipe for target 'heap-trampoline_s.o'
../../../libgcc/shared-object.mk:17: warning: ignoring old recipe for target 'heap-trampoline_s.o'

This patch fixes that.

2024-02-01  Jakub Jelinek  <jakub@redhat.com>

	PR libgcc/113403
	* config/i386/t-heap-trampoline: Add to LIB2ADDEHSHARED
	i386/heap-trampoline.c rather than aarch64/heap-trampoline.c.
2024-02-01 21:10:02 +01:00
Szabolcs Nagy
d85c17a2b6 aarch64: libgcc: Cleanup ELF marking in asm
Use aarch64-asm.h in asm code consistently, this was started in

  commit c608ada288
  Author:     Zac Walker <zacwalker@microsoft.com>
  CommitDate: 2024-01-23 15:32:30 +0000

  Ifdef `.hidden`, `.type`, and `.size` pseudo-ops for `aarch64-w64-mingw32` target

But that commit failed to remove some existing markings from asm files,
which means some objects got double marked with gnu property notes.

libgcc/ChangeLog:

	* config/aarch64/crti.S: Remove stack marking.
	* config/aarch64/crtn.S: Remove stack marking, include aarch64-asm.h
	* config/aarch64/lse.S: Remove stack and GNU property markings.
2024-02-01 09:10:23 +00:00
Iain Sandoe
506e74f53a libgcc: Make heap trampoline support dynamic [PR113403].
In order to handle system security constraints during GCC build
and test and that most platform versions cannot link to libgcc_eh
since the unwinder there is incompatible with the system one.

1. We make the support functions weak definitions.
2. We include them as a CRT for platform conditions that do not
   allow libgcc_eh.
3. We ensure that the weak symbols are exported from DSOs (which
   includes exes on Darwin) so that the dynamic linker will
   pick one instance (which avoids duplication of trampoline
   caches).

	PR libgcc/113403

gcc/ChangeLog:

	* config/darwin.h (DARWIN_SHARED_WEAK_ADDS, DARWIN_WEAK_CRTS): New.
	(REAL_LIBGCC_SPEC): Move weak CRT handling to separate spec.
	* config/i386/darwin.h (DARWIN_HEAP_T_LIB): New.
	* config/i386/darwin32-biarch.h (DARWIN_HEAP_T_LIB): New.
	* config/i386/darwin64-biarch.h (DARWIN_HEAP_T_LIB): New.
	* config/rs6000/darwin.h (DARWIN_HEAP_T_LIB): New.

libgcc/ChangeLog:

	* config.host: Build libheap_t.a for i686/x86_64 Darwin.
	* config/aarch64/heap-trampoline.c (HEAP_T_ATTR): New.
	(allocate_tramp_ctrl): Allow a target to build this as a weak def.
	(__gcc_nested_func_ptr_created): Likewise.
	* config/i386/heap-trampoline.c (HEAP_T_ATTR): New.
	(allocate_tramp_ctrl): Allow a target to build this as a weak def.
	(__gcc_nested_func_ptr_created): Likewise.
	* config/t-darwin: Build libheap_t.a (a CRT with heap trampoline
	support).
2024-01-30 09:33:09 +00:00
Iain Sandoe
7b3b3788c5 libgcc: Make heap trampoline support dynamic [PR113403].
This removes the heap trampoline support functions from libgcc.a and
adds them to libgcc_eh.a.  They are also present in libgcc_s.

	PR libgcc/113403

libgcc/ChangeLog:

	* config/aarch64/t-heap-trampoline: Move the heap trampoline
	support functions from libgcc.a to libgcc_eh.a.
	* config/i386/t-heap-trampoline: Likewise.
2024-01-30 09:32:48 +00:00
Iain Sandoe
837827f8f2 Fix __builtin_nested_func_ptr_{created,deleted} symbol versions [PR113402]
The symbols for the functions supporting heap-based trampolines were
exported at an incorrect symbol version, the following patch fixes that.

As requested in the PR, this also renames __builtin_nested_func_ptr* to
__gcc_nested_func_ptr*.  In carrying our the rename, we move the builtins
to use DEF_EXT_LIB_BUILTIN.

	PR libgcc/113402

gcc/ChangeLog:

	* builtins.cc (expand_builtin): Handle BUILT_IN_GCC_NESTED_PTR_CREATED
	and BUILT_IN_GCC_NESTED_PTR_DELETED.
	* builtins.def (BUILT_IN_GCC_NESTED_PTR_CREATED,
	BUILT_IN_GCC_NESTED_PTR_DELETED): Make these builtins LIB-EXT and
	rename the library fallbacks to __gcc_nested_func_ptr_created and
	__gcc_nested_func_ptr_deleted.
	* doc/invoke.texi: Rename these to __gcc_nested_func_ptr_created
	and __gcc_nested_func_ptr_deleted.
	* tree-nested.cc (finalize_nesting_tree_1): Use builtin_explicit for
	BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED.
	* tree.cc (build_common_builtin_nodes): Build the
	BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED local
	builtins only for non-explicit.

libgcc/ChangeLog:

	* config/aarch64/heap-trampoline.c: Rename
	__builtin_nested_func_ptr_created to __gcc_nested_func_ptr_created and
	__builtin_nested_func_ptr_deleted to __gcc_nested_func_ptr_deleted.
	* config/i386/heap-trampoline.c: Likewise.
	* libgcc2.h: Likewise.
	* libgcc-std.ver.in (GCC_7.0.0): Likewise and then move
	__gcc_nested_func_ptr_created and
	__gcc_nested_func_ptr_deleted from this symbol version to ...
	(GCC_14.0.0): ... this one.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
Co-authored-by: Jakub Jelinek  <jakub@redhat.com>
2024-01-28 10:59:34 +00:00
Andrew Stubbs
99890e1552 amdgcn: additional gfx1030/gfx1100 support
This is enough to get gfx1030 and gfx1100 working; there are still some test
failures to investigate, and probably some tuning to do.

gcc/ChangeLog:

	* config/gcn/gcn-opts.h (TARGET_PACKED_WORK_ITEMS): Add TARGET_RDNA3.
	* config/gcn/gcn-valu.md (all_convert): New iterator.
	(<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>): New
	define_expand, and rename the old one to ...
	(*<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>_sdwa<exec>): ... this.
	(extend<V_INT_1REG_ALT:mode><V_INT_1REG:mode>2<exec>): Likewise, to ...
	(extend<V_INT_1REG_ALT:mode><V_INT_1REG:mode>_sdwa<exec>): .. this.
	(*<convop><V_INT_1REG_ALT:mode><V_INT_1REG:mode>_shift<exec>): New.
	* config/gcn/gcn.cc (gcn_global_address_p): Use "offsetbits" correctly.
	(gcn_hsa_declare_function_name): Update the vgpr counting for gfx1100.
	* config/gcn/gcn.md (<u>mulhisi3): Disable on RDNA3.
	(<u>mulqihi3_scalar): Likewise.

libgcc/ChangeLog:

	* config/gcn/amdgcn_veclib.h (CDNA3_PLUS): Handle RDNA3.

libgomp/ChangeLog:

	* config/gcn/time.c (RTC_TICKS): Configure RDNA3.
	(omp_get_wtime): Add RDNA3-compatible variant.
	* plugin/plugin-gcn.c (max_isa_vgprs): Tune for gfx1030 and gfx1100.

Signed-off-by:  Andrew Stubbs <ams@baylibre.com>
2024-01-26 11:38:47 +00:00
Zac Walker
c608ada288 Ifdef .hidden, .type, and .size pseudo-ops for aarch64-w64-mingw32 target
Recent
change (https://gcc.gnu.org/pipermail/gcc-cvs/2023-December/394915.html)
added a generic SME support using `.hidden`, `.type`, and ``.size`
pseudo-ops in the assembly sources, `aarch64-w64-mingw32` does not
support the pseudo-ops though. This patch wraps usage of those
pseudo-ops using macros and ifdefs them for `__ELF__` define.

libgcc/
	* config/aarch64/aarch64-asm.h (HIDDEN, SYMBOL_SIZE, SYMBOL_TYPE)
	(ENTRY_ALIGN, GNU_PROPERTY): New macros.
	* config/aarch64/__arm_sme_state.S: Use them.
	* config/aarch64/__arm_tpidr2_save.S: Likewise.
	* config/aarch64/__arm_za_disable.S: Likewise.
	* config/aarch64/crti.S: Likewise.
	* config/aarch64/lse.S: Likewise.
2024-01-23 15:32:30 +00:00
Jakub Jelinek
a945c346f5 Update copyright years. 2024-01-03 12:19:35 +01:00
Jakub Jelinek
6a720d41ff Update Copyright year in ChangeLog files
2023 -> 2024
2024-01-03 11:35:18 +01:00
Thomas Schwinge
c0bf7ea189 GCN, nvptx: Basic '__cxa_guard_{acquire,abort,release}' for C++ static local variables support
For now, for single-threaded GCN, nvptx target use only; extension for
multi-threaded offloading use is to follow later.  Eventually switch to
libstdc++-v3/libsupc++ proper.

	libgcc/
	* c++-minimal/README: New.
	* c++-minimal/guard.c: New.
	* config/gcn/t-amdgcn (LIB2ADD): Add it.
	* config/nvptx/t-nvptx (LIB2ADD): Likewise.
2023-12-23 10:10:02 +01:00
Alexandre Oliva
9fa35dbb90 strub: sparc: omit frame in strub_leave [PR112917]
If we allow __strub_leave to allocate a frame on sparc, it will
overlap with a lot of the stack range we're supposed to scrub, because
of the large fixed-size outgoing args and register save area.
Unfortunately, setting up the PIC register seems to prevent the frame
pointer from being omitted.

Since the strub runtime doesn't issue calls or use global variables,
at least on sparc, disabling PIC to compile strub.c seems to do the
right thing.


for  libgcc/ChangeLog

	PR middle-end/112917
	* config.host (sparc, sparc64): Enable...
	* config/sparc/t-sparc: ... this new fragment.
2023-12-20 05:18:17 -03:00
Andrew Carlotti
0cfde688e2 [aarch64] Add function multiversioning support
This adds initial support for function multiversioning on aarch64 using
the target_version and target_clones attributes.  This loosely follows
the Beta specification in the ACLE [1], although with some differences
that still need to be resolved (possibly as follow-up patches).

Existing function multiversioning implementations are broken in various
ways when used across translation units.  This includes placing
resolvers in the wrong translation units, and using symbol mangling that
callers to unintentionally bypass the resolver in some circumstances.
Fixing these issues for aarch64 will require modifications to our ACLE
specification.  It will also require further adjustments to existing
middle end code, to facilitate different mangling and resolver
placement while preserving existing target behaviours.

The list of function multiversioning features specified in the ACLE is
also inconsistent with the list of features supported in target option
extensions.  I intend to resolve some or all of these inconsistencies at
a later stage.

The target_version attribute is currently only supported in C++, since
this is the only frontend with existing support for multiversioning
using the target attribute.  On the other hand, this patch happens to
enable multiversioning with the target_clones attribute in Ada and D, as
well as the entire C family, using their existing frontend support.

This patch also does not support the following aspects of the Beta
specification:

- The target_clones attribute should allow an implicit unlisted
  "default" version.
- There should be an option to disable function multiversioning at
  compile time.
- Unrecognised target names in a target_clones attribute should be
  ignored (with an optional warning).  This current patch raises an
  error instead.

[1] https://github.com/ARM-software/acle/blob/main/main/acle.md#function-multi-versioning

gcc/ChangeLog:

	* config/aarch64/aarch64-feature-deps.h (fmv_deps_<FEAT_NAME>):
	Define aarch64_feature_flags mask foreach FMV feature.
	* config/aarch64/aarch64-option-extensions.def: Use new macros
	to define FMV feature extensions.
	* config/aarch64/aarch64.cc (aarch64_option_valid_attribute_p):
	Check for target_version attribute after processing target
	attribute.
	(aarch64_fmv_feature_data): New.
	(aarch64_parse_fmv_features): New.
	(aarch64_process_target_version_attr): New.
	(aarch64_option_valid_version_attribute_p): New.
	(get_feature_mask_for_version): New.
	(compare_feature_masks): New.
	(aarch64_compare_version_priority): New.
	(build_ifunc_arg_type): New.
	(make_resolver_func): New.
	(add_condition_to_bb): New.
	(dispatch_function_versions): New.
	(aarch64_generate_version_dispatcher_body): New.
	(aarch64_get_function_versions_dispatcher): New.
	(aarch64_common_function_versions): New.
	(aarch64_mangle_decl_assembler_name): New.
	(TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P): New implementation.
	(TARGET_OPTION_EXPANDED_CLONES_ATTRIBUTE): New implementation.
	(TARGET_OPTION_FUNCTION_VERSIONS): New implementation.
	(TARGET_COMPARE_VERSION_PRIORITY): New implementation.
	(TARGET_GENERATE_VERSION_DISPATCHER_BODY): New implementation.
	(TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New implementation.
	(TARGET_MANGLE_DECL_ASSEMBLER_NAME): New implementation.
	* config/aarch64/aarch64.h (TARGET_HAS_FMV_TARGET_ATTRIBUTE):
	Set target macro.
	* config/arm/aarch-common.h (enum aarch_parse_opt_result): Add
	new value to report duplicate FMV feature.
	* common/config/aarch64/cpuinfo.h: New file.

libgcc/ChangeLog:

	* config/aarch64/cpuinfo.c (enum CPUFeatures): Move to shared
	copy in gcc/common

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/options_set_17.c: Reorder expected flags.
	* gcc.target/aarch64/cpunative/native_cpu_0.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_13.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_16.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_17.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_18.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_19.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_20.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_21.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_22.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_6.c: Ditto.
	* gcc.target/aarch64/cpunative/native_cpu_7.c: Ditto.
2023-12-16 00:41:22 +00:00
Andrew Carlotti
2c200a12c1 aarch64: Add cpu feature detection to libgcc
This is added to enable function multiversioning, but can also be used
directly.  The interface is chosen to match that used in LLVM's
compiler-rt, to facilitate cross-compiler compatibility.

The content of the patch is derived almost entirely from Pavel's prior
contributions to compiler-rt/lib/builtins/cpu_model.c. I have made minor
changes to align more closely with GCC coding style, and to exclude any code
from other LLVM contributors, and am adding this to GCC with Pavel's approval.

libgcc/ChangeLog:

	* config/aarch64/t-aarch64: Include cpuinfo.c
	* config/aarch64/cpuinfo.c: New file
	(__init_cpu_features_constructor) New.
	(__init_cpu_features_resolver) New.
	(__init_cpu_features) New.

Co-authored-by: Pavel Iliin <Pavel.Iliin@arm.com>
2023-12-16 00:38:41 +00:00
Szabolcs Nagy
91d68665b8 libgcc: aarch64: Add SME unwinder support
To support the ZA lazy save scheme, the PCS requires the unwinder to
reset the SME state to PSTATE.SM=0, PSTATE.ZA=0, TPIDR2_EL0=0 on entry
to an exception handler. We use the __arm_za_disable SME runtime call
unconditionally to achieve this.
https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#exceptions

The hidden alias is used to avoid a PLT and avoid inconsistent VPCS
marking (we don't rely on special PCS at the call site). In case of
static linking the SME runtime init code is linked in code that raises
exceptions.

libgcc/ChangeLog:

	* config/aarch64/__arm_za_disable.S: Add hidden alias.
	* config/aarch64/aarch64-unwind.h: Reset the SME state before
	EH return via the _Unwind_Frames_Extra hook.
2023-12-08 11:29:07 +00:00
Szabolcs Nagy
328c17af77 libgcc: aarch64: Add SME runtime support
The call ABI for SME (Scalable Matrix Extension) requires a number of
helper routines which are added to libgcc so they are tied to the
compiler version instead of the libc version. See
https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#sme-support-routines

The routines are in shared libgcc and static libgcc eh, even though
they are not related to exception handling.  This is to avoid linking
a copy of the routines into dynamic linked binaries, because TPIDR2_EL0
block can be extended in the future which is better to handle in a
single place per process.

The support routines have to decide if SME is accessible or not. Linux
tells userspace if SME is accessible via AT_HWCAP2, otherwise a new
__aarch64_sme_accessible symbol was introduced that a libc can define.
Due to libgcc and libc build order, the symbol availability cannot be
checked so for __aarch64_sme_accessible an unistd.h feature test macro
is used while such detection mechanism is not available for __getauxval
so we rely on configure checks based on the target triplet.

Asm helper code is added to make writing the routines easier.

libgcc/ChangeLog:

	* config/aarch64/t-aarch64: Add sources to the build.
	* config/aarch64/__aarch64_have_sme.c: New file.
	* config/aarch64/__arm_sme_state.S: New file.
	* config/aarch64/__arm_tpidr2_restore.S: New file.
	* config/aarch64/__arm_tpidr2_save.S: New file.
	* config/aarch64/__arm_za_disable.S: New file.
	* config/aarch64/aarch64-asm.h: New file.
	* config/aarch64/libgcc-sme.ver: New file.
2023-12-08 11:29:06 +00:00
Jeff Law
f1fdd2839c [committed] Fix rx build failure in libgcc
The rx port has a bunch of what I presume are ABI compatibility functions in
libgcc.  Those compatibility functions routines such as __eqdf2 from libgcc,
but without a prototype.  This patch adds the missing prototypes.

libgcc/
	* config/rx/rx-abi-functions.c (__ltdf2, __gtdf2): Add prototype.
	(__ledf2, __gedf2, __eqdf2, __nedf2): Likewise.
	(__ltsf2, __gtsf2, __lesf2, __gesf2, __eqsf2, __nesf2): Likewise.
2023-12-02 22:07:59 -07:00
Jeff Law
870b63fe71 [committed] Fix frv build after C99 changes
Two issues prevent the frv-elf port from building after the C99 changes.  First
the trampoline code emitted into libgcc has calls to exit, but no prototype.
Adding a trivial prototype for exit() into the macro fixes that little goof.

Second, frvbegin.c has a call to atexit, so a quick prototype is added into
frvbegin.c to fix that problem.

That's enough to get the compiler building again.

gcc/
	* config/frv/frv.h (TRANSFER_FROM_TRAMPOLINE): Add prototype for exit.

libgcc/
	* config/frv/frvbegin.c (atexit): Add prototype.
2023-12-02 21:54:36 -07:00
Florian Weimer
335bd6c938 aarch64: Avoid -Wincompatible-pointer-types warning in Linux unwinder
* config/aarch64/linux-unwind.h
	(aarch64_fallback_frame_state): Add cast to the expected type
	in sc assignment.
2023-12-01 08:10:12 +01:00
Wilco Dijkstra
df8958e6bc AArch64: Fix __sync_val_compare_and_swap [PR111404]
__sync_val_compare_and_swap may be used on 128-bit types and either calls the
outline atomic code or uses an inline loop.  On AArch64 LDXP is only atomic if
the value is stored successfully using STXP, but the current implementations
do not perform the store if the comparison fails.  In this case the value
returned is not read atomically.

gcc/ChangeLog:
	PR target/111404
	* config/aarch64/aarch64.cc (aarch64_split_compare_and_swap):
	For 128-bit store the loaded value and loop if needed.

libgcc/ChangeLog:
	PR target/111404
	* config/aarch64/lse.S (__aarch64_cas16_acq_rel): Execute STLXP using
	either new value or loaded value.
2023-11-30 16:15:29 +00:00
Richard Earnshaw
eecdd96c8d arm: libgcc: tweak warning from __sync_synchronize
My previous patch to add an implementation of __sync_syncrhonize with
a warning trips a testsuite failure in fortran (and possibly other
languages as well) as the framework expects no blank lines in the
output, but this warning was generating one.  So remove the newline
from the end of the message and rely on the one added by the linker
instead.

Since we're there, remove the trailing period from the message as
well, since the convention seems to be not to have one.

libgcc/

	* config/arm/lib1funcs.S (__sync_synchronize): Adjust warning message.
2023-11-27 18:00:33 +00:00
Richard Earnshaw
439779bace arm: libgcc: provide implementations of __sync_synchronize
Prior to Armv6 there was no architected method to synchronize data
across processors.  Armv6 saw the first introduction of
multi-processor support, using a CP15 operation; but this was
deprecated in Armv7 and is not supported on m-profile devices of any
form.  Armv7 (and armv6-m) and later support data synchronization via
the DMB instruction.

This all leads to difficulties when linking programs as the user
generally needs to know which synchronization method is needed, but
there seems no easy way around this, when there are no OS-related
primitives available.

I've addressed this by adding multiple variants of __sync_synchronize
to libgcc, one for each of the above use cases.  I've named these
__sync_synchronize_none, __sync_synchronize_cp15dmb and
__sync_synchronize_dmb.  I've also added three specs files that can be
used to direct the linker to pick the appropriate implementation.
Using specs fragments for this is preferable to directing the user to
directly use --defsym as the latter has to be placed at the correct
position on the command line to be effective and the spec rule ensures
this automatically.

I've also added a default implementation of __sync_synchronize.  The
default implementation will use DMB if that is available in the target
ISA, or fall back to a nul-implementation if it isn't.  In the latter
case it will cause the linker (GNU LD) to emit a warning that
specifies how to pick a specific implementation.  I've chosen not to
permit this default to use the CP15 solution as that has been
deprecated.

libgcc:

	* config.host (arm*-*-eabi* | arm*-*-rtems*):
	Add arm/t-sync to the makefile rules.
	* config/arm/lib1funcs.S (__sync_synchronize_none)
	(__sync_synchronize_cp15dmb, __sync_synchronize_dmb)
	(__sync_synchronize): New functions.
	* config/arm/t-sync: New file.
	* config/arm/sync-none.specs: Likewise.
	* config/arm/sync-dmb.specs: Likewise.
	* config/arm/sync-cp15dmb.specs: Likewise.
2023-11-24 14:15:26 +00:00
GCC Administrator
b9fd8399ec Daily bump. 2023-11-14 12:23:39 +00:00
Georg-Johann Lay
3232e73c44 LibF7: sinh: Fix loss of precision due to cancellation for small values.
libgcc/config/avr/libf7/
	* libf7-const.def [F7MOD_sinh_]: Add MiniMax polynomial.
	* libf7.c (f7_sinh): Use it instead of (exp(x) - exp(-x)) / 2
	when |x| < 0.5 to avoid loss of precision due to cancellation.
2023-11-14 12:10:08 +01:00
Georg-Johann Lay
3a5a30792f LibF7: Use paper-pencil method for sqrt instead of Newton-Raphson iteration.
libgcc/config/avr/libf7/
	* libf7-asm.sx (sqrt_approx): Rewrite.
	* libf7.c (f7_sqrt): Use it instead of sqrt_worker.
	(sqrt_worker): Remove.
2023-11-12 15:58:02 +01:00
Keith Packard
e0c1476d5d [PATCH] libgcc/m68k: Fixes for soft float
Check for non-zero denorm in __adddf3. Need to check both the upper and
lower 32-bit chunks of a 64-bit float for a non-zero value when
checking to see if the value is -0.

Fix __addsf3 when the sum exponent is exactly 0xff to ensure that
produces infinity and not nan.

Handle converting NaN/inf values between formats.

Handle underflow and overflow when truncating.

Write a replacement for __fixxfsi so that it does not raise extra
exceptions during an extra conversion from long double to double.

libgcc/
	* config/m68k/lb1sf68.S (__adddf3): Properly check for non-zero denorm.
	(__divdf3): Restore sign bit properly.
	(__addsf3): Correct exponent check.
	* config/m68k/fpgnulib.c (EXPMASK): Define.
	(__extendsfdf2): Handle Inf and NaN properly.
	(__truncdfsf2): Handle underflow and overflow correctly.
	(__extenddfxf2): Handle underflow, denorms, Inf and NaN correctly.
	(__truncxfdf2): Handle underflow and denorms correctly.
	(__fixxfsi): Reimplement.
2023-11-10 16:47:22 -07:00
Jakub Jelinek
f172b9d38d libgcc: Add {unsigned ,}__int128 <-> _Decimal{32,64,128} conversion support [PR65833]
The following patch adds the missing
{unsigned ,}__int128 <-> _Decimal{32,64,128}
conversion support into libgcc.a on top of the _BitInt support
(doing it without that would be larger amount of code and I hope all
the targets which support __int128 will eventually support _BitInt,
after all it is a required part of C23) and because it is in libgcc.a
only, it doesn't hurt that much if it is added for some architectures
only in GCC 15.
Initially I thought about doing this on the compiler side, but doing
it on the library side seems to be easier and more -Os friendly.
The tests currently require bitint effective target, that can be
removed when all the int128 targets support bitint.

2023-11-09  Jakub Jelinek  <jakub@redhat.com>

	PR libgcc/65833
libgcc/
	* config/t-softfp (softfp_bid_list): Add
	{U,}TItype <-> _Decimal{32,64,128} conversions.
	* soft-fp/floattisd.c: New file.
	* soft-fp/floattidd.c: New file.
	* soft-fp/floattitd.c: New file.
	* soft-fp/floatuntisd.c: New file.
	* soft-fp/floatuntidd.c: New file.
	* soft-fp/floatuntitd.c: New file.
	* soft-fp/fixsdti.c: New file.
	* soft-fp/fixddti.c: New file.
	* soft-fp/fixtdti.c: New file.
	* soft-fp/fixunssdti.c: New file.
	* soft-fp/fixunsddti.c: New file.
	* soft-fp/fixunstdti.c: New file.
gcc/testsuite/
	* gcc.dg/dfp/int128-1.c: New test.
	* gcc.dg/dfp/int128-2.c: New test.
	* gcc.dg/dfp/int128-3.c: New test.
	* gcc.dg/dfp/int128-4.c: New test.
2023-11-09 09:14:07 +01:00
GCC Administrator
3e9461a3c2 Daily bump. 2023-11-09 00:17:25 +00:00
Georg-Johann Lay
f7da59104c LibF7: Tweak IEEE double multiplication.
libgcc/config/avr/libf7/
	* libf7-asm.sx (mul_mant) [AVR_HAVE_MUL]: Tweak code.
2023-11-08 12:45:25 +01:00