]> gcc.gnu.org Git - gcc.git/log
gcc.git
20 months agoFix wrong-code issue in VN
Richard Biener [Fri, 17 Feb 2023 08:30:49 +0000 (09:30 +0100)]
Fix wrong-code issue in VN

The following fixes the wrong removed dead store discovered on the
PR108657 testcase when the reported DSE issue is not fixed.
The issue is we were using ssa_undefined_value_p on virtual operands
which returns a result based on the real definition of the definition
statement.  That doesn't make sense so this patch guards the calls
properly and makes sure nobody else does the same mistake.

* tree-ssa.cc (ssa_undefined_value_p): Assert we are not
called on virtual operands.
* tree-ssa-sccvn.cc (vn_phi_lookup): Guard
ssa_undefined_value_p calls.
(vn_phi_insert): Likewise.
(set_ssa_val_to): Likewise.
(visit_phi): Avoid extra work with equivalences for
virtual operand PHIs.

20 months agoFortran test: Modify test cases to pass on mingw.
Jerry DeLisle [Fri, 17 Feb 2023 03:29:44 +0000 (19:29 -0800)]
Fortran test: Modify test cases to pass on mingw.

gcc/testsuite/ChangeLog:

* gfortran.dg/ISO_Fortran_binding_14.f90: Change example function to
CLOCK which is available on mingw as well as other platforms.
* gfortran.dg/pr96486.f90: Change variable to PATH likewise.

20 months agoRISC-V: Fix vmnot asm check (Should check vmnot.m instead of vmnot.mm)
Ju-Zhe Zhong [Thu, 16 Feb 2023 03:34:28 +0000 (11:34 +0800)]
RISC-V: Fix vmnot asm check (Should check vmnot.m instead of vmnot.mm)

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/binop_vx_constraint-148.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-149.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-150.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-151.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-152.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-153.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-156.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-157.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-159.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-160.c: Change vmnot.mm to vmnot.m.
* gcc.target/riscv/rvv/base/binop_vx_constraint-161.c: Change vmnot.mm to vmnot.m.

20 months agoRISC-V: Add RVV all mask C/C++ intrinsics support
Ju-Zhe Zhong [Thu, 16 Feb 2023 03:30:01 +0000 (11:30 +0800)]
RISC-V: Add RVV all mask C/C++ intrinsics support

gcc/ChangeLog:

* config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
class.
(class mask_nlogic): Ditto.
(class mask_notlogic): Ditto.
(class vmmv): Ditto.
(class vmclr): Ditto.
(class vmset): Ditto.
(class vmnot): Ditto.
(class vcpop): Ditto.
(class vfirst): Ditto.
(class mask_misc): Ditto.
(class viota): Ditto.
(class vid): Ditto.
(BASE): Ditto.
* config/riscv/riscv-vector-builtins-bases.h: Ditto.
* config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
(vmnand): Ditto.
(vmandn): Ditto.
(vmxor): Ditto.
(vmor): Ditto.
(vmnor): Ditto.
(vmorn): Ditto.
(vmxnor): Ditto.
(vmmv): Ditto.
(vmclr): Ditto.
(vmset): Ditto.
(vmnot): Ditto.
(vcpop): Ditto.
(vfirst): Ditto.
(vmsbf): Ditto.
(vmsif): Ditto.
(vmsof): Ditto.
(viota): Ditto.
(vid): Ditto.
* config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
(struct mask_alu_def): Ditto.
(SHAPE): Ditto.
* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
* config/riscv/riscv-vector-builtins.cc: Ditto.
* config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
for dest it scalar RVV intrinsics.
* config/riscv/vector-iterators.md (sof): New iterator.
* config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
(@pred_<optab>not<mode>): New pattern.
(@pred_popcount<VB:mode><P:mode>): New pattern.
(@pred_ffs<VB:mode><P:mode>): New pattern.
(@pred_<misc_op><mode>): New pattern.
(@pred_iota<mode>): New pattern.
(@pred_series<mode>): New pattern.

20 months agoRISC-V: Rename tu_preds to none_tu_preds [NFC]
Ju-Zhe Zhong [Wed, 15 Feb 2023 11:22:31 +0000 (19:22 +0800)]
RISC-V: Rename tu_preds to none_tu_preds [NFC]

To be consistent with other naming of preds array variable.
Change tu_preds into none_tu_preds which indicate such preds
include vop and vop_tu combinations.

gcc/ChangeLog:

* config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
(vsbc): Ditto.
(vmerge): Ditto.
(vmv_v): Ditto.
* config/riscv/riscv-vector-builtins.cc: Ditto.

20 months agoRISC-V: Normalize SEW = 64 handling into a simplified function
Ju-Zhe Zhong [Wed, 15 Feb 2023 08:39:54 +0000 (16:39 +0800)]
RISC-V: Normalize SEW = 64 handling into a simplified function

Co-authored-by: kito-cheng <kito.cheng@sifive.com>
gcc/ChangeLog:

* config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
* config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
(sew64_scalar_helper): New function.
* config/riscv/vector.md: Normalization.

Co-authored-by: kito-cheng <kito.cheng@sifive.com>
20 months agoRISC-V: Rearrange the organization of declarations of RVV intrinsics [NFC]
Ju-Zhe Zhong [Tue, 14 Feb 2023 22:27:33 +0000 (06:27 +0800)]
RISC-V: Rearrange the organization of declarations of RVV intrinsics [NFC]

This patch doesn't change any functionality, only rearrange the oraganzation.
Make it to be consistent with RVV ISA. Add annotation for it to make codes
more readable.

gcc/ChangeLog:

* config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
(vsm): Ditto.
(vsse): Ditto.
(vsoxei64): Ditto.
(vsub): Ditto.
(vand): Ditto.
(vor): Ditto.
(vxor): Ditto.
(vsll): Ditto.
(vsra): Ditto.
(vsrl): Ditto.
(vmin): Ditto.
(vmax): Ditto.
(vminu): Ditto.
(vmaxu): Ditto.
(vmul): Ditto.
(vmulh): Ditto.
(vmulhu): Ditto.
(vmulhsu): Ditto.
(vdiv): Ditto.
(vrem): Ditto.
(vdivu): Ditto.
(vremu): Ditto.
(vnot): Ditto.
(vsext): Ditto.
(vzext): Ditto.
(vwadd): Ditto.
(vwsub): Ditto.
(vwmul): Ditto.
(vwmulu): Ditto.
(vwmulsu): Ditto.
(vwaddu): Ditto.
(vwsubu): Ditto.
(vsbc): Ditto.
(vmsbc): Ditto.
(vnsra): Ditto.
(vmerge): Ditto.
(vmv_v): Ditto.
(vmsne): Ditto.
(vmslt): Ditto.
(vmsgt): Ditto.
(vmsle): Ditto.
(vmsge): Ditto.
(vmsltu): Ditto.
(vmsgtu): Ditto.
(vmsleu): Ditto.
(vmsgeu): Ditto.
(vnmsac): Ditto.
(vmadd): Ditto.
(vnmsub): Ditto.
(vwmacc): Ditto.
(vsadd): Ditto.
(vssub): Ditto.
(vssubu): Ditto.
(vaadd): Ditto.
(vasub): Ditto.
(vasubu): Ditto.
(vsmul): Ditto.
(vssra): Ditto.
(vssrl): Ditto.
(vnclip): Ditto.

20 months agoRISC-V: Move saturating add/subtract md pattern location [NFC]
Ju-Zhe Zhong [Tue, 14 Feb 2023 23:18:20 +0000 (07:18 +0800)]
RISC-V: Move saturating add/subtract md pattern location [NFC]

gcc/ChangeLog:

* config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
(@pred_<optab><mode>_scalar): Ditto.
(*pred_<optab><mode>_scalar): Ditto.
(*pred_<optab><mode>_extended_scalar): Ditto.

20 months agoRISC-V: Remove "extern" for namespace [NFC]
Ju-Zhe Zhong [Tue, 14 Feb 2023 15:39:03 +0000 (23:39 +0800)]
RISC-V: Remove "extern" for namespace [NFC]

Just like other targets, aarch64_sve namespace in aarch64-protos.h
arm_mve in arm-protos, nds namesace in nds32-protos.h

They all don't have 'extern' in namespace.
This is a NFC patch to make RISC-V be consistent with other targets.
No functionality change.

gcc/ChangeLog:

* config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
(init_builtins): Ditto.
(mangle_builtin_type): Ditto.
(verify_type_context): Ditto.
(handle_pragma_vector):  Ditto.
(builtin_decl): Ditto.
(expand_builtin): Ditto.
(const_vec_all_same_in_range_p): Ditto.
(legitimize_move): Ditto.
(emit_vlmax_op): Ditto.
(emit_nonvlmax_op): Ditto.
(get_vlmul): Ditto.
(get_ratio): Ditto.
(get_ta): Ditto.
(get_ma): Ditto.
(get_avl_type): Ditto.
(calculate_ratio): Ditto.
(enum vlmul_type): Ditto.
(simm5_p): Ditto.
(neg_simm5_p): Ditto.
(has_vi_variant_p): Ditto.

