1# Assembly-based regression-test driver for the SVE ACLE 2# Copyright (C) 2009-2021 Free Software Foundation, Inc. 3# 4# This file is part of GCC. 5# 6# GCC is free software; you can redistribute it and/or modify it 7# under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 3, or (at your option) 9# any later version. 10# 11# GCC is distributed in the hope that it will be useful, but 12# WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with GCC; see the file COPYING3. If not see 18# <http://www.gnu.org/licenses/>. */ 19 20# GCC testsuite that uses the `dg.exp' driver. 21 22# Exit immediately if this isn't an AArch64 target. 23if { ![istarget aarch64*-*-*] } { 24 return 25} 26 27# Load support procs. 28load_lib g++-dg.exp 29 30# Initialize `dg'. 31dg-init 32 33# Force SVE if we're not testing it already. 34if { [check_effective_target_aarch64_sve2] } { 35 set sve2_flags "" 36} else { 37 set sve2_flags "-march=armv8.5-a+sve2" 38} 39 40# Turn off any codegen tweaks by default that may affect expected assembly. 41# Tests relying on those should turn them on explicitly. 42set sve2_flags "$sve2_flags -mtune=generic -moverride=tune=none" 43 44set gcc_subdir [string replace $subdir 0 2 gcc] 45lappend extra_flags "-fno-ipa-icf" "-I$srcdir/$gcc_subdir/../../sve/acle/asm" 46 47global gcc_runtest_parallelize_limit_minor 48if { [info exists gcc_runtest_parallelize_limit_minor] } { 49 set old_limit_minor $gcc_runtest_parallelize_limit_minor 50 set gcc_runtest_parallelize_limit_minor 1 51} 52 53torture-init 54set-torture-options { 55 "-std=c++98 -O0 -g" 56 "-std=c++98 -O1 -g" 57 "-std=c++11 -O2 -g" 58 "-std=c++14 -O3 -g" 59 "-std=c++17 -Og -g" 60 "-std=c++2a -Os -g" 61 "-std=gnu++98 -O2 -fno-schedule-insns -DCHECK_ASM --save-temps" 62 "-std=gnu++11 -Ofast -g" 63 "-std=gnu++17 -O3 -g" 64 "-std=gnu++2a -O0 -g" 65} { 66 "-DTEST_FULL" 67 "-DTEST_OVERLOADS" 68} 69 70# Main loop. 71set files [glob -nocomplain $srcdir/$gcc_subdir/asm/*.c] 72set save-dg-do-what-default ${dg-do-what-default} 73if { [check_effective_target_aarch64_asm_sve2_ok] 74 && [check_effective_target_aarch64_variant_pcs] } { 75 set dg-do-what-default assemble 76} else { 77 set dg-do-what-default compile 78} 79gcc-dg-runtest [lsort $files] "" "$sve2_flags $extra_flags" 80set dg-do-what-default ${save-dg-do-what-default} 81 82torture-finish 83 84if { [info exists gcc_runtest_parallelize_limit_minor] } { 85 set gcc_runtest_parallelize_limit_minor $old_limit_minor 86} 87 88# All done. 89dg-finish 90