This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[RFC] Add check_effective_target_vect_min_max
- From: Tom de Vries <Tom_deVries at mentor dot com>
- To: "gcc-patches at gnu dot org" <gcc-patches at gnu dot org>
- Cc: <ro at gcc dot gnu dot org>
- Date: Wed, 12 Aug 2015 08:34:34 +0200
- Subject: [RFC] Add check_effective_target_vect_min_max
- Authentication-results: sourceware.org; auth=none
- References: <55CAE044 dot 9040006 at mentor dot com>
[ was: Re: [committed, testsuite] Fix vect/trapv-vect-reduc-4.c for sparc ]
On 12/08/15 07:57, Tom de Vries wrote:
Hi,
For sparc, the scan for 'vectorized 2 loops' in
vect/trapv-vect-reduc-4.c fail because the vector instructions min and
max are not supported.
Tested on x86_64. Tested on sparc by Rainer.
This follow-up patch introduces a new effective target vect_min_max,
similar to how effective target vect_bswap is implemented.
Any comments?
Thanks,
- Tom
Add check_effective_target_vect_min_max
2015-08-12 Tom de Vries <tom@codesourcery.com>
* lib/target-supports.exp (check_effective_target_vect_min_max): New
proc.
* gcc.dg/vect/trapv-vect-reduc-4.c: Use vect_min_max effective target.
---
gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c | 2 +-
gcc/testsuite/lib/target-supports.exp | 18 ++++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c b/gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
index 8fd353c..1624696 100644
--- a/gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
+++ b/gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
@@ -47,4 +47,4 @@ int main (void)
}
/* { dg-final { scan-tree-dump-times "Detected reduction\\." 2 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { ! { sparc*-*-* } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_min_max } } } } */
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 1988301..c585e5f 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3568,6 +3568,24 @@ proc check_effective_target_vect_bswap { } {
return $et_vect_bswap_saved
}
+# Return 1 if the target supports vector min/max operations.
+
+proc check_effective_target_vect_min_max { } {
+ global et_vect_min_max_saved
+
+ if [info exists et_vect_min_max_saved] {
+ verbose "check_effective_target_vect_min_max: using cached result" 2
+ } else {
+ set et_vect_min_max_saved 1
+ if { [istarget sparc*-*-*] } {
+ set et_vect_min_max_saved 0
+ }
+ }
+
+ verbose "check_effective_target_vect_min_max: returning $et_vect_min_max_saved" 2
+ return $et_vect_min_max_saved
+}
+
# Return 1 if the target supports hardware vector shift operation for char.
proc check_effective_target_vect_shift_char { } {
--
1.9.1