20 months agoRISC-V: Replace simm32_p with immediate_operand (Pmode)
Ju-Zhe Zhong [Tue, 14 Feb 2023 15:04:49 +0000 (23:04 +0800)]
RISC-V: Replace simm32_p with immediate_operand (Pmode)

simm32_p is used to check constant int value within 32-bit.
It's used in handling SEW = 64 in rv32 system since such constant int
value with 32-bit allow us use vx instruction.

The current implementation of simm32_p is quite ugly and now I figure
out immedate_operand (op, pmode) can help us to check whether the op
is a constant value within 32-bit.

I already have a bunch testcases to test SEW = 64 in rv32 system and
all regression tests are passed with this patch.

gcc/ChangeLog:

* config/riscv/riscv-protos.h (simm32_p): Remove.
* config/riscv/riscv-v.cc (simm32_p): Ditto.
* config/riscv/vector.md: Use immediate_operand
instead of riscv_vector::simm32_p.

20 months agoFortran Tests: Allow passing on mingw.
Jerry DeLisle [Fri, 17 Feb 2023 02:13:56 +0000 (18:13 -0800)]
Fortran Tests: Allow passing on mingw.

gcc/testsuite/ChangeLog:

* gfortran.dg/bind_c_array_params_2.f90: Add *-*-ming* to dg-final.

20 months agoDaily bump.
GCC Administrator [Fri, 17 Feb 2023 00:17:49 +0000 (00:17 +0000)]
Daily bump.

20 months agoanalyzer: respect some conditions from bit masks [PR108806]
David Malcolm [Thu, 16 Feb 2023 23:12:55 +0000 (18:12 -0500)]
analyzer: respect some conditions from bit masks [PR108806]

