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 gcc-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 sve_flags "$sve_flags -mtune=generic -moverride=tune=none" 43 44lappend extra_flags "-fno-ipa-icf" 45 46global gcc_runtest_parallelize_limit_minor 47if { [info exists gcc_runtest_parallelize_limit_minor] } { 48 set old_limit_minor $gcc_runtest_parallelize_limit_minor 49 set gcc_runtest_parallelize_limit_minor 1 50} 51 52torture-init 53set-torture-options { 54 "-std=c90 -O0 -g" 55 "-std=c90 -O1 -g" 56 "-std=c99 -O2 -g" 57 "-std=c11 -O3 -g" 58 "-std=gnu90 -O2 -fno-schedule-insns -DCHECK_ASM --save-temps" 59 "-std=gnu99 -Ofast -g" 60 "-std=gnu11 -Os -g" 61} { 62 "-DTEST_FULL" 63 "-DTEST_OVERLOADS" 64} 65 66# Main loop. 67set files [glob -nocomplain $srcdir/$subdir/asm/*.c] 68set save-dg-do-what-default ${dg-do-what-default} 69if { [check_effective_target_aarch64_asm_sve2_ok] 70 && [check_effective_target_aarch64_variant_pcs] } { 71 set dg-do-what-default assemble 72} else { 73 set dg-do-what-default compile 74} 75gcc-dg-runtest [lsort $files] "" "$sve2_flags $extra_flags" 76set dg-do-what-default ${save-dg-do-what-default} 77 78torture-finish 79 80if { [info exists gcc_runtest_parallelize_limit_minor] } { 81 set gcc_runtest_parallelize_limit_minor $old_limit_minor 82} 83 84# All done. 85dg-finish 86