Skip to content
Snippets Groups Projects
  1. Sep 15, 2021
    • Richard Biener's avatar
      tree-optimization/102318 - reduction epilogue re-use · b6d8fa66
      Richard Biener authored
      This refines the fix for PR102226 to do the mode conversion
      from V2DI to VNx2DI separately from the sign-conversion, retaining
      the signedness of the saved accumulator as before the original fix.
      
      2021-09-15  Richard Biener <rguenther@suse.de>
      
      	PR tree-optimization/102318
      	* tree-vect-loop.c (vect_transform_cycle_phi): Revert
      	previous change and do the mode conversion separately from
      	the sign conversion.
      
      	* gcc.dg/vect/pr102318.c: New testcase.
      b6d8fa66
    • Hugo Beauzée-Luyssen's avatar
      libstdc++: Check for TLS support on mingw cross-compilers · cc1e2887
      Hugo Beauzée-Luyssen authored
      Native mingw builds enable TLS, but crosses don't because we don't use
      GCC_CHECK_TLS in the cross-compiler config.
      
      libstdc++-v3/ChangeLog:
      
      	* crossconfig.m4: Check for TLS support on mingw.
      	* configure: Regenerate.
      cc1e2887
    • liuhongt's avatar
      Output vextract{i,f}{32x4,64x2} for (vec_select:(reg:Vmode) idx) when byte_offset of idx % 16 == 0. · 243e0a5b
      liuhongt authored
      2020-09-13  Hongtao Liu  <hongtao.liu@intel.com>
      	    Peter Cordes  <peter@cordes.ca>
      gcc/ChangeLog:
      
      	PR target/91103
      	* config/i386/sse.md (extract_suf): Add V8SF/V8SI/V4DF/V4DI.
      	(*vec_extract<mode><ssescalarmodelower>_valign): Output
      	vextract{i,f}{32x4,64x2} instruction when byte_offset % 16 ==
      	0.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/91103
      	* gcc.target/i386/pr91103-1.c: Add extract tests.
      	* gcc.target/i386/pr91103-2.c: Ditto.
      243e0a5b
    • Thomas Schwinge's avatar
      Add OpenACC 'host_data' testing to 'gfortran.dg/goacc/unexpected-end.f90' · 8b69c481
      Thomas Schwinge authored
      Use underscore instead of space in 'host_data'.
      
      Follow-up to recent commit 33fdbbe4
      "Fortran: Add missing ST_OMP_END_SCOPE handling [PR102313]".
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/unexpected-end.f90: Add OpenACC 'host_data'
      	testing.
      8b69c481
    • Richard Biener's avatar
      Remove support for vax-openbsd · 947332a4
      Richard Biener authored
      This removes the support for vax-openbsd which has been discontinued
      after the OpenBSD 5.9 release and which has no supported gas or GNU ld
      configuration [anymore].  In particular this target does only support
      STABS debuginfo generation.
      
      2021-09-13  Richard Biener  <rguenther@suse.de>
      
      	* config.gcc: Remove vax-*-openbsd* configuration.
      
      contrib/
      	* config-list.mk: Remove vax-openbsd.
      947332a4
    • Richard Biener's avatar
      Remove m68k-openbsd support · 40c9541a
      Richard Biener authored
      This removes m68k-openbsd as a valid configuration, according
      to openbsd.org m68k-openbsd [on the mac] was discontinued after
      the 5.1 release.  The configuration is also not (or no longer)
      supported by gas and GNU ld so I could not figure whether it is still
      a.out (I suspect it is).  But first and foremost the target only supports
      STABS as a debugging format.
      
      2021-09-13  Richard Biener  <rguenther@suse.de>
      
      	* config.gcc: Remove m68k-openbsd.
      
      contrib/
      	* config-list.mk: Remove m68k-openbsd.
      40c9541a
    • Jason Merrill's avatar
      c++: don't predeclare std::type_info [PR48396] · a53781c8
      Jason Merrill authored
      We've always predeclared std::type_info, which has been wrong for a while,
      but now with modules it becomes more of a practical problem, if we want to
      declare it in the purview of a module.  So don't predeclare it.  For
      building up the type_info information to write out with the vtable, we can
      use void* instead of type_info*, since they already aren't the real types.
      
      	PR c++/48396
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (enum cp_tree_index): Remove CPTI_TYPE_INFO_PTR_TYPE.
      	(type_info_ptr_type): Remove.
      	* rtti.c (init_rtti_processing): Don't predeclare std::type_info.
      	(typeid_ok_p): Check for null const_type_info_type_node.
      	(type_info_ptr_type, get_void_tinfo_ptr): New fns.
      	(get_tinfo_decl_dynamic, get_tinfo_ptr): Use them.
      	(ptr_initializer, ptm_initializer, get_pseudo_ti_init): Use them.
      	(get_tinfo_desc): Use const_ptr_type_node.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/rtti/undeclared1.C: New test.
      a53781c8
    • Jason Merrill's avatar
      c++: correct object scope handling · ba9b07d0
      Jason Merrill authored
      The way cp_parser_lookup_name handles object scope (i.e. the scope on the
      RHS of a . or -> expression) is a bit subtle: before the lookup it's in
      parser->context->object type, and after the lookup it's in
      parser->object_scope.  But a couple of places that elide lookups were
      failing to do the same transform.
      
      I'm not aware of this breaking anything currently.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_template_name): Move object type.
      	(cp_parser_pre_parsed_nested_name_specifier): Likewise.
      ba9b07d0
    • Jason Merrill's avatar
      c++: tweak C++20 destructor template-id rule · f53a89fe
      Jason Merrill authored
      While working on a larger change to destructor lookup I noticed that this
      rule talks about declarators, but we weren't limiting the error to the case
      where we're parsing a declarator.  I don't know if this actually broke
      anything, since a CPP_TEMPLATE_ID would have to have been parsed once
      before, but it's more correct this way.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_unqualified_id): Only complain about ~A<T> in
      	a declarator.
      f53a89fe
    • Max Filippov's avatar
      gcc: xtensa: fix PR target/102336 · 4633d623
      Max Filippov authored
      2021-09-14  Max Filippov  <jcmvbkbc@gmail.com>
      gcc/
      	PR target/102336
      	* config/xtensa/t-xtensa (TM_H): Add include/xtensa-config.h.
      4633d623
    • GCC Administrator's avatar
      Daily bump. · 52ac72a4
      GCC Administrator authored
      52ac72a4
  2. Sep 14, 2021
    • Harald Anlauf's avatar
      Fortran - fix ICE during error recovery checking entry characteristics · b305ec97
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/102311
      	* resolve.c (resolve_entries): Attempt to recover cleanly after
      	rejecting mismatched function entries.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/102311
      	* gfortran.dg/entry_25.f90: New test.
      b305ec97
    • Iain Sandoe's avatar
      c++tools : Add a simple handler for ModuleCompiledRequest. · c89d8053
      Iain Sandoe authored
      This just replies with "OK".
      
      c++tools/ChangeLog:
      
      	* resolver.cc (module_resolver::ModuleCompiledRequest):
      	Add a simple handler.
      	* resolver.h: Declare handler for ModuleCompiledRequest.
      c89d8053
    • Peter Bergner's avatar
      rs6000: Disable optimizing multiple xxsetaccz instructions into one xxsetaccz · f80b9be0
      Peter Bergner authored
      Fwprop will happily optimize two xxsetaccz instructions into one xxsetaccz
      by propagating the results of the first to the uses of the second.
      We really don't want that to happen given the late priming/depriming of
      accumulators.  I fixed this by making the xxsetaccz source operand an
      unspec volatile.  I also removed the mma_xxsetaccz define_expand and
      define_insn_and_split and replaced it with a simple define_insn.
      The expand and splitter patterns were leftovers from the pre opaque mode
      code when the xxsetaccz code was part of the movpxi pattern, and we don't
      need them now.
      
      Rather than a new test case, I was able to just modify the current test case
      to add another __builtin_mma_xxsetaccz call which shows the bad code gen
      with unpatched compilers.
      
      2021-09-14  Peter Bergner  <bergner@linux.ibm.com>
      
      gcc/
      	* config/rs6000/mma.md (unspec): Delete UNSPEC_MMA_XXSETACCZ.
      	(unspecv): Add UNSPECV_MMA_XXSETACCZ.
      	(*mma_xxsetaccz): Delete.
      	(mma_xxsetaccz): Change to define_insn.  Remove operand 1.
      	Use UNSPECV_MMA_XXSETACCZ.  Update comment.
      	* config/rs6000/rs6000.c (rs6000_rtx_costs): Use UNSPECV_MMA_XXSETACCZ.
      
      gcc/testsuite/
      	* gcc.target/powerpc/mma-builtin-6.c: Add second call to xxsetacc
      	built-in.  Update instruction counts.
      f80b9be0
    • Iain Sandoe's avatar
      configure: Avoid unnecessary constraints on executables for $build. · fb323726
      Iain Sandoe authored
      
      The executables for GCC's c-family compilers must be built with no-PIE
      because they use PCH and the current model for this requires that the
      exe is always lauched at the same address.  Since the other language
      compilers share code with the c-family this constraint is also applied
      to them.
      
      However, the executables that run on $build (generators, and parsers
      for md and def files) need not have any such constraint they do not
      consume PCH files.
      
      This change simplifies the configuration and Makefile content by
      removing the code enforcing no-PIE on these exes.  This also fixes a
      bootstrap issue with some Darwin versions and clang as the bootstrap
      compiler,  where -no-PIE causes the correct relocation model to be
      switched off leading to invalid user-space code.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/ChangeLog:
      
      	* Makefile.in: Remove variables related to applying no-PIE
      	to the exes on $build.
      	* configure: Regenerate.
      	* configure.ac: Remove configuration related to applying
      	no-PIE to the exes on $build.
      fb323726
    • Iain Sandoe's avatar
      coroutines: Make proxy vars for the function arg copies. · 70ee703c
      Iain Sandoe authored
      
      This adds top level proxy variables for the coroutine frame
      copies of the original function args.  These are then available
      in the debugger to refer to the frame copies.  We rewrite the
      function body to use the copies, since the original parms will
      no longer be in scope when the coroutine is running.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/cp/ChangeLog:
      
      	* coroutines.cc (struct param_info): Add copy_var.
      	(build_actor_fn): Use simplified param references.
      	(register_param_uses): Likewise.
      	(rewrite_param_uses): Likewise.
      	(analyze_fn_parms): New function.
      	(coro_rewrite_function_body): Add proxies for the fn
      	parameters to the outer bind scope of the rewritten code.
      	(morph_fn_to_coro): Use simplified version of param ref.
      70ee703c
    • Iain Sandoe's avatar
      coroutines: Expose implementation state to the debugger. · c5a735fa
      Iain Sandoe authored
      
      In the process of transforming a coroutine into the separate representation
      as the ramp function and a state machine, we generate some variables that
      are of interest to a user during debugging.  Any variable that is persistent
      for the execution of the coroutine is placed into the coroutine frame.
      
      In particular:
        The promise object.
        The function pointers for the resumer and destroyer.
        The current resume index (suspend point).
        The handle that represents this coroutine 'self handle'.
        Any handle provided for a continuation coroutine.
        Whether the coroutine frame is allocated and needs to be freed.
      
      Visibility of some of these has already been requested by end users.
      
      This patch ensures that such variables have names that are usable in a
      debugger, but are in the reserved namespace for the implementation (they
      all begin with _Coro_).  The identifiers are generated lazily when the
      first coroutine is encountered.
      
      We place the variables into the outermost bind expression and then add a
      DECL_VALUE_EXPR to each that points to the frame entry.
      
      These changes simplify the handling of the variables in the body of the
      function (in particular, the use of the DECL_VALUE_EXPR means that we now
      no longer need to rewrite proxies for the promise and coroutine handles into
      the frame->offset form).
      
      Partial improvement to debugging (PR c++/99215).
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/cp/ChangeLog:
      
      	* coroutines.cc (coro_resume_fn_id, coro_destroy_fn_id,
      	coro_promise_id, coro_frame_needs_free_id, coro_resume_index_id,
      	coro_self_handle_id, coro_actor_continue_id,
      	coro_frame_i_a_r_c_id): New.
      	(coro_init_identifiers): Initialize new name identifiers.
      	(coro_promise_type_found_p): Use pre-built identifiers.
      	(struct await_xform_data): Remove unused fields.
      	(transform_await_expr): Delete code that is now unused.
      	(build_actor_fn): Simplify interface, use pre-built identifiers and
      	remove transforms that are no longer needed.
      	(build_destroy_fn): Use revised field names.
      	(register_local_var_uses): Use pre-built identifiers.
      	(coro_rewrite_function_body): Simplify interface, use pre-built
      	identifiers.  Generate proxy vars in the outer bind expr scope for the
      	implementation state that we wish to expose.
      	(morph_fn_to_coro): Adjust comments for new variable names, use pre-
      	built identifiers.  Remove unused code to generate frame entries for
      	the implementation state.  Adjust call for build_actor_fn.
      c5a735fa
    • Patrick Palka's avatar
      c++: empty union member activation during constexpr [PR102163] · de07cff9
      Patrick Palka authored
      Here, the union's constructor is defined to activate its empty data
      member _M_rest, but during constexpr evaluation of this constructor the
      subobject constructor call O::O(&_M_rest, 42) doesn't produce a side
      effect that actually activates the member, so the union still appears
      uninitialized after its constructor has run.  This patch fixes this by
      using a dummy MODIFY_EXPR in this situation, whose evaluation ensures
      the member gets activated.
      
      	PR c++/102163
      
      gcc/cp/ChangeLog:
      
      	* constexpr.c (cxx_eval_call_expression): After evaluating a
      	subobject constructor call for an empty union member, produce a
      	side effect that makes sure the member gets activated.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/constexpr-empty17.C: New test.
      de07cff9
    • Jakub Jelinek's avatar
      c++: Update DECL_*SIZE for objects with flexible array members with initializers [PR102295] · 818c5051
      Jakub Jelinek authored
      The C FE updates DECL_*SIZE for vars which have initializers for flexible
      array members for many years, but C++ FE kept DECL_*SIZE the same as the
      type size (i.e. as if there were zero elements in the flexible array
      member).  This results e.g. in ELF symbol sizes being too small.
      
      Note, if the flexible array member is initialized only with non-constant
      initializers, we have a worse bug that this patch doesn't solve, the
      splitting of initializers into constant and dynamic initialization removes
      the initializer and we don't have just wrong DECL_*SIZE, but nothing is
      emitted when emitting those vars into assembly either and so the dynamic
      initialization clobbers other vars that may overlap the variable.
      I think we need keep an empty CONSTRUCTOR elt in DECL_INITIAL for the
      flexible array member in that case.
      
      2021-09-14  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/102295
      	* decl.c (layout_var_decl): For aggregates ending with a flexible
      	array member, add the size of the initializer for that member to
      	DECL_SIZE and DECL_SIZE_UNIT.
      
      	* g++.target/i386/pr102295.C: New test.
      818c5051
    • Jakub Jelinek's avatar
      c++: Fix __is_*constructible/assignable for templates [PR102305] · f008fd3a
      Jakub Jelinek authored
      is_xible_helper returns error_mark_node (i.e. false from the traits)
      for abstract classes by testing ABSTRACT_CLASS_TYPE_P (to) early.
      Unfortunately, as the testcase shows, that doesn't work on class templates
      that haven't been instantiated yet, ABSTRACT_CLASS_TYPE_P for them is false
      until it is instantiated, which is done when the routine later constructs
      a dummy object with that type.
      
      The following patch fixes this by calling complete_type first, so that
      ABSTRACT_CLASS_TYPE_P test will work properly, while keeping the handling
      of arrays with unknown bounds, or incomplete types where it is done
      currently.
      
      2021-09-14  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/102305
      	* method.c (is_xible_helper): Call complete_type on to.
      
      	* g++.dg/cpp0x/pr102305.C: New test.
      f008fd3a
    • Tobias Burnus's avatar
      Fortran: Add missing ST_OMP_END_SCOPE handling [PR102313] · 33fdbbe4
      Tobias Burnus authored
      	PR fortran/102313
      
      gcc/fortran/ChangeLog:
      
      	* parse.c (gfc_ascii_statement): Add missing ST_OMP_END_SCOPE.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/goacc/unexpected-end.f90: New test.
      	* gfortran.dg/gomp/unexpected-end.f90: New test.
      33fdbbe4
    • Martin Liska's avatar
      testsuite: fix failing pytest tests · e2103982
      Martin Liska authored
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/gcov/gcov.py: Fix failing pytests as gcov.json.gz
      	  filename was changed in b777f228.
      e2103982
    • Eric Botcazou's avatar
      Fix PR ada/101970 · bd55fa10
      Eric Botcazou authored
      This is a regression present on the mainline and 11 branch in the form of an
      ICE for an enumeration type with a full signed representation for its size.
      
      gcc/ada/
      	PR ada/101970
      	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Enum_Rep>:
      	Use an unchecked conversion instead of a regular conversion in the
      	enumeration case and remove Conversion_OK flag in the integer case.
      	<Attribute_Pos>: Remove superfluous test.
      
      gcc/testsuite/
      	* gnat.dg/enum_rep2.adb: New test.
      bd55fa10
    • Claudiu Zissulescu's avatar
      arc: Update ZOL pattern. · 9bb20299
      Claudiu Zissulescu authored
      
      The ZOL pattern is missing modes which may lead to errors during
      var_tracking. Add them.
      
      gcc/
      	* config/arc/arc.md (doloop_end): Add missing mode.
      	(loop_end): Likewise.
      
      Signed-off-by: default avatarClaudiu Zissulescu <claziss@synopsys.com>
      9bb20299
    • Eric Botcazou's avatar
      Do not issue size error for too large array type · f349a8b5
      Eric Botcazou authored
      The error is to be issued when objects of the type are declared instead.
      
      gcc/ada/
      	* gcc-interface/decl.c (validate_size): Do not issue an error if the
      	old size has overflowed.
      f349a8b5
    • Eric Botcazou's avatar
      Fix inaccurate bounds in debug info for vector array types · b9c35857
      Eric Botcazou authored
      They should not be 0-based, unless the array type itself is.
      
      gcc/ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity): For vector types, make
      	the representative array the debug type.
      b9c35857
    • Eric Botcazou's avatar
      Fix internal error on broken import of vector intrinsics · 26864014
      Eric Botcazou authored
      The change also makes small adjustments to warning messages for intrinsics.
      
      gcc/ada/
      	* gcc-interface/decl.c (gnat_to_gnu_subprog_type): Turn variable
      	into constant.  Capitalize GCC in warning message.
      	(intrin_arglists_compatible_p): Change parameter to pointer-to-const
      	Adjust warning messages.  Turn warning into error for vector types.
      	(intrin_return_compatible_p): Likewise.
      	(intrin_profiles_compatible_p): Change parameter to pointer-to-const
      26864014
    • Eric Botcazou's avatar
      Strengthen compatibility warning for GCC builtins · fad54055
      Eric Botcazou authored
      This is necessary for vector builtins, which are picky about the
      signedness of the element type.
      
      gcc/ada/
      	* libgnat/s-atopri.ads (bool): Delete.
      	(Atomic_Test_And_Set): Replace bool with Boolean.
      	(Atomic_Always_Lock_Free): Likewise.
      	* libgnat/s-aoinar.adb (Is_Lock_Free): Adjust.
      	* libgnat/s-aomoar.adb (Is_Lock_Free): Likewise.
      	* libgnat/s-aotase.adb (Atomic_Test_And_Set): Likewise.
      	* libgnat/s-atopex.adb (Atomic_Compare_And_Exchange): Likewise.
      	* gcc-interface/decl.c: Include gimple-expr.h.
      	(intrin_types_incompatible_p): Delete.
      	(intrin_arglists_compatible_p): Call types_compatible_p.
      	(intrin_return_compatible_p): Likewise.
      fad54055
    • Eric Botcazou's avatar
      Fix internal error on pointer-to-pointer binding in LTO mode · caef5203
      Eric Botcazou authored
      gcc/ada/
      	* gcc-interface/utils.c (update_pointer_to): Set TYPE_CANONICAL on
      	pointer and reference types.
      caef5203
    • Jakub Jelinek's avatar
      testsuite: Use sync_long_long instead of sync_int_long for atomic-29.c test · b29fc214
      Jakub Jelinek authored
      As discussed, the test tests atomics on doubles which are 64-bit and so we
      should use sync_long_long effective target instead of sync_int_long that
      covers 64-bit atomics only on 64-bit arches.  I've added -march=pentium
      to follow what is documented for sync_long_long, I guess -march=zarch should
      be added for s390* too, but haven't tested that.
      
      And using sync_long_long found a syntax error in that effective target
      implementation, so I've fixed that too.
      
      2021-09-14  Jakub Jelinek  <jakub@redhat.com>
      
      	* c-c++-common/gomp/atomic-29.c: Add -march=pentium
      	dg-additional-options for ia32.  Use sync_long_long effective target
      	instead of sync_int_long.
      	* lib/target-supports.exp (check_effective_target_sync_long_long): Fix
      	a syntax error.
      b29fc214
    • Jakub Jelinek's avatar
      openmp: Add testing checks (whether lhs appears in operands at all) to more trees · 3f89d5eb
      Jakub Jelinek authored
      This patch adds testing checks (goa_stabilize_expr with NULL pre_p) for more
      tree codes, so that we don't gimplify their operands individually unless lhs
      appears in them.  Also, so that we don't have exponential compile time complexity
      with the added checks, I've added a depth computation, we don't expect lhs
      to be found in depth 8 or above as all the atomic forms must have x expression
      in specific places in the expressions.
      
      2021-09-14  Jakub Jelinek  <jakub@redhat.com>
      
      	* gimplify.c (goa_stabilize_expr): Add depth argument, propagate
      	it to recursive calls, for depth above 7 just gimplify or return.
      	Perform a test even for MODIFY_EXPR, ADDR_EXPR, COMPOUND_EXPR with
      	__builtin_clear_padding and TARGET_EXPR.
      	(gimplify_omp_atomic): Adjust goa_stabilize_expr callers.
      3f89d5eb
    • Eric Botcazou's avatar
      Implement PR ada/101385 · f3922acf
      Eric Botcazou authored
      For consistency's sake with -Wall & -w, this makes -Werror imply -gnatwe.
      
      gcc/ada/
      	PR ada/101385
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
      	(-Wall): Minor fixes.
      	(-w): Likewise.
      	(-Werror): Document that it also sets -gnatwe by default.
      	* gcc-interface/lang-specs.h (ada): Expand -gnatwe if -Werror is
      	passed and move expansion of -gnatw switches to before -gnatez.
      f3922acf
    • Eric Botcazou's avatar
      Remove superfluous call to UI_Is_In_Int_Range · 45d32da2
      Eric Botcazou authored
      gcc/ada/
      	* gcc-interface/utils.c (can_materialize_object_renaming_p): Do not
      	call UI_Is_In_Int_Range on the result of Normalized_First_Bit.
      45d32da2
    • Eric Botcazou's avatar
      Give more informative error message for by-reference types · f1f5b1fb
      Eric Botcazou authored
      Recent compilers enforce more strictly the RM C.6(18) clause, which says
      that volatile record types are by-reference types.  This changes the typical
      error message now given in these cases.
      
      gcc/ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <is_type>: Declare new
      	constant.  Adjust error message issued by validate_size in the case
      	of by-reference types.
      	(validate_size): Always use the error strings passed by the caller.
      f1f5b1fb
    • liuhongt's avatar
      AVX512FP16: Add testcase for fpclass/getmant/getexp instructions. · ebcdd004
      liuhongt authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx512fp16-helper.h (V512):
      	Add xmm component.
      	* gcc.target/i386/avx512fp16-vfpclassph-1a.c: New test.
      	* gcc.target/i386/avx512fp16-vfpclassph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vfpclasssh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vfpclasssh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetexpph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetexpph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetexpsh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetexpsh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetmantph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetmantph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetmantsh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vgetmantsh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vfpclassph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vfpclassph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vgetexpph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vgetexpph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vgetmantph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vgetmantph-1b.c: Ditto.
      ebcdd004
    • liuhongt's avatar
      AVX512FP16: Add fpclass/getexp/getmant instructions. · 8486e9f2
      liuhongt authored
      Add vfpclassph/vfpclasssh/vgetexpph/vgetexpsh/vgetmantph/vgetmantsh.
      
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h (_mm_fpclass_sh_mask):
      	New intrinsic.
      	(_mm_mask_fpclass_sh_mask): Likewise.
      	(_mm512_mask_fpclass_ph_mask): Likewise.
      	(_mm512_fpclass_ph_mask): Likewise.
      	(_mm_getexp_sh): Likewise.
      	(_mm_mask_getexp_sh): Likewise.
      	(_mm_maskz_getexp_sh): Likewise.
      	(_mm512_getexp_ph): Likewise.
      	(_mm512_mask_getexp_ph): Likewise.
      	(_mm512_maskz_getexp_ph): Likewise.
      	(_mm_getexp_round_sh): Likewise.
      	(_mm_mask_getexp_round_sh): Likewise.
      	(_mm_maskz_getexp_round_sh): Likewise.
      	(_mm512_getexp_round_ph): Likewise.
      	(_mm512_mask_getexp_round_ph): Likewise.
      	(_mm512_maskz_getexp_round_ph): Likewise.
      	(_mm_getmant_sh): Likewise.
      	(_mm_mask_getmant_sh): Likewise.
      	(_mm_maskz_getmant_sh): Likewise.
      	(_mm512_getmant_ph): Likewise.
      	(_mm512_mask_getmant_ph): Likewise.
      	(_mm512_maskz_getmant_ph): Likewise.
      	(_mm_getmant_round_sh): Likewise.
      	(_mm_mask_getmant_round_sh): Likewise.
      	(_mm_maskz_getmant_round_sh): Likewise.
      	(_mm512_getmant_round_ph): Likewise.
      	(_mm512_mask_getmant_round_ph): Likewise.
      	(_mm512_maskz_getmant_round_ph): Likewise.
      	* config/i386/avx512fp16vlintrin.h (_mm_mask_fpclass_ph_mask):
      	New intrinsic.
      	(_mm_fpclass_ph_mask): Likewise.
      	(_mm256_mask_fpclass_ph_mask): Likewise.
      	(_mm256_fpclass_ph_mask): Likewise.
      	(_mm256_getexp_ph): Likewise.
      	(_mm256_mask_getexp_ph): Likewise.
      	(_mm256_maskz_getexp_ph): Likewise.
      	(_mm_getexp_ph): Likewise.
      	(_mm_mask_getexp_ph): Likewise.
      	(_mm_maskz_getexp_ph): Likewise.
      	(_mm256_getmant_ph): Likewise.
      	(_mm256_mask_getmant_ph): Likewise.
      	(_mm256_maskz_getmant_ph): Likewise.
      	(_mm_getmant_ph): Likewise.
      	(_mm_mask_getmant_ph): Likewise.
      	(_mm_maskz_getmant_ph): Likewise.
      	* config/i386/i386-builtin-types.def: Add corresponding builtin types.
      	* config/i386/i386-builtin.def: Add corresponding new builtins.
      	* config/i386/i386-expand.c
      	(ix86_expand_args_builtin): Handle new builtin types.
      	(ix86_expand_round_builtin): Ditto.
      	* config/i386/sse.md (vecmemsuffix): Add HF vector modes.
      	(<avx512>_getexp<mode><mask_name><round_saeonly_name>): Adjust
      	to support HF vector modes.
      	(avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name):
      	Ditto.
      	(avx512dq_fpclass<mode><mask_scalar_merge_name>): Ditto.
      	(avx512dq_vmfpclass<mode><mask_scalar_merge_name>): Ditto.
      	(<avx512>_getmant<mode><mask_name><round_saeonly_name>): Ditto.
      	(avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
      	Ditto.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx-1.c: Add test for new builtins.
      	* gcc.target/i386/sse-13.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/sse-14.c: Add test for new intrinsics.
      	* gcc.target/i386/sse-22.c: Ditto.
      8486e9f2
    • liuhongt's avatar
      AVX512FP16: Add testcase for vreduceph/vreducesh/vrndscaleph/vrndscalesh. · b6e944df
      liuhongt authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx512fp16-helper.h (_ROUND_CUR): New macro.
      	* gcc.target/i386/avx512fp16-vreduceph-1a.c: New test.
      	* gcc.target/i386/avx512fp16-vreduceph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vreducesh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vreducesh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vrndscaleph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vrndscaleph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vrndscalesh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vrndscalesh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vreduceph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vreduceph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vrndscaleph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c: Ditto.
      b6e944df
    • liuhongt's avatar
      AVX512FP16: Add vreduceph/vreducesh/vrndscaleph/vrndscalesh. · 8bed7617
      liuhongt authored
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h (_mm512_reduce_ph):
      	New intrinsic.
      	(_mm512_mask_reduce_ph): Likewise.
      	(_mm512_maskz_reduce_ph): Likewise.
      	(_mm512_reduce_round_ph): Likewise.
      	(_mm512_mask_reduce_round_ph): Likewise.
      	(_mm512_maskz_reduce_round_ph): Likewise.
      	(_mm_reduce_sh): Likewise.
      	(_mm_mask_reduce_sh): Likewise.
      	(_mm_maskz_reduce_sh): Likewise.
      	(_mm_reduce_round_sh): Likewise.
      	(_mm_mask_reduce_round_sh): Likewise.
      	(_mm_maskz_reduce_round_sh): Likewise.
      	(_mm512_roundscale_ph): Likewise.
      	(_mm512_mask_roundscale_ph): Likewise.
      	(_mm512_maskz_roundscale_ph): Likewise.
      	(_mm512_roundscale_round_ph): Likewise.
      	(_mm512_mask_roundscale_round_ph): Likewise.
      	(_mm512_maskz_roundscale_round_ph): Likewise.
      	(_mm_roundscale_sh): Likewise.
      	(_mm_mask_roundscale_sh): Likewise.
      	(_mm_maskz_roundscale_sh): Likewise.
      	(_mm_roundscale_round_sh): Likewise.
      	(_mm_mask_roundscale_round_sh): Likewise.
      	(_mm_maskz_roundscale_round_sh): Likewise.
      	* config/i386/avx512fp16vlintrin.h: (_mm_reduce_ph):
      	New intrinsic.
      	(_mm_mask_reduce_ph): Likewise.
      	(_mm_maskz_reduce_ph): Likewise.
      	(_mm256_reduce_ph): Likewise.
      	(_mm256_mask_reduce_ph): Likewise.
      	(_mm256_maskz_reduce_ph): Likewise.
      	(_mm_roundscale_ph): Likewise.
      	(_mm_mask_roundscale_ph): Likewise.
      	(_mm_maskz_roundscale_ph): Likewise.
      	(_mm256_roundscale_ph): Likewise.
      	(_mm256_mask_roundscale_ph): Likewise.
      	(_mm256_maskz_roundscale_ph): Likewise.
      	* config/i386/i386-builtin-types.def: Add corresponding builtin types.
      	* config/i386/i386-builtin.def: Add corresponding new builtins.
      	* config/i386/i386-expand.c
      	(ix86_expand_args_builtin): Handle new builtin types.
      	(ix86_expand_round_builtin): Ditto.
      	* config/i386/sse.md (<mask_codefor>reducep<mode><mask_name>):
      	Renamed to ...
      	(<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
      	... this, and adjust for round operands.
      	(reduces<mode><mask_scalar_name>): Likewise, with ...
      	(reduces<mode><mask_scalar_name><round_saeonly_scalar_name):
      	... this.
      	(<avx512>_rndscale<mode><mask_name><round_saeonly_name>):
      	Adjust for HF vector modes.
      	(avx512f_rndscale<mode><mask_scalar_name><round_saeonly_scalar_name>):
      	Ditto.
      	(*avx512f_rndscale<mode><round_saeonly_name>): Ditto.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx-1.c: Add test for new builtins.
      	* gcc.target/i386/sse-13.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/sse-14.c: Add test for new intrinsics.
      	* gcc.target/i386/sse-22.c: Ditto.
      8bed7617
    • liuhongt's avatar
      AVX512FP16: Add testcase for vrcpph/vrcpsh/vscalefph/vscalefsh. · 03f0cbcc
      liuhongt authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx512fp16-vrcpph-1a.c: New test.
      	* gcc.target/i386/avx512fp16-vrcpph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vrcpsh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vrcpsh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vscalefph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vscalefph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vscalefsh-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vscalefsh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vrcpph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vrcpph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vscalefph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vscalefph-1b.c: Ditto.
      03f0cbcc
    • liuhongt's avatar
      AVX512FP16: Add vrcpph/vrcpsh/vscalefph/vscalefsh. · bf4c1240
      liuhongt authored
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h: (_mm512_rcp_ph):
      	New intrinsic.
      	(_mm512_mask_rcp_ph): Likewise.
      	(_mm512_maskz_rcp_ph): Likewise.
      	(_mm_rcp_sh): Likewise.
      	(_mm_mask_rcp_sh): Likewise.
      	(_mm_maskz_rcp_sh): Likewise.
      	(_mm512_scalef_ph): Likewise.
      	(_mm512_mask_scalef_ph): Likewise.
      	(_mm512_maskz_scalef_ph): Likewise.
      	(_mm512_scalef_round_ph): Likewise.
      	(_mm512_mask_scalef_round_ph): Likewise.
      	(_mm512_maskz_scalef_round_ph): Likewise.
      	(_mm_scalef_sh): Likewise.
      	(_mm_mask_scalef_sh): Likewise.
      	(_mm_maskz_scalef_sh): Likewise.
      	(_mm_scalef_round_sh): Likewise.
      	(_mm_mask_scalef_round_sh): Likewise.
      	(_mm_maskz_scalef_round_sh): Likewise.
      	* config/i386/avx512fp16vlintrin.h (_mm_rcp_ph):
      	New intrinsic.
      	(_mm256_rcp_ph): Likewise.
      	(_mm_mask_rcp_ph): Likewise.
      	(_mm256_mask_rcp_ph): Likewise.
      	(_mm_maskz_rcp_ph): Likewise.
      	(_mm256_maskz_rcp_ph): Likewise.
      	(_mm_scalef_ph): Likewise.
      	(_mm256_scalef_ph): Likewise.
      	(_mm_mask_scalef_ph): Likewise.
      	(_mm256_mask_scalef_ph): Likewise.
      	(_mm_maskz_scalef_ph): Likewise.
      	(_mm256_maskz_scalef_ph): Likewise.
      	* config/i386/i386-builtin.def: Add new builtins.
      	* config/i386/sse.md (VFH_AVX512VL): New.
      	(avx512fp16_rcp<mode>2<mask_name>): Ditto.
      	(avx512fp16_vmrcpv8hf2<mask_scalar_name>): Ditto.
      	(avx512f_vmscalef<mode><mask_scalar_name><round_scalar_name>):
      	Adjust to support HF vector modes.
      	(<avx512>_scalef<mode><mask_name><round_name>): Ditto.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx-1.c: Add test for new builtins.
      	* gcc.target/i386/sse-13.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/sse-14.c: Add test for new intrinsics.
      	* gcc.target/i386/sse-22.c: Ditto.
      bf4c1240
Loading