PR analyzer/108806 reports false +ves seen from -fanalyzer on code like this
in qemu-7.2.0's hw/intc/omap_intc.c:

  [...snip...]
  struct omap_intr_handler_bank_s* bank = NULL;
  if ((offset & 0xf80) == 0x80) {
    [...set "bank" to non-NULL...]
  }
  switch (offset) {
    [...snip various cases that don't deref "bank"...]
    case 0x80:
      return bank->inputs;
    case 0x84:
      return bank->mask;
    [...etc...]
   }

where the analyzer falsely complains about execution paths in which
"(offset & 0xf80) == 0x80" was false (leaving "bank" as NULL), but then
in which "switch (offset)" goes to a case for which
"(offset & 0xf80) == 0x80" is true and dereferences NULL "bank", i.e.
paths in which "(offset & 0xf80) == 0x80" is both true *and* false.

This patch adds enough logic to constraint_manager for -fanalyzer to
reject such execution paths as impossible, fixing the false +ves.

Integration testing shows this eliminates 20 probable false positives:

Comparison: 9.08% -> 9.34% GOOD: 66 BAD: 661 -> 641 (-20)

where the affected warnings/projects are:

  -Wanalyzer-null-dereference: 0.00% GOOD: 0 BAD: 279 -> 269 (-10)
        qemu-7.2.0: 175 -> 165 (-10)

  -Wanalyzer-use-of-uninitialized-value: 0.00% GOOD: 0 BAD: 153 -> 143 (-10)
     coreutils-9.1:  18 ->  14 (-4)
        qemu-7.2.0:  54 ->  48 (-6)

gcc/analyzer/ChangeLog:
PR analyzer/108806
* constraint-manager.cc (bounded_range::dump_to_pp): Use
bounded_range::singleton_p.
(constraint_manager::add_bounded_ranges): Handle singleton ranges
by adding an EQ_EXPR constraint.
(constraint_manager::impossible_derived_conditions_p): New.
(constraint_manager::eval_condition): Reject EQ_EXPR when it would
imply impossible derived conditions.
(selftest::test_bits): New.
(selftest::run_constraint_manager_tests): Run it.
* constraint-manager.h (bounded_range::singleton_p): New.
(constraint_manager::impossible_derived_conditions_p): New decl.
* region-model.cc (region_model::get_rvalue_1): Handle
BIT_AND_EXPR, BIT_IOR_EXPR, and BIT_XOR_EXPR.

gcc/testsuite/ChangeLog:
PR analyzer/108806
* gcc.dg/analyzer/null-deref-pr108806-qemu.c: New test.
* gcc.dg/analyzer/pr103217.c: Add -Wno-analyzer-too-complex.
* gcc.dg/analyzer/switch.c (test_bitmask_1): New.
(test_bitmask_2): New.
* gcc.dg/analyzer/uninit-pr108806-qemu.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
20 months agodoc: Reword how to get possible values of a parameter
Gerald Pfeifer [Thu, 16 Feb 2023 22:56:34 +0000 (23:56 +0100)]
doc: Reword how to get possible values of a parameter

gcc/ChangeLog:

* doc/invoke.texi (Optimize Options): Reword the explanation
getting minimal, maximal and default values of a parameter.

20 months agotestsuite, objective-c: Cater for Windows intptr type.
Iain Sandoe [Thu, 16 Feb 2023 16:18:11 +0000 (16:18 +0000)]
testsuite, objective-c: Cater for Windows intptr type.

This adjusts the diagnostic output matches to cater for the differences
in intptr types on Windows.

Patch from 'nightstrike'.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
gcc/testsuite/ChangeLog:

* objc.dg/proto-lossage-4.m: Amendn diagnostic matches for Windows.

20 months agoc++: TYPENAME_TYPE lookup ignoring non-types [PR107773]
Patrick Palka [Thu, 16 Feb 2023 16:12:19 +0000 (11:12 -0500)]
c++: TYPENAME_TYPE lookup ignoring non-types [PR107773]

Currently when resolving a TYPENAME_TYPE for 'typename T::m' via
make_typename_type, we consider only type bindings of 'm' and ignore
non-type ones.  But [temp.res.general]/3 says, in a note, "the usual
qualified name lookup ([basic.lookup.qual]) applies even in the presence
of 'typename'", and qualified name lookup doesn't discriminate between
type and non-type bindings.  So when resolving such a TYPENAME_TYPE
we want the lookup to consider all bindings.

An exception is when we have a TYPENAME_TYPE corresponding to the
qualifying scope of the :: scope resolution operator, such as 'T::type'
in 'T::type::m'.  In that case, [basic.lookup.qual]/1 applies, and
lookup for such a TYPENAME_TYPE must ignore non-type bindings.  So in
order to correctly handle all cases, make_typename_type needs an
additional flag controlling whether to restrict the lookup.

To that end this patch adds a new tsubst flag tf_qualifying_scope
denoting whether we're substituting the LHS of the :: operator,
which make_typename_type will look for to conditionally restrict the
lookup to type bindings (by default we want to consider all bindings).
So in contexts such as substituting into the scope of TYPENAME_TYPE,
SCOPE_REF or USING_DECL we simply pass tf_qualifying_scope to the
relevant tsubst / tsubst_copy call, and if that scope is a TYPENAME_TYPE
then make_typename_type will restrict the lookup accordingly.  This flag
is intended to apply only to overall scope (TYPENAME_TYPE or not) so we
must be careful to clear the flag to avoid propagating it when recursing
into sub-trees of the scope.

PR c++/107773

gcc/cp/ChangeLog:

* cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
* decl.cc (make_typename_type): Use lookup_member instead of
lookup_field.  If tf_qualifying_scope is set, pass want_type=true
instead of =false to lookup_member.  Generalize format specifier
in diagnostic to handle both type and non-type bindings.
* pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope.  Tidy
the function.
(tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
substituting USING_DECL_SCOPE.
(tsubst): Clear tf_qualifying_scope right away and remember if
it was set.  Do the same for tf_tst_ok sooner.
<case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
TYPE_CONTEXT.  Pass tf_qualifying_scope to make_typename_type
if it was set.
(tsubst_qualified_id): Set tf_qualifying_scope when substituting
the scope.
(tsubst_copy): Clear tf_qualifying_scope and remember if it was
set.
<case SCOPE_REF>: Set tf_qualifying_scope when substituting the
scope.
<case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
* search.cc (lookup_member): Document default argument.

gcc/testsuite/ChangeLog:

* g++.dg/template/typename24.C: New test.
* g++.dg/template/typename25.C: New test.
* g++.dg/template/typename25a.C: New test.
* g++.dg/template/typename26.C: New test.

20 months agoMAINTAINERS: stepping down from my positions
Martin Liska [Thu, 16 Feb 2023 15:50:38 +0000 (16:50 +0100)]
MAINTAINERS: stepping down from my positions

ChangeLog:

* MAINTAINERS: I'm stepping down from my positions.

20 months agodon't declare header-defined functions both static and inline
Patrick Palka [Thu, 16 Feb 2023 15:30:20 +0000 (10:30 -0500)]
don't declare header-defined functions both static and inline

Many functions defined in our headers are declared 'static inline' which
is a C idiom whose use predates our move to C++ as the implementation
language.  But in C++ the inline keyword is more than just a compiler
hint, and is sufficient to give the function the intended semantics.
In fact declaring a function both static and inline is a pessimization
since static effectively disables the desired definition merging
behavior enabled by inline, and is also a source of (harmless) ODR
violations when a static inline function gets called from a non-static
inline one (such as tree_operand_check calling tree_operand_length).

This patch mechanically fixes the vast majority of occurrences of this
anti-pattern throughout the compiler's headers via the command line

  sed -i 's/^static inline/inline/g' gcc/*.h gcc/*/*.h

There's also a manual change to remove the redundant declarations
of is_ivar and lookup_category in gcc/objc/objc-act.cc which would
otherwise conflict with their modified definitions in objc-act.h
(due to the difference in staticness).

Besides fixing some ODR violations, this speeds up stage1 cc1plus by
about 2% and reduces the size of its text segment by 1.5MB.

gcc/ChangeLog:

* addresses.h: Mechanically drop 'static' from 'static inline'
functions via s/^static inline/inline/g.
* asan.h: Likewise.
* attribs.h: Likewise.
* basic-block.h: Likewise.
* bitmap.h: Likewise.
* cfghooks.h: Likewise.
* cfgloop.h: Likewise.
* cgraph.h: Likewise.
* cselib.h: Likewise.
* data-streamer.h: Likewise.
* debug.h: Likewise.
* df.h: Likewise.
* diagnostic.h: Likewise.
* dominance.h: Likewise.
* dumpfile.h: Likewise.
* emit-rtl.h: Likewise.
* except.h: Likewise.
* expmed.h: Likewise.
* expr.h: Likewise.
* fixed-value.h: Likewise.
* gengtype.h: Likewise.
* gimple-expr.h: Likewise.
* gimple-iterator.h: Likewise.
* gimple-predict.h: Likewise.
* gimple-range-fold.h: Likewise.
* gimple-ssa.h: Likewise.
* gimple.h: Likewise.
* graphite.h: Likewise.
* hard-reg-set.h: Likewise.
* hash-map.h: Likewise.
* hash-set.h: Likewise.
* hash-table.h: Likewise.
* hwint.h: Likewise.
* input.h: Likewise.
* insn-addr.h: Likewise.
* internal-fn.h: Likewise.
* ipa-fnsummary.h: Likewise.
* ipa-icf-gimple.h: Likewise.
* ipa-inline.h: Likewise.
* ipa-modref.h: Likewise.
* ipa-prop.h: Likewise.
* ira-int.h: Likewise.
* ira.h: Likewise.
* lra-int.h: Likewise.
* lra.h: Likewise.
* lto-streamer.h: Likewise.
* memmodel.h: Likewise.
* omp-general.h: Likewise.
* optabs-query.h: Likewise.
* optabs.h: Likewise.
* plugin.h: Likewise.
* pretty-print.h: Likewise.
* range.h: Likewise.
* read-md.h: Likewise.
* recog.h: Likewise.
* regs.h: Likewise.
* rtl-iter.h: Likewise.
* rtl.h: Likewise.
* sbitmap.h: Likewise.
* sched-int.h: Likewise.
* sel-sched-ir.h: Likewise.
* sese.h: Likewise.
* sparseset.h: Likewise.
* ssa-iterators.h: Likewise.
* system.h: Likewise.
* target-globals.h: Likewise.
* target.h: Likewise.
* timevar.h: Likewise.
* tree-chrec.h: Likewise.
* tree-data-ref.h: Likewise.
* tree-iterator.h: Likewise.
* tree-outof-ssa.h: Likewise.
* tree-phinodes.h: Likewise.
* tree-scalar-evolution.h: Likewise.
* tree-sra.h: Likewise.
* tree-ssa-alias.h: Likewise.
* tree-ssa-live.h: Likewise.
* tree-ssa-loop-manip.h: Likewise.
* tree-ssa-loop.h: Likewise.
* tree-ssa-operands.h: Likewise.
* tree-ssa-propagate.h: Likewise.
* tree-ssa-sccvn.h: Likewise.
* tree-ssa.h: Likewise.
* tree-ssanames.h: Likewise.
* tree-streamer.h: Likewise.
* tree-switch-conversion.h: Likewise.
* tree-vectorizer.h: Likewise.
* tree.h: Likewise.
* wide-int.h: Likewise.

gcc/c-family/ChangeLog:

* c-common.h: Mechanically drop static from static inline
functions via s/^static inline/inline/g.

gcc/c/ChangeLog:

* c-parser.h: Mechanically drop static from static inline
functions via s/^static inline/inline/g.

gcc/cp/ChangeLog:

* cp-tree.h: Mechanically drop static from static inline
functions via s/^static inline/inline/g.

gcc/fortran/ChangeLog:

* gfortran.h: Mechanically drop static from static inline
functions via s/^static inline/inline/g.

gcc/jit/ChangeLog:

* jit-dejagnu.h: Mechanically drop static from static inline
functions via s/^static inline/inline/g.
* jit-recording.h: Likewise.

gcc/objc/ChangeLog:

* objc-act.h: Mechanically drop static from static inline
functions via s/^static inline/inline/g.
* objc-map.h: Likewise.
* objc-act.cc: Remove the redundant redeclarations of is_ivar
and lookup_category.

20 months agolibstdc++: Fix incorrect function call in -ffast-math optimization
Matthias Kretz [Fri, 3 Feb 2023 16:47:05 +0000 (17:47 +0100)]
libstdc++: Fix incorrect function call in -ffast-math optimization

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* include/experimental/bits/simd_math.h (__hypot): Bitcasting
between scalars requires the __bit_cast helper function instead
of simd_bit_cast.

20 months agolibstdc++: Fix incorrect __builtin_is_constant_evaluated calls
Matthias Kretz [Thu, 2 Feb 2023 11:29:33 +0000 (12:29 +0100)]
libstdc++: Fix incorrect __builtin_is_constant_evaluated calls

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* include/experimental/bits/simd_x86.h
(_SimdImplX86::_S_not_equal_to, _SimdImplX86::_S_less)
(_SimdImplX86::_S_less_equal): Do not call
__builtin_is_constant_evaluated in constexpr-if.

20 months agolibstdc++: printf format string fix in testsuite
Matthias Kretz [Thu, 2 Feb 2023 11:28:39 +0000 (12:28 +0100)]
libstdc++: printf format string fix in testsuite

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* testsuite/experimental/simd/tests/bits/verify.h
(verify::verify): Use %zx for size_t in format string.

20 months agolibstdc++: Use a PCH to speed up check-simd
Matthias Kretz [Thu, 2 Feb 2023 11:26:35 +0000 (12:26 +0100)]
libstdc++: Use a PCH to speed up check-simd

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* testsuite/experimental/simd/generate_makefile.sh: Generate and
pre-compile pch.h, which includes all headers that do not depend
on command-line macros.
* testsuite/experimental/simd/tests/bits/main.h: New file.
(iterate_abis, main): Moved from verify.h.
* testsuite/experimental/simd/tests/bits/verify.h
(iterate_abis, main): Moved to main.h.
* testsuite/experimental/simd/tests/bits/conversions.h: Add
include guard.
(genHalfBits): Simplify.
* testsuite/experimental/simd/tests/bits/make_vec.h: Add include
guard.
(make_alternating_mask): Moved from mask_loadstore.
* testsuite/experimental/simd/tests/bits/mathreference.h: Add
include guard.
* testsuite/experimental/simd/tests/bits/test_values.h: Ditto.
* testsuite/experimental/simd/tests/mask_loadstore.cc
(make_mask, make_alternating_mask): Removed.
* testsuite/experimental/simd/tests/mask_reductions.cc: Ditto.
* testsuite/experimental/simd/tests/operators.cc (genHalfBits):
Removed.
* testsuite/experimental/simd/tests/abs.cc: Only include
bits/main.h.
Ditto.
* testsuite/experimental/simd/tests/algorithms.cc: Ditto.
* testsuite/experimental/simd/tests/broadcast.cc: Ditto.
* testsuite/experimental/simd/tests/casts.cc: Ditto.
* testsuite/experimental/simd/tests/fpclassify.cc: Ditto.
* testsuite/experimental/simd/tests/frexp.cc: Ditto.
* testsuite/experimental/simd/tests/generator.cc: Ditto.
* testsuite/experimental/simd/tests/hypot3_fma.cc: Ditto.
* testsuite/experimental/simd/tests/integer_operators.cc: Ditto.
* testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
* testsuite/experimental/simd/tests/loadstore.cc: Ditto.
* testsuite/experimental/simd/tests/logarithm.cc: Ditto.
* testsuite/experimental/simd/tests/mask_broadcast.cc: Ditto.
* testsuite/experimental/simd/tests/mask_conversions.cc: Ditto.
* testsuite/experimental/simd/tests/mask_implicit_cvt.cc: Ditto.
* testsuite/experimental/simd/tests/mask_operator_cvt.cc: Ditto.
* testsuite/experimental/simd/tests/mask_operators.cc: Ditto.
* testsuite/experimental/simd/tests/math_1arg.cc: Ditto.
* testsuite/experimental/simd/tests/math_2arg.cc: Ditto.
* testsuite/experimental/simd/tests/operator_cvt.cc: Ditto.
* testsuite/experimental/simd/tests/reductions.cc: Ditto.
* testsuite/experimental/simd/tests/remqo.cc: Ditto.
* testsuite/experimental/simd/tests/simd.cc: Ditto.
* testsuite/experimental/simd/tests/sincos.cc: Ditto.
* testsuite/experimental/simd/tests/split_concat.cc: Ditto.
* testsuite/experimental/simd/tests/splits.cc: Ditto.
* testsuite/experimental/simd/tests/trigonometric.cc: Ditto.
* testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Ditto.
* testsuite/experimental/simd/tests/where.cc: Ditto.

20 months agolibstdc++: Document timeout and timeout-factor of simd tests
Matthias Kretz [Thu, 2 Feb 2023 09:48:10 +0000 (10:48 +0100)]
libstdc++: Document timeout and timeout-factor of simd tests

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* testsuite/experimental/simd/README.md: Document the timeout
and timeout-factor directives. Minor typo fixed.

20 months agolibstdc++: Annotate most lambdas with always_inline
Matthias Kretz [Sat, 14 Jan 2023 16:07:59 +0000 (17:07 +0100)]
libstdc++: Annotate most lambdas with always_inline

All of the annotated lambdas are simply a necessary means for
implementing these functions and should never result in an actual
function call. Many of these lambdas would go away if C++ had better
language support for packs.

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

PR libstdc++/108030
* include/experimental/bits/simd_detail.h: Define
_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA.
* include/experimental/bits/simd.h: Annotate lambdas with
_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA.
* include/experimental/bits/simd_builtin.h: Ditto.
* include/experimental/bits/simd_converter.h: Ditto.
* include/experimental/bits/simd_fixed_size.h: Ditto.
* include/experimental/bits/simd_math.h: Ditto.
* include/experimental/bits/simd_neon.h: Ditto.
* include/experimental/bits/simd_x86.h: Ditto.

20 months agolibstdc++: Ensure __builtin_constant_p isn't lost on the way
Matthias Kretz [Fri, 13 Jan 2023 15:20:36 +0000 (16:20 +0100)]
libstdc++: Ensure __builtin_constant_p isn't lost on the way

The more expensive code path should only be taken if it can be optimized
away.

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* include/experimental/bits/simd.h
(_SimdWrapper::_M_is_constprop_none_of)
(_SimdWrapper::_M_is_constprop_all_of): Return false unless the
computed result still satisfies __builtin_constant_p.

20 months agolibstdc++: Replace non-ascii character in test
Jonathan Wakely [Thu, 16 Feb 2023 14:41:17 +0000 (14:41 +0000)]
libstdc++: Replace non-ascii character in test

This ensures the test will work with -fexec-charset=ascii.

libstdc++-v3/ChangeLog:

* testsuite/std/format/arguments/lwg3810.cc: Replace UTF-8
ellipsis character.

20 months agolibstdc++: Implement <experimental/synchronized_value> (P0290)
Jonathan Wakely [Wed, 15 Feb 2023 15:07:15 +0000 (15:07 +0000)]
libstdc++: Implement <experimental/synchronized_value> (P0290)

This was approved for the Concurrency TS v2 in Issaquah.

Although the TS is based on C++20, this enables the new header for C++17
as well. This will make it available to more users, and I hope that will
get more feedback on the feature.

libstdc++-v3/ChangeLog:

* include/Makefile.am: Add new header.
* include/Makefile.in: Regenerate.
* include/experimental/synchronized_value: New file.
* testsuite/experimental/synchronized_value.cc: New test.

20 months agolibstdc++: Fix name of <experimental/optional> in comment
Jonathan Wakely [Wed, 15 Feb 2023 13:29:56 +0000 (13:29 +0000)]
libstdc++: Fix name of <experimental/optional> in comment

libstdc++-v3/ChangeLog:

* include/experimental/optional: Fix header name in comment.

20 months agolibstdc++: Enable CTAD for std::basic_format_args (LWG 3810)
Jonathan Wakely [Mon, 13 Feb 2023 12:22:00 +0000 (12:22 +0000)]
libstdc++: Enable CTAD for std::basic_format_args (LWG 3810)

This was just approved in Issaquah.

libstdc++-v3/ChangeLog:

* include/std/format (__format::_Arg_store): New class template.
(basic_format_args): Remove nested type _Store and add deduction
guide from _Arg_store.
(basic_format_arg, make_format_args): Adjust.
* testsuite/std/format/arguments/lwg3810.cc: New test.

20 months agolibstdc++: Implement P2255R2 dangling checks for std::pair
Jonathan Wakely [Wed, 8 Feb 2023 12:58:45 +0000 (12:58 +0000)]
libstdc++: Implement P2255R2 dangling checks for std::pair

This uses the new __reference_constructs_from_temporary built-in to
identify when a std::pair constructor will bind a reference to a
temporary that goes out of scope at the end of the constructor.  For
example, std::pair<const long&, int> p(1, 2); will call the pair<const
long&, int>::pair(U1&&, U2&&) constructor with U1=int and U2=int. In the
constructor body a temporary long will be created and the p.first member
will bind to that temporary. When the constructor returns, the reference
is immediately dangling. P2255 requires the constructor to be deleted to
prevent this bug.

Although P2255 was approved for C++23, it fixes a longstanding LWG issue
in older standards, and it turns silent runtime undefined behaviour into
a compilation error. Because of that, the dangling checks are applied
all the way back to C++98.  However, if these changes cause too much
code to be rejected (e.g. in cases where the dangling reference is never
used after the constructor returns) then we can consider removing them
for C++20 and older standards.

The affected constructors are deleted for C++20 and later, when concepts
are available to simplify the constructor constraints. For C++17 and
earlier the overload sets are complicated and awkward to maintain, so
the dangling checks are done in static assertions in the constructor
bodies, instead of being SFINAE-friendly constraints. The pre-C++17
assertions are only enabled for Debug Mode, to avoid introducing a
breaking change in Stage 4. We should consider enabling them by default
in Stage 1 for GCC 14.

libstdc++-v3/ChangeLog:

* include/bits/stl_pair.h (pair) [C++20]: Add non-dangling
constraints to constructors and add deleted overloads for the
dangling cases, as per P2255R2.
(pair) [!C++20 && _GLIBCXX_DEBUG]: Add static assertions to
make dangling cases ill-formed.
* testsuite/20_util/pair/dangling_ref.cc: New test.

20 months agotree-ssa-dse: Fix up handling of lhs of internal calls [PR108657]
Jakub Jelinek [Thu, 16 Feb 2023 14:35:05 +0000 (15:35 +0100)]
tree-ssa-dse: Fix up handling of lhs of internal calls [PR108657]

The r13-1778 PR106378 tree-ssa-dse change didn't just add special support
for IFN_LEN_STORE and IFN_MASK_STORE internal function calls as I believe
was intended, but given that the function was
if (is builtin) { ... }
else if (lhs present and non-SSA_NAME) { ... }
return false;
and it added a new
else if (is internal builtin) { ... }
in between the two, the last if used to be done before on all stmts
with non-SSA_NAME lhs except for calls to builtin functions, but newly
isn't done also for calls to internal functions.  In the testcase
the important internal function is .DEFERRED_INIT, which often has
non-SSA_NAME lhs, and the change resulted in them no longer being DSEd,
so a block with nothing in it left but var = .DEFERRED_INIT () and
var = {CLOBBER} was unrolled several times.

The following patch does the lhs handling for all stmts with non-SSA_NAME lhs
unless initialize_ao_ref_for_dse handled those specially already and
returned (which is the case for various mem* builtins which don't have
such lhs, for some cases of calloc which again is fine,and since r13-1778
also for IFN_LEN_STORE call and some IFN_MASK_STORE calls.
As IFN_MASK_STORE doesn't have a lhs, the break for the !may_def_ok case
doesn't seem to change anything, and because we've handled internal fns
that way in the past, I think it is the right thing to do that again.
That said, if it is inappropriate for some new ifn, I guess it could
be added to the switch and just return false; for it instead of break;.

2023-02-16  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/108657
* tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
exists and is not a SSA_NAME, call ao_ref_init even if the stmt
is a call to internal or builtin function.

* gcc.dg/pr108657.c: New test.

20 months agolibstdc++: Make names_pstl.cc require et tbb_backend
Jonathan Wakely [Thu, 16 Feb 2023 12:18:25 +0000 (12:18 +0000)]
libstdc++: Make names_pstl.cc require et tbb_backend

The https://github.com/oneapi-src/oneTBB/pull/833 fix is needed for TBB
headers to avoid an error with GCC 13. The new names_pstl.cc test needs
to check effective target tbb_backend so that it's UNSUPPORTED on
systems without fixed headers.

libstdc++-v3/ChangeLog:

* testsuite/17_intro/names_pstl.cc: Require et tbb_backend.

20 months agodoc: Suggest fix for -Woverloaded-virtual warnings
Jonathan Wakely [Wed, 15 Feb 2023 13:32:57 +0000 (13:32 +0000)]
doc: Suggest fix for -Woverloaded-virtual warnings

Users are confused about what this warning means, so add a suggested
solution to the documentation.

gcc/ChangeLog:

* doc/invoke.texi (C++ Dialect Options): Suggest adding a
using-declaration to unhide functions.

20 months agolibstdc++: Fix non-reserved names in <ext/throw_allocator.h>
Jonathan Wakely [Thu, 16 Feb 2023 11:32:00 +0000 (11:32 +0000)]
libstdc++: Fix non-reserved names in <ext/throw_allocator.h>

libstdc++-v3/ChangeLog:

* include/ext/throw_allocator.h: Use reserved names for
parameters.

20 months agolibstdc++: Add missing space after effective-target name in test
Jonathan Wakely [Thu, 16 Feb 2023 11:40:35 +0000 (11:40 +0000)]
libstdc++: Add missing space after effective-target name in test

libstdc++-v3/ChangeLog:

* testsuite/17_intro/names_pstl.cc: Add space after effective
target name.

20 months agolibstdc++: Fix non-reserved names in PSTL headers
Jonathan Wakely [Sat, 11 Feb 2023 00:24:47 +0000 (00:24 +0000)]
libstdc++: Fix non-reserved names in PSTL headers

libstdc++-v3/ChangeLog:

* include/pstl/algorithm_fwd.h (__pattern_search_n)
(__brick_unique_copy, __brick_adjacent_find)
(__brick_generate_n, __pattern_generate_n): Use reserved names
for parameters.
* include/pstl/algorithm_impl.h (__brick_unique_copy)
(__pattern_reverse, __brick_generate_n): Likewise.
* include/pstl/execution_impl.h (__prefer_unsequenced_tag)
(__prefer_parallel_tag): Likewise.
* include/pstl/glue_algorithm_impl.h (transform): Likewise.
* include/pstl/glue_numeric_defs.h (adjacent_difference):
Likewise.
* include/pstl/numeric_impl.h (__brick_adjacent_difference):
Likewise.
* include/pstl/parallel_backend_tbb.h (__merge_func): Likewise.
* include/pstl/unseq_backend_simd.h (_Combiner)
(__simd_min_element, __simd_minmax_element): Likewise.
* testsuite/17_intro/names_pstl.cc: New test.

20 months agolibgomp: Fix up some typos in libgomp.texi
Jakub Jelinek [Thu, 16 Feb 2023 11:15:03 +0000 (12:15 +0100)]
libgomp: Fix up some typos in libgomp.texi

I decided to check for repeated the the in libgomp and noticed
there are several occurrences of a typo theads rather than threads
in libgomp.texi.

2023-02-16  Jakub Jelinek  <jakub@redhat.com>

* libgomp.texi: Fix typos - theads -> threads.

20 months agolibgomp: Fix comment typo
Jakub Jelinek [Thu, 16 Feb 2023 11:10:19 +0000 (12:10 +0100)]
libgomp: Fix comment typo

I saw
FAIL: libgomp.fortran/target-nowait-array-section.f90   -O  execution test
in my last x86_64-linux bootstrap.  From quick skimming, it might be just
unreliable test, which assumes that asynchronous execution wouldn't produce
ordered sequence, but can't it happen even with asynchronous execution?

That said, while skimming the test, I've noticed a comment typo and
this patch fixes that up.

2023-02-16  Jakub Jelinek  <jakub@redhat.com>

* testsuite/libgomp.fortran/target-nowait-array-section.f90: Fix
comment typo and improve its wording.

20 months agolibstdc++: Fix uses of non-reserved names in headers
Jonathan Wakely [Fri, 10 Feb 2023 23:16:15 +0000 (23:16 +0000)]
libstdc++: Fix uses of non-reserved names in headers

The non-reserved names 'val' and 'dest' were being used in our headers
but haven't been added to the 17_intro/names.cc test. That's because
they are used by <asm-generic/posix_types.h> and <netinet/tcp.h>
respecitvely on glibc-based systems.

libstdc++-v3/ChangeLog:

* include/bits/fs_ops.h (create_directory): Use reserved name
for parameter.
* include/bits/ranges_algo.h (__contains_subrange_fn):
Likewise.
* include/bits/regex_automaton.h (_State_base::_M_print):
Likewise.
* include/bits/regex_automaton.tcc(_State_base::_M_print):
Likewise.
* include/bits/regex_scanner.tcc(_Scanner::_M_print): Likewise.
* include/experimental/bits/fs_ops.h (create_directory):
Likewise.
* include/std/mutex (timed_mutex::_M_clocklock): Likewise.
(recursive_timed_mutex:_M_clocklock): Likewise.
* include/std/tuple (basic_common_reference): Likewise.
* libsupc++/cxxabi_init_exception.h
(__cxa_init_primary_exception): Likewise.
* testsuite/17_intro/names.cc: Add checks.

20 months agoreassoc: Fix up (ab) handling in eliminate_redundant_comparison [PR108783]
Jakub Jelinek [Thu, 16 Feb 2023 09:41:18 +0000 (10:41 +0100)]
reassoc: Fix up (ab) handling in eliminate_redundant_comparison [PR108783]

The following testcase ICEs because eliminate_redundant_comparison sees
redundant comparisons in &&/|| where the comparison has (ab) SSA_NAME,
maybe_fold_{and,or}_comparisons optimizes them into a single comparison
and build_and_add_sum emits a new comparison close to the definition
operands, which in this case is before a returns_twice call (which is
invalid).  Generally reassoc just punts on (ab) SSA_NAMEs, declares them
non-reassociable etc., so the second half of this patch does that.

Though we can do better in this case; the function has special code
when maybe_fold_{and,or}_comparisons returns INTEGER_CST (false/true)
or when what it returns is the same as curr->op (the first of the
comparisons we are considering) - in that case we just remove the
second one and keep the first one.  The reason it doesn't match is that
curr->op is a SSA_NAME whose SSA_NAME_DEF_STMT is checked to be a
comparison, in this case _42 = a_1(ab) != 0 and the other comparison
is also like that.  maybe_fold_{and,or}_comparisons looks through the
definitions though and so returns a_1(ab) != 0 as tree.
So the first part of the patch checks whether that returned comparison
isn't the same as the curr->op comparison and if yes, it just overrides
t back to curr->op so that its SSA_NAME is reused.  In that case we can
handle even (ab) in {,new}op{1,2} because we don't create a new comparison
of that, just keep using the existing one.  And t can't be (ab) because
otherwise it wouldn't be considered a reassociable operand.

The (ab) checks are needed say when we have a_1(ab) == 42 || a_1(ab) > 42
kind of comparisons where maybe_fold_{and,or}_comparisons returns a new
comparison not existing in the IL yet.

2023-02-16  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/108783
* tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
t to curr->op.  Otherwise, punt if either newop1 or newop2 are
SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.

* gcc.c-torture/compile/pr108783.c: New test.

20 months agotree-optimization/108791 - checking ICE with sloppy ADDR_EXPR
Richard Biener [Wed, 15 Feb 2023 13:00:21 +0000 (14:00 +0100)]
tree-optimization/108791 - checking ICE with sloppy ADDR_EXPR

The following fixes a checking ICE by choosing a more appropriate
type for an ADDR_EXPR built by forwprop.

PR tree-optimization/108791
* tree-ssa-forwprop.cc (optimize_vector_load): Build
the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
type.

* gcc.dg/torture/pr108791.c: New testcase.

20 months agoobjs-gcc.sh: Only bootstrap if source-directory contains gcc
Hans-Peter Nilsson [Tue, 14 Feb 2023 17:29:50 +0000 (18:29 +0100)]
objs-gcc.sh: Only bootstrap if source-directory contains gcc

I use objs-gcc.sh as a preparatory step before calling
btest-gcc.sh in my scripts, for example my cris-elf
autotester.  I thought, why not use it for native builds
too.  Except that use, with binutils release-style tarballs
and a x86_64-pc-linux-gnu host, was broken.  Now that I look
at it, the script seems to have aged poorly...  Still,
there's a need for such a script to install stuff needed for
btest-gcc.sh (and to fix up stuff if needed), and this can
still be that script.  So, I prefer to fix show-stoppers for
common uses, while taking care to retain compatibility for
use that could possibly still work, with current sources.

A long time ago (before 2011, but after this script was
created in 2002, and used for a few years), the binutils
(and gdb and gcc) toplevel Makefile may have had a bootstrap
target that worked with binutils but didn't require gcc
sources to be present.  Now, you'll get an error (see
configure.ac line 1366 and on).  Let's just build the
default make-target when "bootstrap" is known to fail.
An alternative would be to fold this native
non-i686-pc-linux-gnu clause into the native
i686-pc-linux-gnu clause, as that seems to have been
originally intended as *the* single native clause, but
that'd require further edits (e.g. to remove install-dejagnu
and make gdb build conditional on gdb sources presence, to
work with binutils tarballs, and I'd also then prefer to
build not just ld, but also gas and binutils).

As it's a minimal obvious change required for current native
use with release-tarballs and git-checkout use(*), I'm
installing this as obvious.

*) Native i686-pc-linux-gnu remains broken for other use
than specially constructed combined trees where dejagnu is
included at the toplevel (i.e. historic Cygnus devo-type).

