This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH 3/4] Add support to run auto-vectorization tests for multiple effective targets


Hi Matthew,

The attached is the updated one.

Regards,
Robert

> -----Original Message-----
> From: Matthew Fortune
> Sent: 11 January 2016 13:35
> To: Robert Suchanek; Catherine_Moore@mentor.com
> Cc: gcc-patches@gcc.gnu.org
> Subject: RE: [PATCH 3/4] Add support to run auto-vectorization tests for
> multiple effective targets
> 
> Hi Robert,
> 
> Do you have an updated version of this patch? It no longer applies cleanly.
> 
> Thanks,
> Matthew
> 
> > -----Original Message-----
> > From: Robert Suchanek
> > Sent: 05 January 2016 16:17
> > To: Catherine_Moore@mentor.com; Matthew Fortune
> > Cc: gcc-patches@gcc.gnu.org
> > Subject: RE: [PATCH 3/4] Add support to run auto-vectorization tests for
> > multiple effective targets
> >
> > Ping.
> >
> > > -----Original Message-----
> > > From: gcc-patches-owner@gcc.gnu.org
> > > [mailto:gcc-patches-owner@gcc.gnu.org] On Behalf Of Robert Suchanek
> > > Sent: 10 August 2015 13:15
> > > To: Catherine_Moore@mentor.com; Matthew Fortune
> > > Cc: gcc-patches@gcc.gnu.org
> > > Subject: [PATCH 3/4] Add support to run auto-vectorization tests for
> > > multiple effective targets
> > >
> > > Hi,
> > >
> > > This patch allows to run auto-vectorization tests for more than one
> > > effective target.  The initial proposal
> > >
> > > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg02289.html
> > >
> > > had some issues that have been addressed and should work as expected
> > now.
> > >
> > > The idea was to add a wrapper procedure that would:
> > > 1. Iterative over a list of EFFECTIVE_TARGETS e.g. mips_msa,
> > mpaired_single.
> > > 2. Add necessary compile time options for each effective target.
> > > 3. Check if it's possible to compile and/or run on a target, and set
> > >    dg-do-what-default accordingly.
> > > 4. Set the target index to tell check_effective_target_vect_* which
> > target is
> > >    currently being processed.
> > > 5. Invoke {gfortran-,g++-,}dg-runtest with the list of vector tests as
> > normal.
> > >
> > > The above required that every vector feature e.g. vect_int that caches
> > > the result is capable of tracking what target supports a feature.  The
> > > result is saved to a list at an index controlled by the wrapper
> > > (et-dg-runtest).  Ports not using this feature, set DEFAULT_VECTFLAGS
> > > and the tests should run as they used to.
> > >
> > > The patch was additionally tested on x86_64-unknown-linux-gnu and
> > > aarch64- linux-gnu.
> > >
> > > Regards,
> > > Robert
> > >
> > > gcc/testsuite/ChangeLog:
> > >
> > > 	* g++.dg/vect/vect.exp: Add and set new global EFFECTIVE_TARGETS.
> > Call
> > > 	g++-dg-runtest via et-dg-runtest.
> > > 	* gcc.dg/graphite/graphite.exp: Likewise, but for dg-runtest.
> > > 	* gcc.dg/vect/vect.exp: Likewise.
> > > 	* gfortran.dg/graphite/graphite.exp: Likewise, but for
> > > 	gfortran-dg-runtest.
> > > 	* gfortran.dg/vect/vect.exp: Likewise.
> > > 	* lib/target-supports.exp (check_mpaired_single_hw_available): New.
> > > 	(check_mips_loongson_hw_available): Likewise.
> > > 	(check_effective_target_mpaired_single_runtime): Likewise.
> > > 	(check_effective_target_mips_loongson_runtime): Likewise.
> > > 	(add_options_for_mpaired_single): Likewise.
> > > 	(check_effective_target_vect_int): Add global et_index.
> > > 	Check and save the supported feature for a target selected by
> > > 	the et_index target.  Break long lines where appropriate.  Call
> > > 	et-is-effective-target for MIPS with an argument instead of
> > > 	check_effective_target_* where appropriate.
> > > 	(check_effective_target_vect_intfloat_cvt): Likewise.
> > > 	(check_effective_target_vect_uintfloat_cvt): Likewise.
> > > 	(check_effective_target_vect_floatint_cvt): Likewise.
> > > 	(check_effective_target_vect_floatuint_cvt): Likewise.
> > > 	(check_effective_target_vect_simd_clones): Likewise.
> > > 	(check_effective_target_vect_shift): ewise.
> > > 	(check_effective_target_whole_vector_shift): Likewise.
> > > 	(check_effective_target_vect_bswap): Likewise.
> > > 	(check_effective_target_vect_shift_char): Likewise.
> > > 	(check_effective_target_vect_long): Likewise.
> > > 	(check_effective_target_vect_float): Likewise.
> > > 	(check_effective_target_vect_double): Likewise.
> > > 	(check_effective_target_vect_long_long): Likewise.
> > > 	(check_effective_target_vect_no_int_max): Likewise.
> > > 	(check_effective_target_vect_no_int_add): Likewise.
> > > 	(check_effective_target_vect_no_bitwise): Likewise.
> > > 	(check_effective_target_vect_widen_shift): Likewise.
> > > 	(check_effective_target_vect_no_align): Likewise.
> > > 	(check_effective_target_vect_hw_misalign): Likewise.
> > > 	(check_effective_target_vect_element_align): Likewise.
> > > 	(check_effective_target_vect_condition): Likewise.
> > > 	(check_effective_target_vect_cond_mixed): Likewise.
> > > 	(check_effective_target_vect_char_mult): Likewise.
> > > 	(check_effective_target_vect_short_mult): Likewise.
> > > 	(check_effective_target_vect_int_mult): Likewise.
> > > 	(check_effective_target_vect_extract_even_odd): Likewise.
> > > 	(check_effective_target_vect_interleave): Likewise.
> > > 	(check_effective_target_vect_stridedN): Likewise.
> > > 	(check_effective_target_vect_multiple_sizes): Likewise.
> > > 	(check_effective_target_vect64): Likewise.
> > > 	(check_effective_target_vect_call_copysignf): Likewise.
> > > 	(check_effective_target_vect_call_sqrtf): Likewise.
> > > 	(check_effective_target_vect_call_lrint): Likewise.
> > > 	(check_effective_target_vect_call_btrunc): Likewise.
> > > 	(check_effective_target_vect_call_btruncf): Likewise.
> > > 	(check_effective_target_vect_call_ceil): Likewise.
> > > 	(check_effective_target_vect_call_ceilf): Likewise.
> > > 	(check_effective_target_vect_call_floor): Likewise.
> > > 	(check_effective_target_vect_call_floorf): Likewise.
> > > 	(check_effective_target_vect_call_lceil): Likewise.
> > > 	(check_effective_target_vect_call_lfloor): Likewise.
> > > 	(check_effective_target_vect_call_nearbyint): Likewise.
> > > 	(check_effective_target_vect_call_nearbyintf): Likewise.
> > > 	(check_effective_target_vect_call_round): Likewise.
> > > 	(check_effective_target_vect_call_roundf): Likewise.
> > > 	(check_effective_target_vect_perm): Likewise, but also append
> > *_saved
> > > 	to the existing global name to properly cache the result.
> > > 	(check_effective_target_vect_perm_byte): Likewise.
> > > 	(check_effective_target_vect_perm_short): Likewise.
> > > 	(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
> > > 	(check_effective_target_vect_widen_sum_hi_to_si): Likewise.
> > > 	(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
> > > 	(check_effective_target_vect_widen_sum_qi_to_si): Likewise.
> > > 	(check_effective_target_vect_widen_mult_qi_to_hi_pattern):
> > Likewise.
> > > 	(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
> > > 	(check_effective_target_vect_widen_mult_hi_to_si_pattern):
> > Likewise.
> > > 	(check_effective_target_vect_widen_mult_si_to_di_pattern):
> > Likewise.
> > > 	(check_effective_target_vect_sdot_qi): Likewise.
> > > 	(check_effective_target_vect_udot_qi): Likewise.
> > > 	(check_effective_target_vect_sdot_hi): Likewise.
> > > 	(check_effective_target_vect_udot_hi): Likewise.
> > > 	(check_effective_target_vect_usad_char): Likewise.
> > > 	(check_effective_target_vect_pack_trunc): Likewise.
> > > 	(check_effective_target_vect_unpack): Likewise.
> > > 	(check_effective_target_vect_aligned_arrays): Likewise.
> > > 	(check_effective_target_vect_natural_alignment): Likewise.
> > > 	(check_effective_target_vector_alignment_reachable): Likewise.
> > > 	(check_effective_target_vector_alignment_reachable_for_64bit):
> > Likewise.
> > > 	(is-effective-target): Initialize et_index if undefined.
> > > 	(et-dg-runtest): New.
> > > 	(et-is-effective-target): Likewise.
> > > 	(check_vect_support_and_set_flags): Add supported MIPS targets to
> > > 	EFFECTIVE_TARGETS list.  Return the number of supported targets.

Attachment: 0004-Add-support-to-run-auto-vectorization-tests-for-mult.patch
Description: 0004-Add-support-to-run-auto-vectorization-tests-for-mult.patch


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]