# Copyright (C) 2007-2021 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

# GCC testsuite that uses the `dg.exp' driver.

# Exit immediately if this isn't a sh target.
if ![istarget sh*-*-*] then {
  return
}

# Load support procs.
load_lib gcc-dg.exp

# Return 1 if target is SH2A
proc check_effective_target_sh2a { } {
    return [check_no_compiler_messages sh2a object {
	     #ifndef __SH2A__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target is SH1
proc check_effective_target_sh1 { } {
    return [check_no_compiler_messages sh1 object {
	     #ifndef __SH1__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target is SH4A
proc check_effective_target_sh4a { } {
    return [check_no_compiler_messages sh4a object {
	     #ifndef __SH4A__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target is big endian
proc check_effective_target_big_endian { } {
    return [check_no_compiler_messages big_endian object {
	     #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target is little endian
proc check_effective_target_little_endian { } {
    return [check_no_compiler_messages little_endian object {
	     #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target has any FPU (single or double precision)
proc check_effective_target_any_fpu { } {
    return [check_no_compiler_messages any_fpu object {
	     #ifndef __SH_FPU_ANY__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target has a double precision FPU which is allowed to be
# used by the compiler as such.
proc check_effective_target_double_fpu { } {
    return [check_no_compiler_messages double_fpu object {
	     #ifndef __SH_FPU_DOUBLE__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target has a double precision FPU but it is only being used
# in single precision mode by the compiler
proc check_effective_target_use_single_only_fpu { } {
    return [check_no_compiler_messages use_single_only_fpu object {
	     #if !(defined (__SH2A_SINGLE_ONLY__) \
		   || defined (__SH4_SINGLE_ONLY__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target has an FPU and the default mode is single
proc check_effective_target_default_single_fpu { } {
    return [check_no_compiler_messages default_single_fpu object {
	     #if !(defined (__SH2E__) || defined (__SH3E__) \
		   || defined (__SH2A_SINGLE__) \
		   || defined (__SH2A_SINGLE_ONLY__) \
		   || defined (__SH4_SINGLE__) \
		   || defined (__SH4_SINGLE_ONLY__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target has no FPU
proc check_effective_target_no_fpu { } {
    return [check_no_compiler_messages no_fpu object {
	     #ifdef __SH_FPU_ANY__
	     #error ""
	     #endif
    } ""]
}


# Return 1 if the target has XF regs
proc check_effective_target_has_xf_regs { } {
    return [check_no_compiler_messages has_xf_regs object {
	     #if !(defined (__SH_FPU_ANY__) \
		   && (defined (__SH4__) \
		       || defined (__SH4_SINGLE__) \
		       || defined (__SH4_SINGLE_ONLY__) \
		       || defined (__SH4A__)))
	     #error ""
	     #endif
    } ""]
}


# Return 1 if the target can do the fsca insn
proc check_effective_target_has_fsca { } {
    return [check_no_compiler_messages has_fsca object {
	     #if !(defined (__SH_FPU_ANY__) \
		   && (defined (__SH4__) \
		       || defined (__SH4_SINGLE__) \
		       || defined (__SH4_SINGLE_ONLY__) \
		       || defined (__SH4A__)))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target can do the fsrra insn
proc check_effective_target_has_fsrra { } {
    return [check_no_compiler_messages has_fsrra object {
	     #if !(defined (__SH_FPU_ANY__) \
		   && (defined (__SH4__) \
		       || defined (__SH4_SINGLE__) \
		       || defined (__SH4_SINGLE_ONLY__) \
		       || defined (__SH4A__)))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target can do the fpchg insn
proc check_effective_target_has_fpchg { } {
    return [check_no_compiler_messages has_fpchg object {
	     #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \
		   && !defined (__SH4_SINGLE_ONLY__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target can do dynamic shifts
proc check_effective_target_has_dyn_shift { } {
    return [check_no_compiler_messages has_dyn_shift object {
	     #if !(defined (__SH3__) \
		   || defined (__SH3E__) \
		   || defined (__SH2A__) \
		   || defined (__SH4__) \
		   || defined (__SH4_NOFPU__) \
		   || defined (__SH4_SINGLE__) \
		   || defined (__SH4_SINGLE_ONLY__) \
		   || defined (__SH4A__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the mfmovd option is enabled
proc check_effective_target_fmovd_enabled { } {
    return [check_no_compiler_messages fmovd_enabled object {
	     #ifndef __FMOVD_ENABLED__
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target supports privileged mode
proc check_effective_target_has_privileged { } {
    return [check_no_compiler_messages has_privileged object {
	     #if !(defined (__SH3__) \
		   || defined (__SH3E__) \
		   || defined (__SH4__) \
		   || defined (__SH4_NOFPU__) \
		   || defined (__SH4_SINGLE__) \
		   || defined (__SH4_SINGLE_ONLY__) \
		   || defined (__SH4A__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if the target supports the prefetch insn
proc check_effective_target_has_pref { } {
    return [check_no_compiler_messages has_pref object {
	     #if !(defined (__SH3__) \
		   || defined (__SH3E__) \
		   || defined (__SH4__) \
		   || defined (__SH4_NOFPU__) \
		   || defined (__SH4_SINGLE__) \
		   || defined (__SH4_SINGLE_ONLY__) \
		   || defined (__SH4A__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target does banked r0..r7 regs type of ISRs
proc check_effective_target_banked_r0r7_isr { } {
    return [check_no_compiler_messages banked_r0r7_isr object {
	     #if !(defined (__SH3__) || defined (__SH3E__) \
		   || defined (__SH4__) \
		   || defined (__SH4_SINGLE__) \
		   || defined (__SH4_SINGLE_ONLY__) \
		   || defined (__SH4_NOFPU__) \
		   || defined (__SH4A__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target does stack only type of ISRs
proc check_effective_target_stack_save_isr { } {
    return [check_no_compiler_messages stack_save_isr object {
	     #if !(defined (__SH1__) \
		   || defined (__SH2__) \
		   || defined (__SH2E__) \
		   || defined (__SH2A__))
	     #error ""
	     #endif
    } ""]
}

# Return 1 if target supports atomic-model=soft-gusa
proc check_effective_target_atomic_model_soft_gusa_available { } {
    return [check_no_compiler_messages atomic_model_soft_gusa_available object {
	     int x = 0;
    } "-matomic-model=soft-gusa"]
}

# Return 1 if target supports atomic-model=soft-tcb
proc check_effective_target_atomic_model_soft_tcb_available { } {
    return [check_no_compiler_messages atomic_model_soft_tcb_available object {
	     int x = 0;
    } "-matomic-model=soft-tcb,gbr-offset=0"]
}

# Return 1 if target supports atomic-model=soft-imask
proc check_effective_target_atomic_model_soft_imask_available { } {
    return [check_no_compiler_messages atomic_model_soft_imask_available object {
	     int x = 0;
    } "-matomic-model=soft-imask -mno-usermode"]
}

# Return 1 if target supports atomic-model=hard-llcs
proc check_effective_target_atomic_model_hard_llcs_available { } {
    return [check_no_compiler_messages atomic_model_hard_llcs_available object {
	     int x = 0;
    } "-matomic-model=hard-llcs"]
}

# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
if ![info exists DEFAULT_CFLAGS] then {
    set DEFAULT_CFLAGS " -ansi -pedantic-errors"
}

# Initialize `dg'.
dg-init

# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
	"" $DEFAULT_CFLAGS

# All done.
dg-finish