contrib/regression:
* objs-gcc.sh: Only bootstrap if source-directory contains gcc.

20 months agotestsuite: Add CRIS to check_effective_target_lra non-LRA list
Hans-Peter Nilsson [Thu, 16 Feb 2023 00:22:15 +0000 (01:22 +0100)]
testsuite: Add CRIS to check_effective_target_lra non-LRA list

gcc/testsuite:

* lib/target-supports.exp (check_effective_target_lra): Add CRIS
as a non-LRA target.

20 months agoDaily bump.
GCC Administrator [Thu, 16 Feb 2023 00:18:19 +0000 (00:18 +0000)]
Daily bump.

20 months agoFix PR target/90458
Eric Botcazou [Wed, 15 Feb 2023 22:32:12 +0000 (23:32 +0100)]
Fix PR target/90458

This is the incompatibility of -fstack-clash-protection with Windows SEH.
Now the Windows ports always enable TARGET_STACK_PROBE, which means that
the stack is always probed (out of line) so -fstack-clash-protection does
nothing more.

gcc/
PR target/90458
* config/i386/i386.cc (ix86_compute_frame_layout): Disable the
effects of -fstack-clash-protection for TARGET_STACK_PROBE.
(ix86_expand_prologue): Likewise.

20 months agoFix an accidental double space
Jan-Benedict Glaw [Wed, 15 Feb 2023 22:00:46 +0000 (23:00 +0100)]
Fix an accidental double space

