|| [is-effective-target arm_neon]
|| ([istarget mips*-*-*]
&& ([et-is-effective-target mips_loongson]
- || [et-is-effective-target mips_msa])) } {
+ || [et-is-effective-target mips_msa]))
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_int_saved($et_index) 1
}
}
|| [is-effective-target arm_neon]
|| ([istarget mips*-*-*]
&& ([et-is-effective-target mips_msa]
- || [et-is-effective-target mips_loongson])) } {
+ || [et-is-effective-target mips_loongson]))
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_shift_saved($et_index) 1
}
}
|| ([is-effective-target arm_neon]
&& [check_effective_target_arm_little_endian])
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_loongson]) } {
+ && [et-is-effective-target mips_loongson])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set answer 1
} else {
set answer 0
&& ![istarget powerpc-*-linux*paired*])
|| [is-effective-target arm_neon]
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_shift_char_saved($et_index) 1
}
}
|| ([istarget sparc*-*-*] && [check_effective_target_ilp32])
|| [istarget aarch64*-*-*]
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set answer 1
} else {
set answer 0
|| [istarget spu-*-*]
|| ([istarget powerpc*-*-*] && [check_vsx_hw_available])
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_double_saved($et_index) 1
}
}
set et_vect_long_long_saved($et_index) 0
if { [istarget i?86-*-*] || [istarget x86_64-*-*]
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_long_long_saved($et_index) 1
}
}
|| [istarget i?86-*-*] || [istarget x86_64-*-*]
|| ([istarget mips*-*-*]
&& ([et-is-effective-target mpaired_single]
- || [et-is-effective-target mips_msa])) } {
+ || [et-is-effective-target mips_msa]))
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_perm_saved($et_index) 1
}
}
|| [istarget powerpc*-*-*]
|| [istarget spu-*-*]
|| ([istarget mips-*.*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_perm_byte_saved($et_index) 1
}
}
|| [istarget powerpc*-*-*]
|| [istarget spu-*-*]
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_perm_short_saved($et_index) 1
}
}
}
if { [istarget powerpc*-*-*]
|| [istarget aarch64*-*-*]
- || [is-effective-target arm_neon] } {
+ || [is-effective-target arm_neon]
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_widen_mult_qi_to_hi_saved($et_index) 1
}
}
|| [istarget ia64-*-*]
|| [istarget aarch64*-*-*]
|| [istarget i?86-*-*] || [istarget x86_64-*-*]
- || [is-effective-target arm_neon] } {
+ || [is-effective-target arm_neon]
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_widen_mult_hi_to_si_saved($et_index) 1
}
}
set et_vect_widen_mult_qi_to_hi_pattern_saved($et_index) 0
if { [istarget powerpc*-*-*]
|| ([is-effective-target arm_neon]
- && [check_effective_target_arm_little_endian]) } {
+ && [check_effective_target_arm_little_endian])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_widen_mult_qi_to_hi_pattern_saved($et_index) 1
}
}
|| [istarget ia64-*-*]
|| [istarget i?86-*-*] || [istarget x86_64-*-*]
|| ([is-effective-target arm_neon]
- && [check_effective_target_arm_little_endian]) } {
+ && [check_effective_target_arm_little_endian])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_widen_mult_hi_to_si_pattern_saved($et_index) 1
}
}
} else {
set et_vect_widen_mult_si_to_di_pattern_saved($et_index) 0
if {[istarget ia64-*-*]
- || [istarget i?86-*-*] || [istarget x86_64-*-*] } {
+ || [istarget i?86-*-*] || [istarget x86_64-*-*]
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_widen_mult_si_to_di_pattern_saved($et_index) 1
}
}
|| ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]
&& [check_effective_target_arm_little_endian])
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_pack_trunc_saved($et_index) 1
}
}
|| ([istarget mips*-*-*]
&& [et-is-effective-target mips_msa])
|| ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]
- && [check_effective_target_arm_little_endian]) } {
+ && [check_effective_target_arm_little_endian])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_unpack_saved($et_index) 1
}
}
if { [istarget i?86-*-*] || [istarget x86_64-*-*]
|| ([istarget powerpc*-*-*] && [check_p8vector_hw_available])
|| [istarget aarch64*-*-*]
- || ([istarget mips*-*-*] && [et-is-effective-target mips_msa]) } {
+ || ([istarget mips*-*-*] && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_hw_misalign_saved($et_index) 1
}
if { [istarget arm*-*-*] } {
|| ([istarget mips*-*-*]
&& [et-is-effective-target mips_msa])
|| ([istarget arm*-*-*]
- && [check_effective_target_arm_neon_ok]) } {
+ && [check_effective_target_arm_neon_ok])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_cond_saved($et_index) 1
}
}
|| [istarget aarch64*-*-*]
|| [istarget powerpc*-*-*]
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_cond_mixed_saved($et_index) 1
}
}
|| [check_effective_target_arm32]
|| [check_effective_target_powerpc_altivec]
|| ([istarget mips*-*-*]
- && [et-is-effective-target mips_msa]) } {
+ && [et-is-effective-target mips_msa])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_char_mult_saved($et_index) 1
}
}
|| [check_effective_target_arm32]
|| ([istarget mips*-*-*]
&& ([et-is-effective-target mips_msa]
- || [et-is-effective-target mips_loongson])) } {
+ || [et-is-effective-target mips_loongson]))
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_short_mult_saved($et_index) 1
}
}
|| [istarget aarch64*-*-*]
|| ([istarget mips*-*-*]
&& [et-is-effective-target mips_msa])
- || [check_effective_target_arm32] } {
+ || [check_effective_target_arm32]
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_int_mult_saved($et_index) 1
}
}
|| [istarget spu-*-*]
|| ([istarget mips*-*-*]
&& ([et-is-effective-target mips_msa]
- || [et-is-effective-target mpaired_single])) } {
+ || [et-is-effective-target mpaired_single]))
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_extract_even_odd_saved($et_index) 1
}
}
|| [istarget spu-*-*]
|| ([istarget mips*-*-*]
&& ([et-is-effective-target mpaired_single]
- || [et-is-effective-target mips_msa])) } {
+ || [et-is-effective-target mips_msa]))
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_interleave_saved($et_index) 1
}
}
if { [istarget i?86-*-*] || [istarget x86_64-*-*]
|| [istarget powerpc*-*-*]
|| [istarget aarch64*-*-*]
- || ([istarget arm*-*-*] && [check_effective_target_arm_vfp_ok]) } {
+ || ([istarget arm*-*-*] && [check_effective_target_arm_vfp_ok])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_sqrt_insn_saved 1
}
}
set et_vect_call_sqrtf_saved($et_index) 0
if { [istarget aarch64*-*-*]
|| [istarget i?86-*-*] || [istarget x86_64-*-*]
- || ([istarget powerpc*-*-*] && [check_vsx_hw_available]) } {
+ || ([istarget powerpc*-*-*] && [check_vsx_hw_available])
+ || ([istarget s390*-*-*]
+ && [check_effective_target_s390_vx]) } {
set et_vect_call_sqrtf_saved($et_index) 1
}
}
}
} elseif [istarget "aarch64*-*-*"] {
set dg-do-what-default run
+ } elseif [istarget s390*-*-*] {
+ # The S/390 backend set a default of 2 for that value.
+ # Override it to have the same situation as with other
+ # targets.
+ lappend DEFAULT_VECTCFLAGS "--param" "min-vect-loop-bound=1"
+ lappend DEFAULT_VECTCFLAGS "--param" "max-unrolled-insns=200"
+ lappend DEFAULT_VECTCFLAGS "--param" "max-unroll-times=8"
+ lappend DEFAULT_VECTCFLAGS "--param" "max-completely-peeled-insns=200"
+ lappend DEFAULT_VECTCFLAGS "--param" "max-completely-peel-times=16"
+ if [check_effective_target_s390_vxe] {
+ lappend DEFAULT_VECTCFLAGS "-march=z14" "-mzarch"
+ set dg-do-what-default run
+ } elseif [check_effective_target_s390_vx] {
+ lappend DEFAULT_VECTCFLAGS "-march=z13" "-mzarch"
+ set dg-do-what-default run
+ } else {
+ lappend DEFAULT_VECTCFLAGS "-march=z14" "-mzarch"
+ set dg-do-what-default compile
+ }
} else {
return 0
}
} "-march=z13 -mzarch" ]
}
-# Same as above but for the arch12 vector enhancement facility. Test
+# Same as above but for the z14 vector enhancement facility. Test
# is performed with the vector nand instruction.
proc check_effective_target_s390_vxe { } {
if ![istarget s390*-*-*] then {
asm ("vnn %%v24, %%v26, %%v28" : : : "v24", "v26", "v28");
return 0;
}
- } "-march=arch12 -mzarch" ]
+ } "-march=z14 -mzarch" ]
}
#For versions of ARM architectures that have hardware div insn,