Skip to content
Snippets Groups Projects
  1. Mar 26, 2024
  2. Mar 25, 2024
  3. Mar 23, 2024
  4. Mar 22, 2024
  5. Mar 21, 2024
    • Jakub Jelinek's avatar
      libgcc: Fix up bitint division [PR114397] · 59b6cece
      Jakub Jelinek authored
      The Knuth's division algorithm relies on the number of dividend limbs
      to be greater ore equal to number of divisor limbs, which is why
      I've added a special case for un < vn at the start of __divmodbitint4.
      Unfortunately, my assumption that it then implies abs(v) > abs(u) and
      so quotient must be 0 and remainder same as dividend is incorrect.
      This is because this check is done before negation of the operands.
      While bitint_reduce_prec reduces precision from clearly useless limbs,
      the problematic case is when the dividend is unsigned or non-negative
      and divisor is negative.  We can have limbs (from MS to LS):
      dividend:       0       M       ?...
      divisor:        -1      -N      ?...
      where M has most significant bit set and M >= N (if M == N then it
      also the following limbs matter) and the most significant limbs can
      be even partial.  In this case, the quotient should be -1 rather than
      0.  bitint_reduce_prec will reduce the precision of the dividend so
      that M is the most significant limb, but can't reduce precision of the
      divisor to more than having the -1 as most significant limb, because
      -N doesn't have the most significant bit set.
      
      The following patch fixes it by detecting this problematic case in the
      un < vn handling, and instead of assuming q is 0 and r is u will
      decrease vn by 1 because it knows the later code will negate the divisor
      and it can be then expressed after negation in one fewer limbs.
      
      2024-03-21  Jakub Jelinek  <jakub@redhat.com>
      
      	PR libgcc/114397
      	* libgcc2.c (__divmodbitint4): Don't assume un < vn always means
      	abs(v) > abs(u), check for a special case of un + 1 == vn where
      	u is non-negative and v negative and after v's negation vn could
      	be reduced by 1.
      
      	* gcc.dg/torture/bitint-65.c: New test.
      59b6cece
    • GCC Administrator's avatar
      Daily bump. · af376184
      GCC Administrator authored
      af376184
  6. Mar 20, 2024
  7. Mar 16, 2024
  8. Mar 15, 2024
    • Jakub Jelinek's avatar
      libgcc: Fix quotient and/or remainder negation in __divmodbitint4 [PR114327] · a6dab195
      Jakub Jelinek authored
      While for __mulbitint3 we actually don't negate anything and perform the
      multiplication in unsigned style always, for __divmodbitint4 if the operands
      aren't unsigned and are negative, we negate them first and then try to
      negate them as needed at the end.
      quotient is negated if just one of the operands was negated and the other
      wasn't or vice versa, and remainder is negated if the first operand was
      negated.
      The case which doesn't work correctly is if due to limited range of the
      operands we perform the division/modulo in some smaller number of limbs
      and then extend it to the desired precision of the quotient and/or
      remainder results.  If they aren't negated, the extension is done with
      memset to 0, if they are negated, the extension was done with memset
      to -1.  The problem is that if the quotient or remainder is zero,
      then bitint_negate negates it again to zero (that is ok), but we should
      then extend with memset to 0, not memset to -1.
      
      The following patch achieves that by letting bitint_negate also check if
      the negated operand is zero and changes the memset argument based on that.
      
      2024-03-15  Jakub Jelinek  <jakub@redhat.com>
      
      	PR libgcc/114327
      	* libgcc2.c (bitint_negate): Return UWtype bitwise or of all the limbs
      	before negation rather than void.
      	(__divmodbitint4): Determine whether to fill in the upper limbs after
      	negation based on whether bitint_negate returned 0 or non-zero, rather
      	then always filling with -1.
      
      	* gcc.dg/torture/bitint-63.c: New test.
      a6dab195
  9. Feb 23, 2024
  10. Feb 22, 2024
    • Kewen Lin's avatar
      rs6000: Neuter option -mpower{8,9}-vector [PR109987] · 438ef143
      Kewen Lin authored
      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.
      438ef143
    • GCC Administrator's avatar
      Daily bump. · 98004ca0
      GCC Administrator authored
      98004ca0
  11. Feb 21, 2024
  12. Feb 20, 2024
  13. Feb 17, 2024
  14. Feb 16, 2024
    • Matteo Italia's avatar
      libgcc: fix Win32 CV abnormal spurious wakeups in timed wait [PR113850] · 05ad8fb5
      Matteo Italia authored
      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
      05ad8fb5
  15. Feb 15, 2024
  16. Feb 14, 2024
    • H.J. Lu's avatar
      x86: Support x32 and IBT in heap trampoline · 67ce5c97
      H.J. Lu authored
      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.
      67ce5c97
    • GCC Administrator's avatar
      Daily bump. · df6c57ce
      GCC Administrator authored
      df6c57ce
  17. Feb 13, 2024
    • Jakub Jelinek's avatar
      libgcc: Fix UB in FP_FROM_BITINT · 2ca373b7
      Jakub Jelinek authored
      As I wrote earlier, I was seeing
      FAIL: gcc.dg/torture/bitint-24.c   -O0  execution test
      FAIL: gcc.dg/torture/bitint-24.c   -O2  execution test
      with the ia32 _BitInt enablement patch on i686-linux.  I thought
      floatbitintxf.c was miscompiled with -O2 -march=i686 -mtune=generic, but it
      turned out to be UB in it.
      
      If a signed _BitInt to be converted to binary floating point has
      (after sign extension from possible partial limb to full limb) one or
      more most significant limbs equal to all ones and then in the limb below
      (the most significant non-~(UBILtype)0 limb) has the most significant limb
      cleared, like for 32-bit limbs
      0x81582c05U, 0x0a8b01e4U, 0xc1b8b18fU, 0x2aac2a08U, -1U, -1U
      then bitint_reduce_prec can't reduce it to that 0x2aac2a08U limb, so
      msb is all ones and precision is negative (so it reduced precision from
      161 to 192 bits down to 160 bits, in theory could go as low as 129 bits
      but that wouldn't change anything on the following behavior).
      But still iprec is negative, -160 here.
      For that case (i.e. where we are dealing with an negative input), the
      code was using 65 - __builtin_clzll (~msb) to compute how many relevant
      bits we have from the msb.  Unfortunately that invokes UB for msb all ones.
      The right number of relevant bits in that case is 1 though (like for
      -2 it is 2 and -4 or -3 3 as already computed) - all we care about from that
      is that the most significant bit is set (i.e. the number is negative) and
      the bits below that should be supplied from the limbs below.
      
      So, the following patch fixes it by special casing it not to invoke UB.
      
      For msb 0 we already have a special case from before (but that is also
      different because msb 0 implies the whole number is 0 given the way
      bitint_reduce_prec works - even if we have limbs like ..., 0x80000000U, 0U
      the reduction can skip the most significant limb and msb then would be
      the one below it), so if iprec > 0, we already don't call __builtin_clzll
      on 0.
      
      2024-02-13  Jakub Jelinek  <jakub@redhat.com>
      
      	* soft-fp/bitint.h (FP_FROM_BITINT): If iprec < 0 and msb is all ones,
      	just set n to 1 instead of using __builtin_clzll (~msb).
      2ca373b7
    • GCC Administrator's avatar
      Daily bump. · bf074ee4
      GCC Administrator authored
      bf074ee4
  18. Feb 12, 2024
    • Iain Sandoe's avatar
      x86, libgcc: Implement ia32 basic heap trampoline [PR113855]. · 5e39897e
      Iain Sandoe authored
      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.
      5e39897e
  19. Feb 11, 2024
  20. Feb 10, 2024
    • Jakub Jelinek's avatar
      libgcc: Fix a bug in _BitInt -> dfp conversions · 1e87fcf2
      Jakub Jelinek authored
      The ia32 _BitInt support revealed a bug in floatbitint?d.c.
      As can be even guessed from how the code is written in the loop,
      the intention was to set inexact to non-zero whenever the remainder
      after division wasn't zero, but I've ended up just checking whether
      the 2 least significant limbs of the remainder were non-zero.
      Now, in the dfp/bitint-4.c test in one case the remainder happens
      to have least significant 64 bits zero and then the higher limbs are
      non-zero; with 32-bit limbs that means 2 least significant limbs are zero
      and so the code acted as if it was exactly divisible.
      
      Fixed thusly.
      
      2024-02-10  Jakub Jelinek  <jakub@redhat.com>
      
      	* soft-fp/floatbitintdd.c (__bid_floatbitintdd): Or in all remainder
      	limbs into inexact rather than just first two.
      	* soft-fp/floatbitintsd.c (__bid_floatbitintsd): Likewise.
      	* soft-fp/floatbitinttd.c (__bid_floatbitinttd): Likewise.
      1e87fcf2
    • Jakub Jelinek's avatar
      libgcc: Fix BIL_TYPE_SIZE == 32 support in _BitInt <-> dfp support · b2684e55
      Jakub Jelinek authored
      I've tried last night to enable _BitInt support for i?86-linux, and
      a few spots in libgcc emitted -Wshift-count-overflow warnings and clearly
      didn't do what it was supposed to do.
      
      Fixed thusly.
      
      2024-02-10  Jakub Jelinek  <jakub@redhat.com>
      
      	* soft-fp/fixddbitint.c (__bid_fixddbitint): Fix up
      	BIL_TYPE_SIZE == 32 shifts.
      	* soft-fp/fixsdbitint.c (__bid_fixsdbitint): Likewise.
      	* soft-fp/fixtdbitint.c (__bid_fixtdbitint): Likewise.
      	* soft-fp/floatbitintdd.c (__bid_floatbitintdd): Likewise.
      	* soft-fp/floatbitinttd.c (__bid_floatbitinttd): Likewise.
      b2684e55
    • GCC Administrator's avatar
      Daily bump. · 2523654a
      GCC Administrator authored
      2523654a
  21. Feb 09, 2024
  22. Feb 07, 2024
  23. Feb 06, 2024
    • Rainer Orth's avatar
      libgcc: Export i386 symbols added after GCC_7.0.0 on Solaris [PR113700] · c5f48b5f
      Rainer Orth authored
      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.
      c5f48b5f
    • Matteo Italia's avatar
      libgcc: fix SEH C++ rethrow semantics [PR113337] · 16774daa
      Matteo Italia authored
      SEH _Unwind_Resume_or_Rethrow invokes abort directly if
      _Unwind_RaiseException doesn't manage to find a handler for the rethrown
      exception; this is incorrect, as in this case std::terminate should be
      invoked, allowing an application-provided terminate handler to handle
      the situation instead of straight crashing the application through
      abort.
      
      The bug can be demonstrated with this simple test case:
      ===
      static void custom_terminate_handler() {
          fprintf(stderr, "custom_terminate_handler invoked\n");
          std::exit(1);
      }
      
      int main(int argc, char *argv[]) {
          std::set_terminate(&custom_terminate_handler);
          if (argc < 2) return 1;
          const char *mode = argv[1];
          fprintf(stderr, "%s\n", mode);
          if (strcmp(mode, "throw") == 0) {
              throw std::exception();
          } else if (strcmp(mode, "rethrow") == 0) {
              try {
                  throw std::exception();
              } catch (...) {
                  throw;
              }
          } else {
              return 1;
          }
          return 0;
      }
      ===
      
      On all gcc builds with non-SEH exceptions, this will print
      "custom_terminate_handler invoked" both if launched as ./a.out throw or
      as ./a.out rethrow, on SEH builds instead if will work as expected only
      with ./a.exe throw, but will crash with the "built-in" abort message
      with ./a.exe rethrow.
      
      This patch fixes the problem, forwarding back the error code to the
      caller (__cxa_rethrow), that calls std::terminate if
      _Unwind_Resume_or_Rethrow returns.
      
      The change makes the code path coherent with SEH _Unwind_RaiseException,
      and with the generic _Unwind_Resume_or_Rethrow from libgcc/unwind.inc
      (used for SjLj and Dw2 exception backend).
      
      libgcc/ChangeLog:
      
      	PR libgcc/113337
      
      	* unwind-seh.c (_Unwind_Resume_or_Rethrow): forward
      	_Unwind_RaiseException return code back to caller instead of
      	calling abort, allowing __cxa_rethrow to invoke std::terminate
      	in case of uncaught rethrown exception
      16774daa
  24. Feb 03, 2024
  25. Feb 02, 2024
    • Jakub Jelinek's avatar
      libgcc: Fix up _BitInt division [PR113604] · fbb56931
      Jakub Jelinek authored
      The following testcase ends up with SIGFPE in __divmodbitint4.
      The problem is a thinko in my attempt to implement Knuth's algorithm.
      
      The algorithm does (where b is 65536, i.e. one larger than what
      fits in their unsigned short word):
              // Compute estimate qhat of q[j].
              qhat = (un[j+n]*b + un[j+n-1])/vn[n-1];
              rhat = (un[j+n]*b + un[j+n-1]) - qhat*vn[n-1];
            again:
              if (qhat >= b || qhat*vn[n-2] > b*rhat + un[j+n-2])
              { qhat = qhat - 1;
                rhat = rhat + vn[n-1];
                if (rhat < b) goto again;
              }
      The problem is that it uses a double-word / word -> double-word
      division (and modulo), while all we have is udiv_qrnnd unless
      we'd want to do further library calls, and udiv_qrnnd is a
      double-word / word -> word division and modulo.
      Now, as the algorithm description says, it can produce at most
      word bits + 1 bit quotient.  And I believe that actually the
      highest qhat the original algorithm can produce is
      (1 << word_bits) + 1.  The algorithm performs earlier canonicalization
      where both the divisor and dividend are shifted left such that divisor
      has msb set.  If it has msb set already before, no shifting occurs but
      we start with added 0 limb, so in the first uv1:uv0 double-word uv1
      is 0 and so we can't get too high qhat, if shifting occurs, the first
      limb of dividend is shifted right by UWtype bits - shift count into
      a new limb, so again in the first iteration in the uv1:uv0 double-word
      uv1 doesn't have msb set while vv1 does and qhat has to fit into word.
      In the following iterations, previous iteration should guarantee that
      the previous quotient digit is correct.  Even if the divisor was the
      maximal possible vv1:all_ones_in_all_lower_limbs, if the old uv0:lower_limbs
      would be larger or equal to the divisor, the previous quotient digit
      would increase and another divisor would be subtracted, which I think
      implies that in the next iteration in uv1:uv0 double-word uv1 <= vv1,
      but uv0 could be up to all ones, e.g. in case of all lower limbs
      of divisor being all ones and at least one dividend limb below uv0
      being not all ones.  So, we can e.g. for 64-bit UWtype see
      uv1:uv0 / vv1 0x8000000000000000UL:0xffffffffffffffffUL / 0x8000000000000000UL
      or 0xffffffffffffffffUL:0xffffffffffffffffUL / 0xffffffffffffffffUL
      In all these cases (when uv1 == vv1 && uv0 >= uv1), qhat is
      0x10000000000000001UL, i.e. 2 more than fits into UWtype result,
      if uv1 == vv1 && uv0 < uv1 it would be 0x10000000000000000UL, i.e.
      1 more than fits into UWtype result.
      Because we only have udiv_qrnnd which can't deal with those too large
      cases (SIGFPEs or otherwise invokes undefined behavior on those), I've
      tried to handle the uv1 >= vv1 case separately, but for one thing
      I thought it would be at most 1 larger than what fits, and for two
      have actually subtracted vv1:vv1 from uv1:uv0 instead of subtracting
      0:vv1 from uv1:uv0.
      For the uv1 < vv1 case, the implementation already performs roughly
      what the algorithm does.
      Now, let's see what happens with the two possible extra cases in
      the original algorithm.
      If uv1 == vv1 && uv0 < uv1, qhat above would be b, so we take
      if (qhat >= b, decrement qhat by 1 (it becomes b - 1), add
      vn[n-1] aka vv1 to rhat and goto again if rhat < b (but because
      qhat already fits we can goto to the again label in the uv1 < vv1
      code).  rhat in this case is uv0 and rhat + vv1 can but doesn't
      have to overflow, say for uv0 42UL and vv1 0x8000000000000000UL
      it will not (and so we should goto again), while for uv0
      0x8000000000000000UL and vv1 0x8000000000000001UL it will (and
      we shouldn't goto again).
      If uv1 == vv1 && uv0 >= uv1, qhat above would be b + 1, so we
      take if (qhat >= b, decrement qhat by 1 (it becomes b), add
      vn[n-1] aka vv1 to rhat. But because vv1 has msb set and
      rhat in this case is uv0 - vv1, the rhat + vv1 addition
      certainly doesn't overflow, because (uv0 - vv1) + vv1 is uv0,
      so in the algorithm we goto again, again take if (qhat >= b and
      decrement qhat so it finally becomes b - 1, and add vn[n-1]
      aka vv1 to rhat again.  But this time I believe it must always
      overflow, simply because we added (uv0 - vv1) + vv1 + vv1 and
      vv1 has msb set, so already vv1 + vv1 must overflow.  And
      because it overflowed, it will not goto again.
      So, I believe the following patch implements this correctly, by
      subtracting vv1 from uv1:uv0 double-word once, then comparing
      again if uv1 >= vv1.  If that is true, subtract vv1 from uv1:uv0
      again and add 2 * vv1 to rhat, no __builtin_add_overflow is needed
      as we know it always overflowed and so won't goto again.
      If after the first subtraction uv1 < vv1, use __builtin_add_overflow
      when adding vv1 to rhat, because it can but doesn't have to overflow.
      
      I've added an extra testcase which tests the behavior of all the changed
      cases, so it has a case where uv1:uv0 / vv1 is 1:1, where it is
      1:0 and rhat + vv1 overflows and where it is 1:0 and rhat + vv1 does not
      overflow, and includes tests also from Zdenek's other failing tests.
      
      2024-02-02  Jakub Jelinek  <jakub@redhat.com>
      
      	PR libgcc/113604
      	* libgcc2.c (__divmodbitint4): If uv1 >= vv1, subtract
      	vv1 from uv1:uv0 once or twice as needed, rather than
      	subtracting vv1:vv1.
      
      	* gcc.dg/torture/bitint-53.c: New test.
      	* gcc.dg/torture/bitint-55.c: New test.
      fbb56931
    • Khem Raj's avatar
      [PATCH] libgcc: Include stdlib.h for abort() on mingw32 · 2c27aa8d
      Khem Raj authored
      libgcc/
      	* config/i386/enable-execute-stack-mingw32.c: Include
      	stdlib.h for abort() definition.
      2c27aa8d
    • Jakub Jelinek's avatar
      libgcc: Export XF, TF, HF and BFmode specific _BitInt symbols from libgcc_s.so.1 [PR113700] · 9f5caef5
      Jakub Jelinek authored
      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.
      9f5caef5
    • GCC Administrator's avatar
      Daily bump. · e2554540
      GCC Administrator authored
      e2554540
  26. Feb 01, 2024
    • Jakub Jelinek's avatar
      libgcc: Avoid warnings on __gcc_nested_func_ptr_created [PR113402] · e9b2f15d
      Jakub Jelinek authored
      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.
      e9b2f15d
    • Jakub Jelinek's avatar
      libgcc: Fix up i386/t-heap-trampoline [PR113403] · 03519175
      Jakub Jelinek authored
      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.
      03519175
    • GCC Administrator's avatar
      Daily bump. · dd3455f6
      GCC Administrator authored
      dd3455f6
Loading