gcc/
* config/bpf/bpf.cc (bpf_option_override): Fix doubled space.

20 months agoFortran: error recovery on checking procedure argument intent [PR103608]
Steve Kargl [Wed, 15 Feb 2023 21:40:37 +0000 (22:40 +0100)]
Fortran: error recovery on checking procedure argument intent [PR103608]

gcc/fortran/ChangeLog:

PR fortran/103608
* frontend-passes.cc (do_intent): Catch NULL pointer dereference on
reference to invalid formal argument.

gcc/testsuite/ChangeLog:

PR fortran/103608
* gfortran.dg/pr103608.f90: New test.

20 months agoFortran: error recovery on invalid assumed size reference [PR104554]
Steve Kargl [Wed, 15 Feb 2023 21:20:22 +0000 (22:20 +0100)]
Fortran: error recovery on invalid assumed size reference [PR104554]

gcc/fortran/ChangeLog:

PR fortran/104554
* resolve.cc (check_assumed_size_reference): Avoid NULL pointer
dereference.

gcc/testsuite/ChangeLog:

PR fortran/104554
* gfortran.dg/pr104554.f90: New test.

20 months agoi386: Relax extract location operand mode requirements
Uros Bizjak [Wed, 15 Feb 2023 20:34:59 +0000 (21:34 +0100)]
i386: Relax extract location operand mode requirements

There is no requirement on the mode of the location operand, so any
supported integer mode is valid.  We can relax extract location
operand mode requirement of other patterns involving zero_extract RTX.

2023-02-15  UroÅ¡ Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:

* config/i386/i386.md (*cmpqi_ext<mode>_1): Use
int248_register_operand predicate in zero_extract sub-RTX.
(*cmpqi_ext<mode>_2): Ditto.
(*cmpqi_ext<mode>_3): Ditto.
(*cmpqi_ext<mode>_4): Ditto.
(*extzvqi_mem_rex64): Ditto.
(*extzvqi): Ditto.
(*insvqi_1_mem_rex64): Ditto.
(@insv<mode>_1): Ditto.
(*insvqi_1): Ditto.
(*insvqi_2): Ditto.
(*insvqi_3): Ditto.
(*extendqi<SWI24:mode>_ext_1): Ditto.
(*addqi_ext<mode>_1): Ditto.
(*addqi_ext<mode>_2): Ditto.
(*subqi_ext<mode>_2): Ditto.
(*testqi_ext<mode>_1): Ditto.
(*testqi_ext<mode>_2): Ditto.
(*andqi_ext<mode>_1): Ditto.
(*andqi_ext<mode>_1_cc): Ditto.
(*andqi_ext<mode>_2): Ditto.
(*<any_or:code>qi_ext<mode>_1): Ditto.
(*<any_or:code>qi_ext<mode>_2): Ditto.
(*xorqi_ext<mode>_1_cc): Ditto.
(*negqi_ext<mode>_2): Ditto.
(*ashlqi_ext<mode>_2): Ditto.
(*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.

20 months agoanalyzer: fix uninit false +ves [PR108664,PR108666,PR108725]
David Malcolm [Wed, 15 Feb 2023 19:52:02 +0000 (14:52 -0500)]
analyzer: fix uninit false +ves [PR108664,PR108666,PR108725]

This patch updates poisoned_value_diagnostic so that, where possible,
it checks to see if the value is still poisoned along the execution
path seen during feasibility analysis, rather than just that seen
in the exploded graph.

Integration testing shows this reduction in the number of
false positives:
  -Wanalyzer-use-of-uninitialized-value: 191 -> 153 (-38)
where the changes happen in:
      coreutils-9.1: 34 -> 20 (-14)
         qemu-7.2.0: 78 -> 54 (-24)

gcc/analyzer/ChangeLog:
PR analyzer/108664
PR analyzer/108666
PR analyzer/108725
* diagnostic-manager.cc (epath_finder::get_best_epath): Add
"target_stmt" param.
(epath_finder::explore_feasible_paths): Likewise.
(epath_finder::process_worklist_item): Likewise.
(saved_diagnostic::calc_best_epath): Pass m_stmt to
epath_finder::get_best_epath.
* engine.cc (feasibility_state::maybe_update_for_edge): Move
per-stmt logic to...
(feasibility_state::update_for_stmt): ...this new function.
* exploded-graph.h (feasibility_state::update_for_stmt): New decl.
* feasible-graph.cc (feasible_node::get_state_at_stmt): New.
* feasible-graph.h: Include "analyzer/exploded-graph.h".
(feasible_node::get_state_at_stmt): New decl.
* infinite-recursion.cc
(infinite_recursion_diagnostic::check_valid_fpath_p): Update for
vfunc signature change.
* pending-diagnostic.h (pending_diagnostic::check_valid_fpath_p):
Convert first param to a reference.  Add stmt param.
* region-model.cc: Include "analyzer/feasible-graph.h".
(poisoned_value_diagnostic::poisoned_value_diagnostic): Add
"check_expr" param.
(poisoned_value_diagnostic::check_valid_fpath_p): New.
(poisoned_value_diagnostic::m_check_expr): New field.
(region_model::check_for_poison): Attempt to supply a check_expr
to the diagnostic
(region_model::deref_rvalue): Add NULL for new check_expr param
of poisoned_value_diagnostic.
(region_model::get_or_create_region_for_heap_alloc): Don't reuse
regions that are marked as TOUCHED.

gcc/testsuite/ChangeLog:
PR analyzer/108664
PR analyzer/108666
PR analyzer/108725
* gcc.dg/analyzer/coreutils-cksum-pr108664.c: New test.
* gcc.dg/analyzer/coreutils-sum-pr108666.c: New test.
* gcc.dg/analyzer/torture/uninit-pr108725.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
20 months agotestsuite/i386: Cleanup target selectors in i386 target directory.
Uros Bizjak [Wed, 15 Feb 2023 15:30:51 +0000 (16:30 +0100)]
testsuite/i386: Cleanup target selectors in i386 target directory.

gcc/testsuite/ChangeLog:

2023-02-15  UroÅ¡ Bizjak  <ubizjak@gmail.com>

* g++.target/i386/empty-class2.C (dg-additional-options): Remove.
* gcc.target/i386/avx512fp16-reduce-op-2.c: Ditto.
* gcc.target/i386/pr99464.c: Ditto.
* gcc.target/i386/pr103541.c (dg-do): Compile for !ia32 target.
* gcc.target/i386/pr108774.c (dg-do): Compile for lp64 target.
* gcc.target/i386/pr85593.c (dg-do): Run for *-*-linux* target.
* gcc.target/i386/pr98063.c: Ditto.
* gcc.target/i386/pr90007.c (dg-do): Remove target selector.
* gcc.target/i386/pr92841-2.c (dg-do): Remove unneeded curly braces.
* gcc.target/i386/pr95464.c: Ditto.
* gcc.target/i386/pr99530-1.c (dg-do): Compile for *-*-linux* target.
* gcc.target/i386/pr99530-2.c: Ditto.
* gcc.target/i386/pr99530-3.c: Ditto.
* gcc.target/i386/pr99530-4.c: Ditto.
* gcc.target/i386/pr99530-5.c: Ditto.
* gcc.target/i386/pr99530-6.c: Ditto.
* gcc.target/i386/pr99531.c (dg-do): Compile for !ia32 target.

20 months agoi386: Rename extr_register_operand to int248_register_operand
Uros Bizjak [Wed, 15 Feb 2023 15:24:29 +0000 (16:24 +0100)]
i386: Rename extr_register_operand to int248_register_operand

No functional changes.

gcc/ChangeLog:

2023-02-15  UroÅ¡ Bizjak  <ubizjak@gmail.com>

* config/i386/predicates.md (int248_register_operand):
Rename from extr_register_operand.
* config/i386/i386.md (*extv<mode>): Update for renamed predicate.
(*extzx<mode>): Ditto.
(*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
(*ashl<mode>3_mask): Ditto.
(*<any_shiftrt:insn><mode>3_mask): Ditto.
(*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
(*<any_rotate:insn><mode>3_mask): Ditto.
(*<btsc><mode>_mask): Ditto.
(*btr<mode>_mask): Ditto.
(*jcc_bt<mode>_mask_1): Ditto.

20 months agoSpeedup DF dataflow solver
Richard Biener [Tue, 14 Feb 2023 13:46:47 +0000 (14:46 +0100)]
Speedup DF dataflow solver

The following makes sure to process blocks that follow the current
block in the iteration order in the same iteration and only postpone
blocks that would be visited earlier to the next iteration.

For the all.i testcase in PR26854 at -O2 this shaves off 50% of
the time to solve the DF RD problem, other problems also improve
but not as drastically.

PR middle-end/26854
* df-core.cc (df_worklist_propagate_forward): Put later
blocks on worklist and only earlier blocks on pending.
(df_worklist_propagate_backward): Likewise.
(df_worklist_dataflow_doublequeue): Change the iteration
to process new blocks in the same iteration if that
maintains the iteration order.

20 months agowarn-access: wrong -Wdangling-pointer with labels [PR106080]
Marek Polacek [Tue, 14 Feb 2023 22:05:44 +0000 (17:05 -0500)]
warn-access: wrong -Wdangling-pointer with labels [PR106080]

-Wdangling-pointer warns when the address of a label escapes.  This
causes grief in OCaml (<https://github.com/ocaml/ocaml/issues/11358>) as
well as in the kernel:
<https://bugzilla.kernel.org/show_bug.cgi?id=215851> because it uses

  #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })

to get the PC.  -Wdangling-pointer is documented to warn about pointers
to objects.  However, it uses is_auto_decl which checks DECL_P, but DECL_P
is also true for a label/enumerator/function declaration, none of which is
an object.  Rather, it should use auto_var_p which correctly checks VAR_P
and PARM_DECL.

PR middle-end/106080

gcc/ChangeLog:

* gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
instead.

gcc/testsuite/ChangeLog:

* c-c++-common/Wdangling-pointer-10.c: New test.
* c-c++-common/Wdangling-pointer-9.c: New test.

20 months agoRISC-V: Add vmacc vv c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:32:59 +0000 (22:32 +0800)]
RISC-V: Add vmacc vv c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmacc_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vv_tumu-3.C: New test.

20 months agoRISC-V: Add vmacc vx rv64 c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:30:39 +0000 (22:30 +0800)]
RISC-V: Add vmacc vx rv64 c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmacc_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tum_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tum_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tum_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tumu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tumu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tumu_rv64-3.C: New test.

20 months agoRISC-V: Add vmacc vx rv32 c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:29:36 +0000 (22:29 +0800)]
RISC-V: Add vmacc vx rv32 c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmacc_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tum_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tum_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tum_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tumu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tumu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmacc_vx_tumu_rv32-3.C: New test.

20 months agoRISC-V: Add vmadd vv c++ api test
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:28:24 +0000 (22:28 +0800)]
RISC-V: Add vmadd vv c++ api test

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmadd_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vv_tumu-3.C: New test.

20 months agoRISC-V: Add vmadd vx C++ api test
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:25:35 +0000 (22:25 +0800)]
RISC-V: Add vmadd vx C++ api test

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmadd_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tum_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tum_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tum_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tumu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tumu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmadd_vx_tumu_rv64-3.C: New test.

20 months agoRISC-V: Add vnmsac vv c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:23:55 +0000 (22:23 +0800)]
RISC-V: Add vnmsac vv c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vnmsac_vv-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vv_tumu-3.C: New test.

20 months agoRISC-V: Add vnmsac vx C++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:22:39 +0000 (22:22 +0800)]
RISC-V: Add vnmsac vx C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vnmsac_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tum_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tum_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tum_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tumu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tumu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tumu_rv32-3.C: New test.

20 months agoRISC-V: Add vnmsac vx rv64 C++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:21:37 +0000 (22:21 +0800)]
RISC-V: Add vnmsac vx rv64 C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vnmsac_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tum_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tum_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tum_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tumu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tumu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsac_vx_tumu_rv64-3.C: New test.

20 months agoRISC-V: Add vnmsub vv c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:18:23 +0000 (22:18 +0800)]
RISC-V: Add vnmsub vv c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vnmsub_vv-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vv_tumu-3.C: New test.

20 months agoRISC-V: Add vnmsub vx rv32 c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:17:18 +0000 (22:17 +0800)]
RISC-V: Add vnmsub vx rv32 c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vnmsub_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tum_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tum_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tum_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tumu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tumu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tumu_rv32-3.C: New test.

20 months agoRISC-V: Add vnmsub vx rv64 c++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:15:59 +0000 (22:15 +0800)]
RISC-V: Add vnmsub vx rv64 c++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vnmsub_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tum_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tum_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tum_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tumu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tumu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vnmsub_vx_tumu_rv64-3.C: New test.

20 months agoRISC-V: Add vwmacc vv C++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:14:23 +0000 (22:14 +0800)]
RISC-V: Add vwmacc vv C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vwmacc_vv-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vv_tumu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vv_tumu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vv_tumu-3.C: New test.

20 months agoRISC-V: Add vwmacc vx C++ api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:12:36 +0000 (22:12 +0800)]
RISC-V: Add vwmacc vx C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vwmacc_vx-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmacc_vx_tumu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccsu_vx_tumu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccu_vx_tumu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_mu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_mu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_mu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tu-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tum-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tum-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tum-3.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tumu-1.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tumu-2.C: New test.
* g++.target/riscv/rvv/base/vwmaccus_vx_tumu-3.C: New test.

20 months agoRISC-V: Add ternary constraint tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:08:13 +0000 (22:08 +0800)]
RISC-V: Add ternary constraint tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/ternop_vv_constraint-1.c: New test.
* gcc.target/riscv/rvv/base/ternop_vv_constraint-2.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-1.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-2.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-3.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-4.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-5.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-6.c: New test.
* gcc.target/riscv/rvv/base/ternop_vx_constraint-7.c: New test.

20 months agoRISC-V: Add vmacc vv c api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:06:04 +0000 (22:06 +0800)]
RISC-V: Add vmacc vv c api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmacc_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vv_tumu-3.c: New test.

20 months agoRISC-V: Add vmacc vx rv32 c api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:04:56 +0000 (22:04 +0800)]
RISC-V: Add vmacc vx rv32 c api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmacc_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tum_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tum_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tum_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tumu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tumu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tumu_rv32-3.c: New test.

20 months agoRISC-V: Add vmacc vx c api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:03:42 +0000 (22:03 +0800)]
RISC-V: Add vmacc vx c api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmacc_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tum_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tum_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tum_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tumu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tumu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmacc_vx_tumu_rv64-3.c: New test.

20 months agoRISC-V: Add vmadd vv C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:02:34 +0000 (22:02 +0800)]
RISC-V: Add vmadd vv C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmadd_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vv_tumu-3.c: New test.

20 months agoRISC-V: Add vmadd vx c api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 14:01:14 +0000 (22:01 +0800)]
RISC-V: Add vmadd vx c api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmadd_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tum_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tum_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tum_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tumu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tumu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tumu_rv32-3.c: New test.

20 months agoRISC-V: Add vmadd vx rv64 c api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:59:57 +0000 (21:59 +0800)]
RISC-V: Add vmadd vx rv64 c api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmadd_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tum_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tum_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tum_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tumu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tumu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmadd_vx_tumu_rv64-3.c: New test.

20 months agoRISC-V: Add vnmsac vv C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:58:29 +0000 (21:58 +0800)]
RISC-V: Add vnmsac vv C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vnmsac_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vv_tumu-3.c: New test.

20 months agoRISC-V: Add vnmsac vx C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:57:12 +0000 (21:57 +0800)]
RISC-V: Add vnmsac vx C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vnmsac_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tum_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tum_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tum_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tumu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tumu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tumu_rv32-3.c: New test.

20 months agoRISC-V: Add vnmsac rv64 C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:56:12 +0000 (21:56 +0800)]
RISC-V: Add vnmsac rv64 C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vnmsac_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tum_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tum_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tum_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tumu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tumu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsac_vx_tumu_rv64-3.c: New test.

20 months agoRISC-V: Add vnmsub vx rv32 C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:54:17 +0000 (21:54 +0800)]
RISC-V: Add vnmsub vx rv32 C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vnmsub_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tum_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tum_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tum_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tumu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tumu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tumu_rv32-3.c: New test.

20 months agoRISC-V: Add vnmsub vx rv64 C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:53:00 +0000 (21:53 +0800)]
RISC-V: Add vnmsub vx rv64 C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vnmsub_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tum_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tum_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tum_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tumu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tumu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vx_tumu_rv64-3.c: New test.

20 months agoRISC-V: Add vnmsub vv C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:48:26 +0000 (21:48 +0800)]
RISC-V: Add vnmsub vv C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vnmsub_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vnmsub_vv_tumu-3.c: New test.

20 months agoRISC-V: Add vwmacc vv C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:46:12 +0000 (21:46 +0800)]
RISC-V: Add vwmacc vv C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vwmacc_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vv_tumu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vv_tumu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vv_tumu-3.c: New test.

20 months agoRISC-V: Add vwmacc vx C api tests
Ju-Zhe Zhong [Tue, 14 Feb 2023 13:44:05 +0000 (21:44 +0800)]
RISC-V: Add vwmacc vx C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vwmacc_vx-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmacc_vx_tumu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccsu_vx_tumu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccu_vx_tumu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_m-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_m-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_m-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tu-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tum-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tum-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tum-3.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tumu-1.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tumu-2.c: New test.
* gcc.target/riscv/rvv/base/vwmaccus_vx_tumu-3.c: New test.

20 months agoRISC-V: Finish all integer C/C++ intrinsics
Ju-Zhe Zhong [Tue, 14 Feb 2023 09:24:04 +0000 (17:24 +0800)]
RISC-V: Finish all integer C/C++ intrinsics

gcc/ChangeLog:

* config/riscv/predicates.md: Refine codes.
* config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
* config/riscv/riscv-v.cc: Refine codes.
* config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
enum.
(class imac): New class.
(enum widen_ternop_type): New enum.
(class iwmac): New class.
(BASE): New class.
* config/riscv/riscv-vector-builtins-bases.h: Ditto.
* config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
(vnmsac): Ditto.
(vmadd): Ditto.
(vnmsub): Ditto.
(vwmacc): Ditto.
(vwmaccu): Ditto.
(vwmaccsu): Ditto.
(vwmaccus): Ditto.
* config/riscv/riscv-vector-builtins.cc
(function_builder::apply_predication): Adjust for multiply-add support.
(function_expander::add_vundef_operand): Refine codes.
(function_expander::use_ternop_insn): New function.
(function_expander::use_widen_ternop_insn): Ditto.
* config/riscv/riscv-vector-builtins.h: New function.
* config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
(pred_mul_<optab><mode>_undef_merge): Ditto.
(*pred_<madd_nmsub><mode>): Ditto.
(*pred_<macc_nmsac><mode>): Ditto.
(*pred_mul_<optab><mode>): Ditto.
(@pred_mul_<optab><mode>_scalar): Ditto.
(*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
(*pred_<madd_nmsub><mode>_scalar): Ditto.
(*pred_<macc_nmsac><mode>_scalar): Ditto.
(*pred_mul_<optab><mode>_scalar): Ditto.
(*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
(*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
(*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
(*pred_mul_<optab><mode>_extended_scalar): Ditto.
(@pred_widen_mul_plus<su><mode>): Ditto.
(@pred_widen_mul_plus<su><mode>_scalar): Ditto.
(@pred_widen_mul_plussu<mode>): Ditto.
(@pred_widen_mul_plussu<mode>_scalar): Ditto.
(@pred_widen_mul_plusus<mode>_scalar): Ditto.

20 months agoRISC-V: Add vmseq vv C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:39:03 +0000 (16:39 +0800)]
RISC-V: Add vmseq vv C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmseq_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vv_mu-3.C: New test.

20 months agoRISC-V: Add vmseq vx C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:37:55 +0000 (16:37 +0800)]
RISC-V: Add vmseq vx C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmseq_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmseq_vx_rv64-3.C: New test.

20 months agoRISC-V: Add vmsge vv C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:36:57 +0000 (16:36 +0800)]
RISC-V: Add vmsge vv C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsge_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vv_mu-3.C: New test.

20 months agoRISC-V: Add vmsge vx C++ api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:35:39 +0000 (16:35 +0800)]
RISC-V: Add vmsge vx C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsge_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsge_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgeu_vx_rv64-3.C: New test.

20 months agoRISC-V: Add vmsgt vv C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:34:31 +0000 (16:34 +0800)]
RISC-V: Add vmsgt vv C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsgt_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vv_mu-3.C: New test.

20 months agoRISC-V: Add vmsgt vx C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:33:33 +0000 (16:33 +0800)]
RISC-V: Add vmsgt vx C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsgt_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgt_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsgtu_vx_rv64-3.C: New test.

20 months agoRISC-V: Add vmsle vv C++ api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:32:23 +0000 (16:32 +0800)]
RISC-V: Add vmsle vv C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsle_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vv_mu-3.C: New test.

20 months agoRISC-V: Add vmsle vx C++ api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:31:09 +0000 (16:31 +0800)]
RISC-V: Add vmsle vx C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsle_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsle_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsleu_vx_rv64-3.C: New test.

20 months agoRISC-V: Add vmslt vv C++ api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:29:54 +0000 (16:29 +0800)]
RISC-V: Add vmslt vv C++ api tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmslt_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vv_mu-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vv_mu-3.C: New test.

20 months agoRISC-V: Add vmslt vx C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:28:38 +0000 (16:28 +0800)]
RISC-V: Add vmslt vx C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmslt_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmslt_vx_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsltu_vx_rv64-3.C: New test.

20 months agoRISC-V: Add vmsne vv C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:27:34 +0000 (16:27 +0800)]
RISC-V: Add vmsne vv C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsne_vv-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv_m-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv_m-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv_m-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv_mu-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv_mu-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vv_mu-3.C: New test.

20 months agoRISC-V: Add vmsne vx C++ tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:26:29 +0000 (16:26 +0800)]
RISC-V: Add vmsne vx C++ tests

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/vmsne_vx_m_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_m_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_m_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_m_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_m_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_m_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_mu_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_mu_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_mu_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_mu_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_mu_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_mu_rv64-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_rv32-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_rv32-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_rv32-3.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_rv64-1.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_rv64-2.C: New test.
* g++.target/riscv/rvv/base/vmsne_vx_rv64-3.C: New test.

20 months agoRISC-V: Add binop constraints tests for integer compare
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:25:22 +0000 (16:25 +0800)]
RISC-V: Add binop constraints tests for integer compare

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/binop_vv_constraint-2.c: New test.
* gcc.target/riscv/rvv/base/binop_vv_constraint-3.c: New test.
* gcc.target/riscv/rvv/base/binop_vv_constraint-4.c: New test.
* gcc.target/riscv/rvv/base/binop_vv_constraint-5.c: New test.
* gcc.target/riscv/rvv/base/binop_vv_constraint-6.c: New test.
* gcc.target/riscv/rvv/base/binop_vv_constraint-7.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-123.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-124.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-125.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-126.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-127.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-128.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-129.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-130.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-131.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-132.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-133.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-134.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-135.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-136.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-137.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-138.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-139.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-140.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-141.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-142.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-143.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-144.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-145.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-146.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-147.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-148.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-149.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-150.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-151.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-152.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-153.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-154.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-155.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-156.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-157.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-158.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-159.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-160.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-161.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-162.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-163.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-164.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-165.c: New test.
* gcc.target/riscv/rvv/base/binop_vx_constraint-166.c: New test.

20 months agoRISC-V: Add vmseq vv C api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:22:29 +0000 (16:22 +0800)]
RISC-V: Add vmseq vv C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmseq_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vv_mu-3.c: New test.

20 months agoRISC-V: Add vmseq vx C api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:21:12 +0000 (16:21 +0800)]
RISC-V: Add vmseq vx C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmseq_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmseq_vx_rv64-3.c: New test.

20 months agoRISC-V: Add vmsge vv C api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:04:41 +0000 (16:04 +0800)]
RISC-V: Add vmsge vv C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmsge_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vv_mu-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv_m-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv_m-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv_m-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv_mu-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv_mu-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vv_mu-3.c: New test.

20 months agoRISC-V: Add vmsge vx C api tests
Ju-Zhe Zhong [Mon, 13 Feb 2023 08:03:03 +0000 (16:03 +0800)]
RISC-V: Add vmsge vx C api tests

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/vmsge_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmsge_vx_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_m_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_m_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_m_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_m_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_m_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_m_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_mu_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_mu_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_mu_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_mu_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_mu_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_mu_rv64-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_rv32-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_rv32-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_rv32-3.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_rv64-1.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_rv64-2.c: New test.
* gcc.target/riscv/rvv/base/vmsgeu_vx_rv64-3.c: New test.

This page took 0.128836 seconds and 5 git commands to generate.