From: Dominik Vogt Date: Fri, 4 Dec 2015 14:30:42 +0000 (+0000) Subject: [PATCH 1/2] S/390: Implement "target" attribute. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec47b0863aca86b7edd03ec9906d14556317d585;p=gcc.git [PATCH 1/2] S/390: Implement "target" attribute. gcc/ChangeLog * config/s390/s390.opt (s390_arch_string): Remove. (s390_tune_string): Likewise. (s390_cost_pointer): Add Variable. (s390_tune_flags): Add TargetVariable. (s390_arch_flags, march=, mbackchain, mdebug, mesa, mhard-dfp), (mhard-float, mlong-double-128, mlong-double-64, mhtm, mvx), (mpacked-stack, msmall-exec, msoft-float, mstack-guard=, mstack-size=), (mtune=, mmvcle, mzvector, mzarch, mbranch-cost=, mwarn-dynamicstack), (mwarn-framesize=): Save option. (mno-stack-guard, mno-stack-guard): New option. (mwarn-dynamicstack): Allow mno-warn-dynamicstack. (mwarn-framesize=): Convert to UInteger (negative values are rejected now). * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Split setting macros changeable through the GCC target pragma into a separate function. (s390_cpu_cpp_builtins): Likewise. (s390_pragma_target_parse): New function, implement GCC target pragma if enabled. (s390_register_target_pragmas): Register s390_pragma_target_parse if available. * common/config/s390/s390-common.c (s390_handle_option): Export. Move setting s390_arch_flags to s390.c. Remove s390_tune_flags. Allow 0 as argument to -mstack-size (switch to default value). Allow 0 as argument to -mstack-guard (switch off). Remove now unnecessary explicit parsing code for -mwarn-framesize. * config/s390/s390-protos.h (s390_handle_option): Export. (s390_valid_target_attribute_tree): Export. (s390_reset_previous_fndecl): Export. * config/s390/s390-builtins.def: Use new macro B_GROUP to mark the start and end of HTM and VX builtins. (s390_asm_output_function_prefix): Declare hook. (s390_asm_declare_function_size): Likewise. * config/s390/s390-builtins.h (B_GROUP): Use macro. * config/s390/s390-opts.h: Add comment about processor_type usage. * config/s390/s390.h (TARGET_CPU_IEEE_FLOAT_P, TARGET_CPU_ZARCH_P), (TARGET_CPU_LONG_DISPLACEMENT_P, TARGET_CPU_EXTIMM_P, TARGET_CPU_DFP_P), (TARGET_CPU_Z10_P, TARGET_CPU_Z196_P, TARGET_CPU_ZEC12_P), (TARGET_CPU_HTM_P, TARGET_CPU_Z13_P, TARGET_CPU_VX_P), (TARGET_HARD_FLOAT_P, TARGET_LONG_DISPLACEMENT_P, TARGET_EXTIMM_P), (TARGET_DFP_P, TARGET_Z10_P, TARGET_Z196_P, TARGET_ZEC12_P), (TARGET_HTM_P, TARGET_Z13_P, TARGET_VX_P, TARGET_CPU_EXTIMM), (TARGET_CPU_DFP, TARGET_CPU_Z10, TARGET_CPU_Z196, TARGET_CPU_ZEC12), (TARGET_CPU_HTM, TARGET_CPU_Z13, TARGET_LONG_DISPLACEMENT), (TARGET_EXTIMM, TARGET_DFP, TARGET_Z10, TARGET_Z196, TARGET_ZEC12), (TARGET_Z13, TARGET_VX, S390_USE_TARGET_ATTRIBUTE), (S390_USE_ARCHITECTURE_MODIFIERS, SWITCHABLE_TARGET), (ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_FUNCTION_PREFIX): Likewise. * config/s390/vecintrin.h: Use vector definitions even if __VEC__ is undefined. (vec_all_nan): Rewrite as macro using statement expressions to avoid that the vector keyword needs to be defined when including the file. (vec_all_numeric): Likewise. (vec_any_nan): Likewise. (vec_any_numeric): Likewise. * config/s390/s390.c (s390_previous_fndecl): New static variable. (s390_set_current_function): New function. (s390_cost): Wrapper macro to allow defining the cost table pointer in the options file. (processor_table): Table for march= and mtune= parsing. (s390_init_builtins): Enable all builtins and types unconditionally. (s390_expand_builtin): Generate an error message if builtin is not supported by current options. Correct an error message. (s390_function_specific_restore): New function to set s390_cost. (s390_asm_output_machine_for_arch): New function for emitting .machine and .machinmode directives to the assembler file. (s390_asm_output_function_prefix): Likewise. (s390_asm_declare_function_size): Likewise. (s390_asm_output_function_label): Add mdebug output for feature testing. (s390_option_override): Move implementation into internal function. (s390_option_override_internal): Likewise. Implement option overriding based on current options. (s390_valid_target_attribute_inner_p): New function implementing target attribute logic. (s390_valid_target_attribute_tree): Likewise. (s390_valid_target_attribute_p): Likewise. (s390_reset_previous_fndecl): Likewise. (s390_set_current_function): Likewise. (TARGET_SET_CURRENT_FUNCTION): Provide target hook function. (TARGET_OPTION_VALID_ATTRIBUTE_P): Likewise. (TARGET_OPTION_RESTORE): Likewise. * doc/extend.texi: S390: Document target attribute and pragma. * config.in: Regenerated. * configure: Regenerated. * configure.ac: S390: Check for .machinemode and .machine in gas. S390: Check for architecture modifiers support in gas. gcc/testsuite/ChangeLog * gcc.target/s390/asm-machine-1.c: New test. * gcc.target/s390/asm-machine-2.c: New test. * gcc.target/s390/asm-machine-3.c: New test. * gcc.target/s390/asm-machine-4.c: New test. * gcc.target/s390/target-attribute/tattr-1.c: New test. * gcc.target/s390/target-attribute/tattr-2.c: New test. * gcc.target/s390/target-attribute/tattr-3.c: New test. * gcc.target/s390/target-attribute/tattr-4.c: New test. * gcc.target/s390/target-attribute/tattr-5.c: New test. * gcc.target/s390/target-attribute/tattr-6.c: New test. * gcc.target/s390/target-attribute/tattr-7.c: New test. * gcc.target/s390/target-attribute/tattr-8.c: New test. * gcc.target/s390/target-attribute/tattr-9.c: New test. * gcc.target/s390/target-attribute/tattr-10.c: New test. * gcc.target/s390/target-attribute/tattr-11.c: New test. * gcc.target/s390/target-attribute/tattr-12.c: New test. * gcc.target/s390/target-attribute/tattr-13.c: New test. * gcc.target/s390/target-attribute/tattr-14.c: New test. * gcc.target/s390/target-attribute/tattr-15.c: New test. * gcc.target/s390/target-attribute/tattr-16.c: New test. * gcc.target/s390/target-attribute/tattr-17.c: New test. * gcc.target/s390/target-attribute/tattr-18.c: New test. * gcc.target/s390/target-attribute/tattr-19.c: New test. * gcc.target/s390/target-attribute/tattr-arch-tune-1.c: New test. * gcc.target/s390/target-attribute/tattr-arch-tune-2.c: New test. * gcc.target/s390/target-attribute/tattr-m31-1.c: New test. * gcc.target/s390/target-attribute/tattr-m31-2.c: New test. * gcc.target/s390/target-attribute/tattr-m31-3.c: New test. * gcc.target/s390/target-attribute/tattr-m31-4.c: New test. * gcc.target/s390/target-attribute/tattr-m31-5.c: New test. * gcc.target/s390/target-attribute/tattr-m31-6.c: New test. * gcc.target/s390/target-attribute/tattr-m31-7.c: New test. * gcc.target/s390/target-attribute/tattr-m31-8.c: New test. * gcc.target/s390/target-attribute/tattr-m31-9.c: New test. * gcc.target/s390/target-attribute/tattr-m31-10.c: New test. * gcc.target/s390/target-attribute/tattr-m31-11.c: New test. * gcc.target/s390/target-attribute/tattr-m31-12.c: New test. * gcc.target/s390/target-attribute/tattr-m31-13.c: New test. * gcc.target/s390/target-attribute/tattr-m31-14.c: New test. * gcc.target/s390/target-attribute/tattr-m31-15.c: New test. * gcc.target/s390/target-attribute/tattr-m31-16.c: New test. * gcc.target/s390/target-attribute/tattr-m31-17.c: New test. * gcc.target/s390/target-attribute/tattr-m31-18.c: New test. * gcc.target/s390/target-attribute/tattr-m31-19.c: New test. * gcc.target/s390/target-attribute/tattr-m31-20.c: New test. * gcc.target/s390/target-attribute/tattr-m31-21.c: New test. * gcc.target/s390/target-attribute/tattr-m31-22.c: New test. * gcc.target/s390/target-attribute/tattr-m31-23.c: New test. * gcc.target/s390/target-attribute/tattr-m31-24.c: New test. * gcc.target/s390/target-attribute/tattr-m31-25.c: New test. * gcc.target/s390/target-attribute/tattr-m31-26.c: New test. * gcc.target/s390/target-attribute/tattr-m31-27.c: New test. * gcc.target/s390/target-attribute/tattr-m31-28.c: New test. * gcc.target/s390/target-attribute/tattr-m31-29.c: New test. * gcc.target/s390/target-attribute/tattr-m31-30.c: New test. * gcc.target/s390/target-attribute/tattr-m31-31.c: New test. * gcc.target/s390/target-attribute/tattr-m31-32.c: New test. * gcc.target/s390/target-attribute/tattr-m64-1.c: New test. * gcc.target/s390/target-attribute/tattr-m64-2.c: New test. * gcc.target/s390/target-attribute/tattr-m64-3.c: New test. * gcc.target/s390/target-attribute/tattr-m64-4.c: New test. * gcc.target/s390/target-attribute/tattr-m64-5.c: New test. * gcc.target/s390/target-attribute/tattr-m64-6.c: New test. * gcc.target/s390/target-attribute/tattr-m64-7.c: New test. * gcc.target/s390/target-attribute/tattr-m64-8.c: New test. * gcc.target/s390/target-attribute/tattr-m64-9.c: New test. * gcc.target/s390/target-attribute/tattr-m64-10.c: New test. * gcc.target/s390/target-attribute/tattr-m64-11.c: New test. * gcc.target/s390/target-attribute/tattr-m64-12.c: New test. * gcc.target/s390/target-attribute/tattr-m64-13.c: New test. * gcc.target/s390/target-attribute/tattr-m64-14.c: New test. * gcc.target/s390/target-attribute/tattr-m64-15.c: New test. * gcc.target/s390/target-attribute/tattr-m64-16.c: New test. * gcc.target/s390/target-attribute/tattr-m64-17.c: New test. * gcc.target/s390/target-attribute/tattr-m64-18.c: New test. * gcc.target/s390/target-attribute/tattr-m64-19.c: New test. * gcc.target/s390/target-attribute/tattr-m64-20.c: New test. * gcc.target/s390/target-attribute/tattr-m64-21.c: New test. * gcc.target/s390/target-attribute/tattr-m64-22.c: New test. * gcc.target/s390/target-attribute/tattr-m64-23.c: New test. * gcc.target/s390/target-attribute/tattr-m64-24.c: New test. * gcc.target/s390/target-attribute/tattr-m64-25.c: New test. * gcc.target/s390/target-attribute/tattr-m64-26.c: New test. * gcc.target/s390/target-attribute/tattr-m64-27.c: New test. * gcc.target/s390/target-attribute/tattr-m64-28.c: New test. * gcc.target/s390/target-attribute/tattr-m64-29.c: New test. * gcc.target/s390/target-attribute/tattr-m64-30.c: New test. * gcc.target/s390/target-attribute/tattr-m64-31.c: New test. * gcc.target/s390/target-attribute/tattr-m64-32.c: New test. * gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: New test. * gcc.target/s390/s390.exp (check_effective_target_target_attribute): Add check whether target attribute is available. Run test in target-attribute subdir. * gcc.target/s390/s390-c++.exp (check_effective_target_target_attribute): Likewise. From-SVN: r231271 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1db1edd0507..ba4d08c99d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,95 @@ +2015-12-04 Dominik Vogt + + * config/s390/s390.opt (s390_arch_string): Remove. + (s390_tune_string): Likewise. + (s390_cost_pointer): Add Variable. + (s390_tune_flags): Add TargetVariable. + (s390_arch_flags, march=, mbackchain, mdebug, mesa, mhard-dfp), + (mhard-float, mlong-double-128, mlong-double-64, mhtm, mvx), + (mpacked-stack, msmall-exec, msoft-float, mstack-guard=, mstack-size=), + (mtune=, mmvcle, mzvector, mzarch, mbranch-cost=, mwarn-dynamicstack), + (mwarn-framesize=): Save option. + (mno-stack-guard, mno-stack-guard): New option. + (mwarn-dynamicstack): Allow mno-warn-dynamicstack. + (mwarn-framesize=): Convert to UInteger (negative values are rejected + now). + * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Split setting + macros changeable through the GCC target pragma into a separate + function. + (s390_cpu_cpp_builtins): Likewise. + (s390_pragma_target_parse): New function, implement GCC target pragma + if enabled. + (s390_register_target_pragmas): Register s390_pragma_target_parse if + available. + * common/config/s390/s390-common.c (s390_handle_option): + Export. + Move setting s390_arch_flags to s390.c. + Remove s390_tune_flags. + Allow 0 as argument to -mstack-size (switch to default value). + Allow 0 as argument to -mstack-guard (switch off). + Remove now unnecessary explicit parsing code for -mwarn-framesize. + * config/s390/s390-protos.h (s390_handle_option): Export. + (s390_valid_target_attribute_tree): Export. + (s390_reset_previous_fndecl): Export. + * config/s390/s390-builtins.def: Use new macro B_GROUP to mark the start + and end of HTM and VX builtins. + (s390_asm_output_function_prefix): Declare hook. + (s390_asm_declare_function_size): Likewise. + * config/s390/s390-builtins.h (B_GROUP): Use macro. + * config/s390/s390-opts.h: Add comment about processor_type usage. + * config/s390/s390.h (TARGET_CPU_IEEE_FLOAT_P, TARGET_CPU_ZARCH_P), + (TARGET_CPU_LONG_DISPLACEMENT_P, TARGET_CPU_EXTIMM_P, TARGET_CPU_DFP_P), + (TARGET_CPU_Z10_P, TARGET_CPU_Z196_P, TARGET_CPU_ZEC12_P), + (TARGET_CPU_HTM_P, TARGET_CPU_Z13_P, TARGET_CPU_VX_P), + (TARGET_HARD_FLOAT_P, TARGET_LONG_DISPLACEMENT_P, TARGET_EXTIMM_P), + (TARGET_DFP_P, TARGET_Z10_P, TARGET_Z196_P, TARGET_ZEC12_P), + (TARGET_HTM_P, TARGET_Z13_P, TARGET_VX_P, TARGET_CPU_EXTIMM), + (TARGET_CPU_DFP, TARGET_CPU_Z10, TARGET_CPU_Z196, TARGET_CPU_ZEC12), + (TARGET_CPU_HTM, TARGET_CPU_Z13, TARGET_LONG_DISPLACEMENT), + (TARGET_EXTIMM, TARGET_DFP, TARGET_Z10, TARGET_Z196, TARGET_ZEC12), + (TARGET_Z13, TARGET_VX, S390_USE_TARGET_ATTRIBUTE), + (S390_USE_ARCHITECTURE_MODIFIERS, SWITCHABLE_TARGET), + (ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_FUNCTION_PREFIX): Likewise. + * config/s390/vecintrin.h: Use vector definitions even if __VEC__ is + undefined. + (vec_all_nan): Rewrite as macro using statement expressions to avoid + that the vector keyword needs to be defined when including the file. + (vec_all_numeric): Likewise. + (vec_any_nan): Likewise. + (vec_any_numeric): Likewise. + * config/s390/s390.c (s390_previous_fndecl): New static variable. + (s390_set_current_function): New function. + (s390_cost): Wrapper macro to allow defining the cost table pointer in + the options file. + (processor_table): Table for march= and mtune= parsing. + (s390_init_builtins): Enable all builtins and types unconditionally. + (s390_expand_builtin): Generate an error message if builtin is not + supported by current options. + Correct an error message. + (s390_function_specific_restore): New function to set s390_cost. + (s390_asm_output_machine_for_arch): New function for emitting .machine + and .machinmode directives to the assembler file. + (s390_asm_output_function_prefix): Likewise. + (s390_asm_declare_function_size): Likewise. + (s390_asm_output_function_label): Add mdebug output for feature testing. + (s390_option_override): Move implementation into internal function. + (s390_option_override_internal): Likewise. + Implement option overriding based on current options. + (s390_valid_target_attribute_inner_p): New function implementing target + attribute logic. + (s390_valid_target_attribute_tree): Likewise. + (s390_valid_target_attribute_p): Likewise. + (s390_reset_previous_fndecl): Likewise. + (s390_set_current_function): Likewise. + (TARGET_SET_CURRENT_FUNCTION): Provide target hook function. + (TARGET_OPTION_VALID_ATTRIBUTE_P): Likewise. + (TARGET_OPTION_RESTORE): Likewise. + * doc/extend.texi: S390: Document target attribute and pragma. + * config.in: Regenerated. + * configure: Regenerated. + * configure.ac: S390: Check for .machinemode and .machine in gas. + S390: Check for architecture modifiers support in gas. + 2015-12-04 Kirill Yukhin * c-family/c-common.c (c_common_attribute_table[]): Update max arguments diff --git a/gcc/common/config/s390/s390-common.c b/gcc/common/config/s390/s390-common.c index 43459c890b6..4cf0df7d0c3 100644 --- a/gcc/common/config/s390/s390-common.c +++ b/gcc/common/config/s390/s390-common.c @@ -79,41 +79,27 @@ s390_option_init_struct (struct gcc_options *opts) /* Implement TARGET_HANDLE_OPTION. */ -static bool -s390_handle_option (struct gcc_options *opts, +bool +s390_handle_option (struct gcc_options *opts ATTRIBUTE_UNUSED, struct gcc_options *opts_set ATTRIBUTE_UNUSED, const struct cl_decoded_option *decoded, location_t loc) { size_t code = decoded->opt_index; - const char *arg = decoded->arg; int value = decoded->value; switch (code) { - case OPT_march_: - opts->x_s390_arch_flags = processor_flags_table[value]; - opts->x_s390_arch_string = arg; - return true; - case OPT_mstack_guard_: - if (exact_log2 (value) == -1) + if (value != 0 && exact_log2 (value) == -1) error_at (loc, "stack guard value must be an exact power of 2"); return true; case OPT_mstack_size_: - if (exact_log2 (value) == -1) + if (value != 0 && exact_log2 (value) == -1) error_at (loc, "stack size must be an exact power of 2"); return true; - case OPT_mtune_: - opts->x_s390_tune_flags = processor_flags_table[value]; - return true; - - case OPT_mwarn_framesize_: - return sscanf (arg, HOST_WIDE_INT_PRINT_DEC, - &opts->x_s390_warn_framesize) == 1; - default: return true; } diff --git a/gcc/config.in b/gcc/config.in index a1762bec436..da745c9906c 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -259,6 +259,12 @@ #endif +/* Define if your assembler supports architecture modifiers. */ +#ifndef USED_FOR_TARGET +#undef HAVE_AS_ARCHITECTURE_MODIFIERS +#endif + + /* Define if your avr assembler supports --mlink-relax option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_AVR_MLINK_RELAX_OPTION @@ -508,6 +514,12 @@ #endif +/* Define if your assembler supports .machine and .machinemode. */ +#ifndef USED_FOR_TARGET +#undef HAVE_AS_MACHINE_MACHINEMODE +#endif + + /* Define if your assembler supports mfcr field. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_MFCRF diff --git a/gcc/config/s390/s390-c.c b/gcc/config/s390/s390-c.c index fa69ed31fe5..d87cc90b0da 100644 --- a/gcc/config/s390/s390-c.c +++ b/gcc/config/s390/s390-c.c @@ -287,33 +287,57 @@ s390_macro_to_expand (cpp_reader *pfile, const cpp_token *tok) return expand_this; } -/* Define platform dependent macros. */ -void -s390_cpu_cpp_builtins (cpp_reader *pfile) +/* Helper function that defines or undefines macros. If SET is true, the macro + MACRO_DEF is defined. If SET is false, the macro MACRO_UNDEF is undefined. + Nothing is done if SET and WAS_SET have the same value. */ +static void +s390_def_or_undef_macro (cpp_reader *pfile, + unsigned int mask, + const struct cl_target_option *old_opts, + const struct cl_target_option *new_opts, + const char *macro_def, const char *macro_undef) { - cpp_assert (pfile, "cpu=s390"); - cpp_assert (pfile, "machine=s390"); - cpp_define (pfile, "__s390__"); - if (TARGET_ZARCH) - cpp_define (pfile, "__zarch__"); - if (TARGET_64BIT) - cpp_define (pfile, "__s390x__"); - if (TARGET_LONG_DOUBLE_128) - cpp_define (pfile, "__LONG_DOUBLE_128__"); - if (TARGET_HTM) - cpp_define (pfile, "__HTM__"); - if (TARGET_ZVECTOR) - { - cpp_define (pfile, "__VEC__=10301"); - cpp_define (pfile, "__vector=__attribute__((vector_size(16)))"); - cpp_define (pfile, "__bool=__attribute__((s390_vector_bool)) unsigned"); + bool was_set; + bool set; + + was_set = (!old_opts) ? false : old_opts->x_target_flags & mask; + set = new_opts->x_target_flags & mask; + if (was_set == set) + return; + if (set) + cpp_define (pfile, macro_def); + else + cpp_undef (pfile, macro_undef); +} - if (!flag_iso) +/* Internal function to either define or undef the appropriate system + macros. */ +static void +s390_cpu_cpp_builtins_internal (cpp_reader *pfile, + struct cl_target_option *opts, + const struct cl_target_option *old_opts) +{ + s390_def_or_undef_macro (pfile, MASK_OPT_HTM, old_opts, opts, + "__HTM__", "__HTM__"); + s390_def_or_undef_macro (pfile, MASK_ZVECTOR, old_opts, opts, + "__VEC__=10301", "__VEC__"); + s390_def_or_undef_macro (pfile, MASK_ZVECTOR, old_opts, opts, + "__vector=__attribute__((vector_size(16)))", + "__vector__"); + s390_def_or_undef_macro (pfile, MASK_ZVECTOR, old_opts, opts, + "__bool=__attribute__((s390_vector_bool)) unsigned", + "__bool"); + if (!flag_iso) + { + s390_def_or_undef_macro (pfile, MASK_ZVECTOR, old_opts, opts, + "__VECTOR_KEYWORD_SUPPORTED__", + "__VECTOR_KEYWORD_SUPPORTED__"); + s390_def_or_undef_macro (pfile, MASK_ZVECTOR, old_opts, opts, + "vector=vector", "vector"); + s390_def_or_undef_macro (pfile, MASK_ZVECTOR, old_opts, opts, + "bool=bool", "bool"); + if (TARGET_ZVECTOR_P (opts->x_target_flags) && __vector_keyword == NULL) { - cpp_define (pfile, "__VECTOR_KEYWORD_SUPPORTED__"); - cpp_define (pfile, "vector=vector"); - cpp_define (pfile, "bool=bool"); - __vector_keyword = get_identifier ("__vector"); C_CPP_HASHNODE (__vector_keyword)->flags |= NODE_CONDITIONAL; @@ -335,6 +359,79 @@ s390_cpu_cpp_builtins (cpp_reader *pfile) } } +/* Define platform dependent macros. */ +void +s390_cpu_cpp_builtins (cpp_reader *pfile) +{ + struct cl_target_option opts; + + cpp_assert (pfile, "cpu=s390"); + cpp_assert (pfile, "machine=s390"); + cpp_define (pfile, "__s390__"); + if (TARGET_ZARCH) + cpp_define (pfile, "__zarch__"); + if (TARGET_64BIT) + cpp_define (pfile, "__s390x__"); + if (TARGET_LONG_DOUBLE_128) + cpp_define (pfile, "__LONG_DOUBLE_128__"); + cl_target_option_save (&opts, &global_options); + s390_cpu_cpp_builtins_internal (pfile, &opts, NULL); +} + +#if S390_USE_TARGET_ATTRIBUTE +/* Hook to validate the current #pragma GCC target and set the state, and + update the macros based on what was changed. If ARGS is NULL, then + POP_TARGET is used to reset the options. */ + +static bool +s390_pragma_target_parse (tree args, tree pop_target) +{ + tree prev_tree = build_target_option_node (&global_options); + tree cur_tree; + + if (! args) + cur_tree = pop_target; + else + { + cur_tree = s390_valid_target_attribute_tree (args, &global_options, + &global_options_set, true); + if (!cur_tree || cur_tree == error_mark_node) + { + cl_target_option_restore (&global_options, + TREE_TARGET_OPTION (prev_tree)); + return false; + } + } + + target_option_current_node = cur_tree; + s390_activate_target_options (target_option_current_node); + + { + struct cl_target_option *prev_opt; + struct cl_target_option *cur_opt; + + /* Figure out the previous/current differences. */ + prev_opt = TREE_TARGET_OPTION (prev_tree); + cur_opt = TREE_TARGET_OPTION (cur_tree); + + /* For the definitions, ensure all newly defined macros are considered + as used for -Wunused-macros. There is no point warning about the + compiler predefined macros. */ + cpp_options *cpp_opts = cpp_get_options (parse_in); + unsigned char saved_warn_unused_macros = cpp_opts->warn_unused_macros; + + cpp_opts->warn_unused_macros = 0; + + /* Define all of the macros for new options that were just turned on. */ + s390_cpu_cpp_builtins_internal (parse_in, cur_opt, prev_opt); + + cpp_opts->warn_unused_macros = saved_warn_unused_macros; + } + + return true; +} +#endif + /* Expand builtins which can directly be mapped to tree expressions. LOC - location information FCODE - function code of the builtin @@ -884,4 +981,8 @@ void s390_register_target_pragmas (void) { targetm.resolve_overloaded_builtin = s390_resolve_overloaded_builtin; +#if S390_USE_TARGET_ATTRIBUTE + /* Update pragma hook to allow parsing #pragma GCC target. */ + targetm.target_option.pragma_parse = s390_pragma_target_parse; +#endif } diff --git a/gcc/config/s390/s390-opts.h b/gcc/config/s390/s390-opts.h index f0ea532df2c..39b8824040d 100644 --- a/gcc/config/s390/s390-opts.h +++ b/gcc/config/s390/s390-opts.h @@ -22,7 +22,9 @@ along with GCC; see the file COPYING3. If not see /* Which processor to generate code or schedule for. The cpu attribute defines a list that mirrors this list, so changes to s390.md must be - made at the same time. */ + made at the same time. The enumeration must also be kept in snyc with + processor_table in s390.c (the enumeration values are used as indices into + the table). */ enum processor_type { diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h index a8b885476dd..962abb155c0 100644 --- a/gcc/config/s390/s390-protos.h +++ b/gcc/config/s390/s390-protos.h @@ -31,6 +31,12 @@ extern int s390_float_const_zero_p (rtx value); extern bool s390_check_symref_alignment (rtx addr, HOST_WIDE_INT alignment); +/* In s390-common.c. */ +extern bool s390_handle_option (struct gcc_options *opts ATTRIBUTE_UNUSED, + struct gcc_options *opts_set ATTRIBUTE_UNUSED, + const struct cl_decoded_option *decoded, + location_t loc); + /* Declare functions in s390.c. */ extern HOST_WIDE_INT s390_initial_elimination_offset (int, int); @@ -46,6 +52,19 @@ extern int s390_class_max_nregs (enum reg_class, machine_mode); extern int s390_cannot_change_mode_class (machine_mode, machine_mode, enum reg_class); extern bool s390_function_arg_vector (machine_mode, const_tree); +#if S390_USE_TARGET_ATTRIBUTE +extern tree s390_valid_target_attribute_tree (tree args, + struct gcc_options *opts, + const struct gcc_options + *opts_set, bool is_pragma); +extern void s390_activate_target_options (tree new_tree); +extern void +s390_asm_output_function_prefix (FILE *asm_out_file, + const char *fnname ATTRIBUTE_UNUSED); +extern void +s390_asm_declare_function_size (FILE *asm_out_file, + const char *fnname ATTRIBUTE_UNUSED, tree decl); +#endif #ifdef RTX_CODE extern int s390_extra_constraint_str (rtx, int, const char *); diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 7e7ed45230a..e0851e5cae8 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see #include "coretypes.h" #include "backend.h" #include "target.h" +#include "target-globals.h" #include "rtl.h" #include "tree.h" #include "gimple.h" @@ -40,6 +41,7 @@ along with GCC; see the file COPYING3. If not see #include "recog.h" #include "cgraph.h" #include "diagnostic-core.h" +#include "diagnostic.h" #include "alias.h" #include "fold-const.h" #include "print-tree.h" @@ -79,6 +81,9 @@ along with GCC; see the file COPYING3. If not see /* This file should be included last. */ #include "target-def.h" +/* Remember the last target of s390_set_current_function. */ +static GTY(()) tree s390_previous_fndecl; + /* Define the specific costs for a given cpu. */ struct processor_costs @@ -116,7 +121,7 @@ struct processor_costs const int dsgr; }; -const struct processor_costs *s390_cost; +#define s390_cost ((const struct processor_costs *)(s390_cost_pointer)) static const struct processor_costs z900_cost = @@ -310,6 +315,27 @@ struct processor_costs zEC12_cost = COSTS_N_INSNS (160), /* DSGR cracked */ }; +static struct +{ + const char *const name; + const enum processor_type processor; + const struct processor_costs *cost; +} +const processor_table[] = +{ + { "g5", PROCESSOR_9672_G5, &z900_cost }, + { "g6", PROCESSOR_9672_G6, &z900_cost }, + { "z900", PROCESSOR_2064_Z900, &z900_cost }, + { "z990", PROCESSOR_2084_Z990, &z990_cost }, + { "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost }, + { "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost }, + { "z10", PROCESSOR_2097_Z10, &z10_cost }, + { "z196", PROCESSOR_2817_Z196, &z196_cost }, + { "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost }, + { "z13", PROCESSOR_2964_Z13, &zEC12_cost }, + { "native", PROCESSOR_NATIVE, NULL } +}; + extern int reload_completed; /* Kept up to date using the SCHED_VARIABLE_ISSUE hook. */ @@ -613,10 +639,6 @@ s390_init_builtins (void) NULL, NULL); tree noreturn_attr = tree_cons (get_identifier ("noreturn"), NULL, NULL); tree c_uint64_type_node; - unsigned int bflags_mask = (BFLAGS_MASK_INIT); - - bflags_mask |= (TARGET_VX) ? B_VX : 0; - bflags_mask |= (TARGET_HTM) ? B_HTM : 0; /* The uint64_type_node from tree.c is not compatible to the C99 uint64_t data type. What we want is c_uint64_type_node from @@ -629,46 +651,46 @@ s390_init_builtins (void) #undef DEF_TYPE #define DEF_TYPE(INDEX, BFLAGS, NODE, CONST_P) \ - if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \ + if (s390_builtin_types[INDEX] == NULL) \ s390_builtin_types[INDEX] = (!CONST_P) ? \ (NODE) : build_type_variant ((NODE), 1, 0); #undef DEF_POINTER_TYPE #define DEF_POINTER_TYPE(INDEX, BFLAGS, INDEX_BASE) \ - if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \ + if (s390_builtin_types[INDEX] == NULL) \ s390_builtin_types[INDEX] = \ build_pointer_type (s390_builtin_types[INDEX_BASE]); #undef DEF_DISTINCT_TYPE #define DEF_DISTINCT_TYPE(INDEX, BFLAGS, INDEX_BASE) \ - if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \ + if (s390_builtin_types[INDEX] == NULL) \ s390_builtin_types[INDEX] = \ build_distinct_type_copy (s390_builtin_types[INDEX_BASE]); #undef DEF_VECTOR_TYPE #define DEF_VECTOR_TYPE(INDEX, BFLAGS, INDEX_BASE, ELEMENTS) \ - if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \ + if (s390_builtin_types[INDEX] == NULL) \ s390_builtin_types[INDEX] = \ build_vector_type (s390_builtin_types[INDEX_BASE], ELEMENTS); #undef DEF_OPAQUE_VECTOR_TYPE #define DEF_OPAQUE_VECTOR_TYPE(INDEX, BFLAGS, INDEX_BASE, ELEMENTS) \ - if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \ + if (s390_builtin_types[INDEX] == NULL) \ s390_builtin_types[INDEX] = \ build_opaque_vector_type (s390_builtin_types[INDEX_BASE], ELEMENTS); #undef DEF_FN_TYPE #define DEF_FN_TYPE(INDEX, BFLAGS, args...) \ - if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \ + if (s390_builtin_fn_types[INDEX] == NULL) \ s390_builtin_fn_types[INDEX] = \ - build_function_type_list (args, NULL_TREE); + build_function_type_list (args, NULL_TREE); #undef DEF_OV_TYPE #define DEF_OV_TYPE(...) #include "s390-builtin-types.def" #undef B_DEF #define B_DEF(NAME, PATTERN, ATTRS, BFLAGS, OPFLAGS, FNTYPE) \ - if (((BFLAGS) & ~bflags_mask) == 0) \ + if (s390_builtin_decls[S390_BUILTIN_##NAME] == NULL) \ s390_builtin_decls[S390_BUILTIN_##NAME] = \ add_builtin_function ("__builtin_" #NAME, \ s390_builtin_fn_types[FNTYPE], \ @@ -678,7 +700,8 @@ s390_init_builtins (void) ATTRS); #undef OB_DEF #define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, BFLAGS, FNTYPE) \ - if (((BFLAGS) & ~bflags_mask) == 0) \ + if (s390_builtin_decls[S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX] \ + == NULL) \ s390_builtin_decls[S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX] = \ add_builtin_function ("__builtin_" #NAME, \ s390_builtin_fn_types[FNTYPE], \ @@ -762,10 +785,29 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, if (TARGET_DEBUG_ARG) { fprintf (stderr, - "s390_expand_builtin, code = %4d, %s\n", - (int)fcode, IDENTIFIER_POINTER (DECL_NAME (fndecl))); + "s390_expand_builtin, code = %4d, %s, bflags = 0x%x\n", + (int)fcode, IDENTIFIER_POINTER (DECL_NAME (fndecl)), + bflags_for_builtin (fcode)); } + if (S390_USE_TARGET_ATTRIBUTE) + { + unsigned int bflags; + + bflags = bflags_for_builtin (fcode); + if ((bflags & B_HTM) && !TARGET_HTM) + { + error ("Builtin %qF is not supported without -mhtm " + "(default with -march=zEC12 and higher).", fndecl); + return const0_rtx; + } + if ((bflags & B_VX) && !TARGET_VX) + { + error ("Builtin %qF is not supported without -mvx " + "(default with -march=z13 and higher).", fndecl); + return const0_rtx; + } + } if (fcode >= S390_OVERLOADED_BUILTIN_VAR_OFFSET && fcode < S390_ALL_BUILTIN_MAX) { @@ -907,14 +949,6 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, arity++; } - if (last_vec_mode != VOIDmode && !TARGET_VX) - { - error ("Vector type builtin %qF is not supported without -mvx " - "(default with -march=z13).", - fndecl); - return const0_rtx; - } - switch (arity) { case 0: @@ -6701,6 +6735,63 @@ s390_function_num_hotpatch_hw (tree decl, } } +/* Write the current .machine and .machinemode specification to the assembler + file. */ + +#if S390_USE_TARGET_ATTRIBUTE +static void +s390_asm_output_machine_for_arch (FILE *asm_out_file) +{ + fprintf (asm_out_file, "\t.machinemode %s\n", + (TARGET_ZARCH) ? "zarch" : "esa"); + fprintf (asm_out_file, "\t.machine \"%s", processor_table[s390_arch].name); + if (S390_USE_ARCHITECTURE_MODIFIERS) + { + int cpu_flags; + + cpu_flags = processor_flags_table[(int) s390_arch]; + if (TARGET_HTM && !(cpu_flags & PF_TX)) + fprintf (asm_out_file, "+htm"); + else if (!TARGET_HTM && (cpu_flags & PF_TX)) + fprintf (asm_out_file, "+nohtm"); + if (TARGET_VX && !(cpu_flags & PF_VX)) + fprintf (asm_out_file, "+vx"); + else if (!TARGET_VX && (cpu_flags & PF_VX)) + fprintf (asm_out_file, "+novx"); + } + fprintf (asm_out_file, "\"\n"); +} + +/* Write an extra function header before the very start of the function. */ + +void +s390_asm_output_function_prefix (FILE *asm_out_file, + const char *fnname ATTRIBUTE_UNUSED) +{ + if (DECL_FUNCTION_SPECIFIC_TARGET (current_function_decl) == NULL) + return; + /* Since only the function specific options are saved but not the indications + which options are set, it's too much work here to figure out which options + have actually changed. Thus, generate .machine and .machinemode whenever a + function has the target attribute or pragma. */ + fprintf (asm_out_file, "\t.machinemode push\n"); + fprintf (asm_out_file, "\t.machine push\n"); + s390_asm_output_machine_for_arch (asm_out_file); +} + +/* Write an extra function footer after the very end of the function. */ + +void +s390_asm_declare_function_size (FILE *asm_out_file, + const char *fnname ATTRIBUTE_UNUSED, tree decl) +{ + if (DECL_FUNCTION_SPECIFIC_TARGET (decl) == NULL) + return; + fprintf (asm_out_file, "\t.machine pop\n"); + fprintf (asm_out_file, "\t.machinemode pop\n"); +} +#endif + /* Write the extra assembler code needed to declare a function properly. */ void @@ -6742,6 +6833,28 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname, ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (function_alignment)); } + if (S390_USE_TARGET_ATTRIBUTE && TARGET_DEBUG_ARG) + { + asm_fprintf (asm_out_file, "\t# fn:%s ar%d\n", fname, s390_arch); + asm_fprintf (asm_out_file, "\t# fn:%s tu%d\n", fname, s390_tune); + asm_fprintf (asm_out_file, "\t# fn:%s sg%d\n", fname, s390_stack_guard); + asm_fprintf (asm_out_file, "\t# fn:%s ss%d\n", fname, s390_stack_size); + asm_fprintf (asm_out_file, "\t# fn:%s bc%d\n", fname, s390_branch_cost); + asm_fprintf (asm_out_file, "\t# fn:%s wf%d\n", fname, + s390_warn_framesize); + asm_fprintf (asm_out_file, "\t# fn:%s ba%d\n", fname, TARGET_BACKCHAIN); + asm_fprintf (asm_out_file, "\t# fn:%s hd%d\n", fname, TARGET_HARD_DFP); + asm_fprintf (asm_out_file, "\t# fn:%s hf%d\n", fname, !TARGET_SOFT_FLOAT); + asm_fprintf (asm_out_file, "\t# fn:%s ht%d\n", fname, TARGET_OPT_HTM); + asm_fprintf (asm_out_file, "\t# fn:%s vx%d\n", fname, TARGET_OPT_VX); + asm_fprintf (asm_out_file, "\t# fn:%s ps%d\n", fname, + TARGET_PACKED_STACK); + asm_fprintf (asm_out_file, "\t# fn:%s se%d\n", fname, TARGET_SMALL_EXEC); + asm_fprintf (asm_out_file, "\t# fn:%s mv%d\n", fname, TARGET_MVCLE); + asm_fprintf (asm_out_file, "\t# fn:%s zv%d\n", fname, TARGET_ZVECTOR); + asm_fprintf (asm_out_file, "\t# fn:%s wd%d\n", fname, + s390_warn_dynamicstack_p); + } ASM_OUTPUT_LABEL (asm_out_file, fname); if (hw_after > 0) asm_fprintf (asm_out_file, @@ -13434,230 +13547,254 @@ s390_loop_unroll_adjust (unsigned nunroll, struct loop *loop) } } +/* Restore the current options. This is a hook function and also called + internally. */ + static void -s390_option_override (void) +s390_function_specific_restore (struct gcc_options *opts, + struct cl_target_option *ptr ATTRIBUTE_UNUSED) { - unsigned int i; - cl_deferred_option *opt; - vec *v = - (vec *) s390_deferred_options; - - if (v) - FOR_EACH_VEC_ELT (*v, i, opt) - { - switch (opt->opt_index) - { - case OPT_mhotpatch_: - { - int val1; - int val2; - char s[256]; - char *t; - - strncpy (s, opt->arg, 256); - s[255] = 0; - t = strchr (s, ','); - if (t != NULL) - { - *t = 0; - t++; - val1 = integral_argument (s); - val2 = integral_argument (t); - } - else - { - val1 = -1; - val2 = -1; - } - if (val1 == -1 || val2 == -1) - { - /* argument is not a plain number */ - error ("arguments to %qs should be non-negative integers", - "-mhotpatch=n,m"); - break; - } - else if (val1 > s390_hotpatch_hw_max - || val2 > s390_hotpatch_hw_max) - { - error ("argument to %qs is too large (max. %d)", - "-mhotpatch=n,m", s390_hotpatch_hw_max); - break; - } - s390_hotpatch_hw_before_label = val1; - s390_hotpatch_hw_after_label = val2; - break; - } - default: - gcc_unreachable (); - } - } - - /* Set up function hooks. */ - init_machine_status = s390_init_machine_status; + opts->x_s390_cost_pointer = (long)processor_table[opts->x_s390_tune].cost; +} +static void +s390_option_override_internal (struct gcc_options *opts, + const struct gcc_options *opts_set) +{ /* Architecture mode defaults according to ABI. */ - if (!(target_flags_explicit & MASK_ZARCH)) + if (!(opts_set->x_target_flags & MASK_ZARCH)) { if (TARGET_64BIT) - target_flags |= MASK_ZARCH; + opts->x_target_flags |= MASK_ZARCH; else - target_flags &= ~MASK_ZARCH; + opts->x_target_flags &= ~MASK_ZARCH; } - /* Set the march default in case it hasn't been specified on - cmdline. */ - if (s390_arch == PROCESSOR_max) - { - s390_arch_string = TARGET_ZARCH? "z900" : "g5"; - s390_arch = TARGET_ZARCH ? PROCESSOR_2064_Z900 : PROCESSOR_9672_G5; - s390_arch_flags = processor_flags_table[(int)s390_arch]; - } + /* Set the march default in case it hasn't been specified on cmdline. */ + if (!opts_set->x_s390_arch) + opts->x_s390_arch = TARGET_ZARCH_P (opts->x_target_flags) + ? PROCESSOR_2064_Z900 : PROCESSOR_9672_G5; + opts->x_s390_arch_flags = processor_flags_table[(int) opts->x_s390_arch]; /* Determine processor to tune for. */ - if (s390_tune == PROCESSOR_max) - { - s390_tune = s390_arch; - s390_tune_flags = s390_arch_flags; - } + if (!opts_set->x_s390_tune) + opts->x_s390_tune = opts->x_s390_arch; + opts->x_s390_tune_flags = processor_flags_table[opts->x_s390_tune]; /* Sanity checks. */ - if (s390_arch == PROCESSOR_NATIVE || s390_tune == PROCESSOR_NATIVE) + if (opts->x_s390_arch == PROCESSOR_NATIVE + || opts->x_s390_tune == PROCESSOR_NATIVE) gcc_unreachable (); - if (TARGET_ZARCH && !TARGET_CPU_ZARCH) - error ("z/Architecture mode not supported on %s", s390_arch_string); - if (TARGET_64BIT && !TARGET_ZARCH) + if (TARGET_ZARCH_P (opts->x_target_flags) && !TARGET_CPU_ZARCH_P (opts)) + error ("z/Architecture mode not supported on %s", + processor_table[(int)opts->x_s390_arch].name); + if (TARGET_64BIT && !TARGET_ZARCH_P (opts->x_target_flags)) error ("64-bit ABI not supported in ESA/390 mode"); - /* Use hardware DFP if available and not explicitly disabled by - user. E.g. with -m31 -march=z10 -mzarch */ - if (!(target_flags_explicit & MASK_HARD_DFP) && TARGET_DFP) - target_flags |= MASK_HARD_DFP; - /* Enable hardware transactions if available and not explicitly disabled by user. E.g. with -m31 -march=zEC12 -mzarch */ - if (!(target_flags_explicit & MASK_OPT_HTM) && TARGET_CPU_HTM && TARGET_ZARCH) - target_flags |= MASK_OPT_HTM; + if (!TARGET_OPT_HTM_P (opts_set->x_target_flags)) + { + if (TARGET_CPU_HTM_P (opts) && TARGET_ZARCH_P (opts->x_target_flags)) + opts->x_target_flags |= MASK_OPT_HTM; + else + opts->x_target_flags &= ~MASK_OPT_HTM; + } - if (target_flags_explicit & MASK_OPT_VX) + if (TARGET_OPT_VX_P (opts_set->x_target_flags)) { - if (TARGET_OPT_VX) + if (TARGET_OPT_VX_P (opts->x_target_flags)) { - if (!TARGET_CPU_VX) + if (!TARGET_CPU_VX_P (opts)) error ("hardware vector support not available on %s", - s390_arch_string); - if (TARGET_SOFT_FLOAT) + processor_table[(int)opts->x_s390_arch].name); + if (TARGET_SOFT_FLOAT_P (opts->x_target_flags)) error ("hardware vector support not available with -msoft-float"); } } - else if (TARGET_CPU_VX) - /* Enable vector support if available and not explicitly disabled - by user. E.g. with -m31 -march=z13 -mzarch */ - target_flags |= MASK_OPT_VX; + else + { + if (TARGET_CPU_VX_P (opts)) + /* Enable vector support if available and not explicitly disabled + by user. E.g. with -m31 -march=z13 -mzarch */ + opts->x_target_flags |= MASK_OPT_VX; + else + opts->x_target_flags &= ~MASK_OPT_VX; + } - if (TARGET_HARD_DFP && !TARGET_DFP) + /* Use hardware DFP if available and not explicitly disabled by + user. E.g. with -m31 -march=z10 -mzarch */ + if (!TARGET_HARD_DFP_P (opts_set->x_target_flags)) + { + if (TARGET_DFP_P (opts)) + opts->x_target_flags |= MASK_HARD_DFP; + else + opts->x_target_flags &= ~MASK_HARD_DFP; + } + + if (TARGET_HARD_DFP_P (opts->x_target_flags) && !TARGET_DFP_P (opts)) { - if (target_flags_explicit & MASK_HARD_DFP) + if (TARGET_HARD_DFP_P (opts_set->x_target_flags)) { - if (!TARGET_CPU_DFP) + if (!TARGET_CPU_DFP_P (opts)) error ("hardware decimal floating point instructions" - " not available on %s", s390_arch_string); - if (!TARGET_ZARCH) + " not available on %s", + processor_table[(int)opts->x_s390_arch].name); + if (!TARGET_ZARCH_P (opts->x_target_flags)) error ("hardware decimal floating point instructions" " not available in ESA/390 mode"); } else - target_flags &= ~MASK_HARD_DFP; + opts->x_target_flags &= ~MASK_HARD_DFP; } - if ((target_flags_explicit & MASK_SOFT_FLOAT) && TARGET_SOFT_FLOAT) + if (TARGET_SOFT_FLOAT_P (opts_set->x_target_flags) + && TARGET_SOFT_FLOAT_P (opts->x_target_flags)) { - if ((target_flags_explicit & MASK_HARD_DFP) && TARGET_HARD_DFP) + if (TARGET_HARD_DFP_P (opts_set->x_target_flags) + && TARGET_HARD_DFP_P (opts->x_target_flags)) error ("-mhard-dfp can%'t be used in conjunction with -msoft-float"); - target_flags &= ~MASK_HARD_DFP; - } - - /* Set processor cost function. */ - switch (s390_tune) - { - case PROCESSOR_2084_Z990: - s390_cost = &z990_cost; - break; - case PROCESSOR_2094_Z9_109: - case PROCESSOR_2094_Z9_EC: - s390_cost = &z9_109_cost; - break; - case PROCESSOR_2097_Z10: - s390_cost = &z10_cost; - break; - case PROCESSOR_2817_Z196: - s390_cost = &z196_cost; - break; - case PROCESSOR_2827_ZEC12: - case PROCESSOR_2964_Z13: - s390_cost = &zEC12_cost; - break; - default: - s390_cost = &z900_cost; + opts->x_target_flags &= ~MASK_HARD_DFP; } - if (TARGET_BACKCHAIN && TARGET_PACKED_STACK && TARGET_HARD_FLOAT) + if (TARGET_BACKCHAIN_P (opts->x_target_flags) + && TARGET_PACKED_STACK_P (opts->x_target_flags) + && TARGET_HARD_FLOAT_P (opts->x_target_flags)) error ("-mbackchain -mpacked-stack -mhard-float are not supported " "in combination"); - if (s390_stack_size) + if (opts->x_s390_stack_size) { - if (s390_stack_guard >= s390_stack_size) + if (opts->x_s390_stack_guard >= opts->x_s390_stack_size) error ("stack size must be greater than the stack guard value"); - else if (s390_stack_size > 1 << 16) + else if (opts->x_s390_stack_size > 1 << 16) error ("stack size must not be greater than 64k"); } - else if (s390_stack_guard) + else if (opts->x_s390_stack_guard) error ("-mstack-guard implies use of -mstack-size"); #ifdef TARGET_DEFAULT_LONG_DOUBLE_128 - if (!(target_flags_explicit & MASK_LONG_DOUBLE_128)) - target_flags |= MASK_LONG_DOUBLE_128; + if (!TARGET_LONG_DOUBLE_128_P (opts_set->x_target_flags)) + opts->x_target_flags |= MASK_LONG_DOUBLE_128; #endif - if (s390_tune >= PROCESSOR_2097_Z10) + if (opts->x_s390_tune >= PROCESSOR_2097_Z10) { maybe_set_param_value (PARAM_MAX_UNROLLED_INSNS, 100, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); maybe_set_param_value (PARAM_MAX_UNROLL_TIMES, 32, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); maybe_set_param_value (PARAM_MAX_COMPLETELY_PEELED_INSNS, 2000, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); maybe_set_param_value (PARAM_MAX_COMPLETELY_PEEL_TIMES, 64, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); } maybe_set_param_value (PARAM_MAX_PENDING_LIST_LENGTH, 256, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); /* values for loop prefetching */ maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE, 256, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); maybe_set_param_value (PARAM_L1_CACHE_SIZE, 128, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); /* s390 has more than 2 levels and the size is much larger. Since we are always running virtualized assume that we only get a small part of the caches above l1. */ maybe_set_param_value (PARAM_L2_CACHE_SIZE, 1500, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); maybe_set_param_value (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO, 2, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 6, - global_options.x_param_values, - global_options_set.x_param_values); + opts->x_param_values, + opts_set->x_param_values); + + /* Use the alternative scheduling-pressure algorithm by default. */ + maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2, + opts->x_param_values, + opts_set->x_param_values); + + /* Call target specific restore function to do post-init work. At the moment, + this just sets opts->x_s390_cost_pointer. */ + s390_function_specific_restore (opts, NULL); +} + +static void +s390_option_override (void) +{ + unsigned int i; + cl_deferred_option *opt; + vec *v = + (vec *) s390_deferred_options; + + if (v) + FOR_EACH_VEC_ELT (*v, i, opt) + { + switch (opt->opt_index) + { + case OPT_mhotpatch_: + { + int val1; + int val2; + char s[256]; + char *t; + + strncpy (s, opt->arg, 256); + s[255] = 0; + t = strchr (s, ','); + if (t != NULL) + { + *t = 0; + t++; + val1 = integral_argument (s); + val2 = integral_argument (t); + } + else + { + val1 = -1; + val2 = -1; + } + if (val1 == -1 || val2 == -1) + { + /* argument is not a plain number */ + error ("arguments to %qs should be non-negative integers", + "-mhotpatch=n,m"); + break; + } + else if (val1 > s390_hotpatch_hw_max + || val2 > s390_hotpatch_hw_max) + { + error ("argument to %qs is too large (max. %d)", + "-mhotpatch=n,m", s390_hotpatch_hw_max); + break; + } + s390_hotpatch_hw_before_label = val1; + s390_hotpatch_hw_after_label = val2; + break; + } + default: + gcc_unreachable (); + } + } + + /* Set up function hooks. */ + init_machine_status = s390_init_machine_status; + + s390_option_override_internal (&global_options, &global_options_set); + + /* Save the initial options in case the user does function specific + options. */ + target_option_default_node = build_target_option_node (&global_options); + target_option_current_node = target_option_default_node; /* This cannot reside in s390_option_optimization_table since HAVE_prefetch requires the arch flags to be evaluated already. Since prefetching @@ -13665,11 +13802,6 @@ s390_option_override (void) if (flag_prefetch_loop_arrays < 0 && HAVE_prefetch && optimize >= 3) flag_prefetch_loop_arrays = 1; - /* Use the alternative scheduling-pressure algorithm by default. */ - maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2, - global_options.x_param_values, - global_options_set.x_param_values); - if (TARGET_TPF) { /* Don't emit DWARF3/4 unless specifically selected. The TPF @@ -13696,6 +13828,386 @@ s390_option_override (void) register_pass (&insert_pass_s390_early_mach); } +#if S390_USE_TARGET_ATTRIBUTE +/* Inner function to process the attribute((target(...))), take an argument and + set the current options from the argument. If we have a list, recursively go + over the list. */ + +static bool +s390_valid_target_attribute_inner_p (tree args, + struct gcc_options *opts, + struct gcc_options *new_opts_set, + bool force_pragma) +{ + char *next_optstr; + bool ret = true; + +#define S390_ATTRIB(S,O,A) { S, sizeof (S)-1, O, A, 0 } +#define S390_PRAGMA(S,O,A) { S, sizeof (S)-1, O, A, 1 } + static const struct + { + const char *string; + size_t len; + int opt; + int has_arg; + int only_as_pragma; + } attrs[] = { + /* enum options */ + S390_ATTRIB ("arch=", OPT_march_, 1), + S390_ATTRIB ("tune=", OPT_mtune_, 1), + /* uinteger options */ + S390_ATTRIB ("stack-guard=", OPT_mstack_guard_, 1), + S390_ATTRIB ("stack-size=", OPT_mstack_size_, 1), + S390_ATTRIB ("branch-cost=", OPT_mbranch_cost_, 1), + S390_ATTRIB ("warn-framesize=", OPT_mwarn_framesize_, 1), + /* flag options */ + S390_ATTRIB ("backchain", OPT_mbackchain, 0), + S390_ATTRIB ("hard-dfp", OPT_mhard_dfp, 0), + S390_ATTRIB ("hard-float", OPT_mhard_float, 0), + S390_ATTRIB ("htm", OPT_mhtm, 0), + S390_ATTRIB ("vx", OPT_mvx, 0), + S390_ATTRIB ("packed-stack", OPT_mpacked_stack, 0), + S390_ATTRIB ("small-exec", OPT_msmall_exec, 0), + S390_ATTRIB ("soft-float", OPT_msoft_float, 0), + S390_ATTRIB ("mvcle", OPT_mmvcle, 0), + S390_PRAGMA ("zvector", OPT_mzvector, 0), + /* boolean options */ + S390_ATTRIB ("warn-dynamicstack", OPT_mwarn_dynamicstack, 0), + }; +#undef S390_ATTRIB +#undef S390_PRAGMA + + /* If this is a list, recurse to get the options. */ + if (TREE_CODE (args) == TREE_LIST) + { + bool ret = true; + int num_pragma_values; + int i; + + /* Note: attribs.c:decl_attributes prepends the values from + current_target_pragma to the list of target attributes. To determine + whether we're looking at a value of the attribute or the pragma we + assume that the first [list_length (current_target_pragma)] values in + the list are the values from the pragma. */ + num_pragma_values = (!force_pragma && current_target_pragma != NULL) + ? list_length (current_target_pragma) : 0; + for (i = 0; args; args = TREE_CHAIN (args), i++) + { + bool is_pragma; + + is_pragma = (force_pragma || i < num_pragma_values); + if (TREE_VALUE (args) + && !s390_valid_target_attribute_inner_p (TREE_VALUE (args), + opts, new_opts_set, + is_pragma)) + { + ret = false; + } + } + return ret; + } + + else if (TREE_CODE (args) != STRING_CST) + { + error ("attribute % argument not a string"); + return false; + } + + /* Handle multiple arguments separated by commas. */ + next_optstr = ASTRDUP (TREE_STRING_POINTER (args)); + + while (next_optstr && *next_optstr != '\0') + { + char *p = next_optstr; + char *orig_p = p; + char *comma = strchr (next_optstr, ','); + size_t len, opt_len; + int opt; + bool opt_set_p; + char ch; + unsigned i; + int mask = 0; + enum cl_var_type var_type; + bool found; + + if (comma) + { + *comma = '\0'; + len = comma - next_optstr; + next_optstr = comma + 1; + } + else + { + len = strlen (p); + next_optstr = NULL; + } + + /* Recognize no-xxx. */ + if (len > 3 && p[0] == 'n' && p[1] == 'o' && p[2] == '-') + { + opt_set_p = false; + p += 3; + len -= 3; + } + else + opt_set_p = true; + + /* Find the option. */ + ch = *p; + found = false; + for (i = 0; i < ARRAY_SIZE (attrs); i++) + { + opt_len = attrs[i].len; + if (ch == attrs[i].string[0] + && ((attrs[i].has_arg) ? len > opt_len : len == opt_len) + && memcmp (p, attrs[i].string, opt_len) == 0) + { + opt = attrs[i].opt; + if (!opt_set_p && cl_options[opt].cl_reject_negative) + continue; + mask = cl_options[opt].var_value; + var_type = cl_options[opt].var_type; + found = true; + break; + } + } + + /* Process the option. */ + if (!found) + { + error ("attribute(target(\"%s\")) is unknown", orig_p); + return false; + } + else if (attrs[i].only_as_pragma && !force_pragma) + { + /* Value is not allowed for the target attribute. */ + error ("Value %qs is not supported by attribute %", + attrs[i].string); + return false; + } + + else if (var_type == CLVC_BIT_SET || var_type == CLVC_BIT_CLEAR) + { + if (var_type == CLVC_BIT_CLEAR) + opt_set_p = !opt_set_p; + + if (opt_set_p) + opts->x_target_flags |= mask; + else + opts->x_target_flags &= ~mask; + new_opts_set->x_target_flags |= mask; + } + + else if (cl_options[opt].var_type == CLVC_BOOLEAN) + { + int value; + + if (cl_options[opt].cl_uinteger) + { + /* Unsigned integer argument. Code based on the function + decode_cmdline_option () in opts-common.c. */ + value = integral_argument (p + opt_len); + } + else + value = (opt_set_p) ? 1 : 0; + + if (value != -1) + { + struct cl_decoded_option decoded; + + /* Value range check; only implemented for numeric and boolean + options at the moment. */ + generate_option (opt, NULL, value, CL_TARGET, &decoded); + s390_handle_option (opts, new_opts_set, &decoded, input_location); + set_option (opts, new_opts_set, opt, value, + p + opt_len, DK_UNSPECIFIED, input_location, + global_dc); + } + else + { + error ("attribute(target(\"%s\")) is unknown", orig_p); + ret = false; + } + } + + else if (cl_options[opt].var_type == CLVC_ENUM) + { + bool arg_ok; + int value; + + arg_ok = opt_enum_arg_to_value (opt, p + opt_len, &value, CL_TARGET); + if (arg_ok) + set_option (opts, new_opts_set, opt, value, + p + opt_len, DK_UNSPECIFIED, input_location, + global_dc); + else + { + error ("attribute(target(\"%s\")) is unknown", orig_p); + ret = false; + } + } + + else + gcc_unreachable (); + } + return ret; +} + +/* Return a TARGET_OPTION_NODE tree of the target options listed or NULL. */ + +tree +s390_valid_target_attribute_tree (tree args, + struct gcc_options *opts, + const struct gcc_options *opts_set, + bool force_pragma) +{ + tree t = NULL_TREE; + struct gcc_options new_opts_set; + + memset (&new_opts_set, 0, sizeof (new_opts_set)); + + /* Process each of the options on the chain. */ + if (! s390_valid_target_attribute_inner_p (args, opts, &new_opts_set, + force_pragma)) + return error_mark_node; + + /* If some option was set (even if it has not changed), rerun + s390_option_override_internal, and then save the options away. */ + if (new_opts_set.x_target_flags + || new_opts_set.x_s390_arch + || new_opts_set.x_s390_tune + || new_opts_set.x_s390_stack_guard + || new_opts_set.x_s390_stack_size + || new_opts_set.x_s390_branch_cost + || new_opts_set.x_s390_warn_framesize + || new_opts_set.x_s390_warn_dynamicstack_p) + { + const unsigned char *src = (const unsigned char *)opts_set; + unsigned char *dest = (unsigned char *)&new_opts_set; + unsigned int i; + + /* Merge the original option flags into the new ones. */ + for (i = 0; i < sizeof(*opts_set); i++) + dest[i] |= src[i]; + + /* Do any overrides, such as arch=xxx, or tune=xxx support. */ + s390_option_override_internal (opts, &new_opts_set); + /* Save the current options unless we are validating options for + #pragma. */ + t = build_target_option_node (opts); + } + return t; +} + +/* Hook to validate attribute((target("string"))). */ + +static bool +s390_valid_target_attribute_p (tree fndecl, + tree ARG_UNUSED (name), + tree args, + int ARG_UNUSED (flags)) +{ + struct gcc_options func_options; + tree new_target, new_optimize; + bool ret = true; + + /* attribute((target("default"))) does nothing, beyond + affecting multi-versioning. */ + if (TREE_VALUE (args) + && TREE_CODE (TREE_VALUE (args)) == STRING_CST + && TREE_CHAIN (args) == NULL_TREE + && strcmp (TREE_STRING_POINTER (TREE_VALUE (args)), "default") == 0) + return true; + + tree old_optimize = build_optimization_node (&global_options); + + /* Get the optimization options of the current function. */ + tree func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl); + + if (!func_optimize) + func_optimize = old_optimize; + + /* Init func_options. */ + memset (&func_options, 0, sizeof (func_options)); + init_options_struct (&func_options, NULL); + lang_hooks.init_options_struct (&func_options); + + cl_optimization_restore (&func_options, TREE_OPTIMIZATION (func_optimize)); + + /* Initialize func_options to the default before its target options can + be set. */ + cl_target_option_restore (&func_options, + TREE_TARGET_OPTION (target_option_default_node)); + + new_target = s390_valid_target_attribute_tree (args, &func_options, + &global_options_set, + (args == + current_target_pragma)); + new_optimize = build_optimization_node (&func_options); + if (new_target == error_mark_node) + ret = false; + else if (fndecl && new_target) + { + DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = new_target; + if (old_optimize != new_optimize) + DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize; + } + return ret; +} + +/* Restore targets globals from NEW_TREE and invalidate s390_previous_fndecl + cache. */ + +void +s390_activate_target_options (tree new_tree) +{ + cl_target_option_restore (&global_options, TREE_TARGET_OPTION (new_tree)); + if (TREE_TARGET_GLOBALS (new_tree)) + restore_target_globals (TREE_TARGET_GLOBALS (new_tree)); + else if (new_tree == target_option_default_node) + restore_target_globals (&default_target_globals); + else + TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts (); + s390_previous_fndecl = NULL_TREE; +} + +/* Establish appropriate back-end context for processing the function + FNDECL. The argument might be NULL to indicate processing at top + level, outside of any function scope. */ +static void +s390_set_current_function (tree fndecl) +{ + /* Only change the context if the function changes. This hook is called + several times in the course of compiling a function, and we don't want to + slow things down too much or call target_reinit when it isn't safe. */ + if (fndecl == s390_previous_fndecl) + return; + + tree old_tree; + if (s390_previous_fndecl == NULL_TREE) + old_tree = target_option_current_node; + else if (DECL_FUNCTION_SPECIFIC_TARGET (s390_previous_fndecl)) + old_tree = DECL_FUNCTION_SPECIFIC_TARGET (s390_previous_fndecl); + else + old_tree = target_option_default_node; + + if (fndecl == NULL_TREE) + { + if (old_tree != target_option_current_node) + s390_activate_target_options (target_option_current_node); + return; + } + + tree new_tree = DECL_FUNCTION_SPECIFIC_TARGET (fndecl); + if (new_tree == NULL_TREE) + new_tree = target_option_default_node; + + if (old_tree != new_tree) + s390_activate_target_options (new_tree); + s390_previous_fndecl = fndecl; +} +#endif + /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ static bool @@ -14136,6 +14648,17 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END s390_asm_file_end +#if S390_USE_TARGET_ATTRIBUTE +#undef TARGET_SET_CURRENT_FUNCTION +#define TARGET_SET_CURRENT_FUNCTION s390_set_current_function + +#undef TARGET_OPTION_VALID_ATTRIBUTE_P +#define TARGET_OPTION_VALID_ATTRIBUTE_P s390_valid_target_attribute_p +#endif + +#undef TARGET_OPTION_RESTORE +#define TARGET_OPTION_RESTORE s390_function_specific_restore + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-s390.h" diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index 0f9225c6f84..b96549e177a 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -50,48 +50,110 @@ enum processor_flags #define TARGET_CPU_IEEE_FLOAT \ (s390_arch_flags & PF_IEEE_FLOAT) +#define TARGET_CPU_IEEE_FLOAT_P(opts) \ + (opts->x_s390_arch_flags & PF_IEEE_FLOAT) #define TARGET_CPU_ZARCH \ (s390_arch_flags & PF_ZARCH) +#define TARGET_CPU_ZARCH_P(opts) \ + (opts->x_s390_arch_flags & PF_ZARCH) #define TARGET_CPU_LONG_DISPLACEMENT \ (s390_arch_flags & PF_LONG_DISPLACEMENT) +#define TARGET_CPU_LONG_DISPLACEMENT_P(opts) \ + (opts->x_s390_arch_flags & PF_LONG_DISPLACEMENT) #define TARGET_CPU_EXTIMM \ - (s390_arch_flags & PF_EXTIMM) + (s390_arch_flags & PF_EXTIMM) +#define TARGET_CPU_EXTIMM_P(opts) \ + (opts->x_s390_arch_flags & PF_EXTIMM) #define TARGET_CPU_DFP \ - (s390_arch_flags & PF_DFP) + (s390_arch_flags & PF_DFP) +#define TARGET_CPU_DFP_P(opts) \ + (opts->x_s390_arch_flags & PF_DFP) #define TARGET_CPU_Z10 \ - (s390_arch_flags & PF_Z10) + (s390_arch_flags & PF_Z10) +#define TARGET_CPU_Z10_P(opts) \ + (opts->x_s390_arch_flags & PF_Z10) #define TARGET_CPU_Z196 \ - (s390_arch_flags & PF_Z196) + (s390_arch_flags & PF_Z196) +#define TARGET_CPU_Z196_P(opts) \ + (opts->x_s390_arch_flags & PF_Z196) #define TARGET_CPU_ZEC12 \ - (s390_arch_flags & PF_ZEC12) + (s390_arch_flags & PF_ZEC12) +#define TARGET_CPU_ZEC12_P(opts) \ + (opts->x_s390_arch_flags & PF_ZEC12) #define TARGET_CPU_HTM \ - (s390_arch_flags & PF_TX) + (s390_arch_flags & PF_TX) +#define TARGET_CPU_HTM_P(opts) \ + (opts->x_s390_arch_flags & PF_TX) #define TARGET_CPU_Z13 \ - (s390_arch_flags & PF_Z13) + (s390_arch_flags & PF_Z13) +#define TARGET_CPU_Z13_P(opts) \ + (opts->x_s390_arch_flags & PF_Z13) #define TARGET_CPU_VX \ (s390_arch_flags & PF_VX) +#define TARGET_CPU_VX_P(opts) \ + (opts->x_s390_arch_flags & PF_VX) + +#define TARGET_HARD_FLOAT_P(opts) (!TARGET_SOFT_FLOAT_P(opts)) /* These flags indicate that the generated code should run on a cpu providing the respective hardware facility when run in z/Architecture mode. */ #define TARGET_LONG_DISPLACEMENT \ - (TARGET_ZARCH && TARGET_CPU_LONG_DISPLACEMENT) + (TARGET_ZARCH && TARGET_CPU_LONG_DISPLACEMENT) +#define TARGET_LONG_DISPLACEMENT_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) \ + && TARGET_CPU_LONG_DISPLACEMENT_P (opts)) #define TARGET_EXTIMM \ - (TARGET_ZARCH && TARGET_CPU_EXTIMM) + (TARGET_ZARCH && TARGET_CPU_EXTIMM) +#define TARGET_EXTIMM_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_EXTIMM_P (opts)) #define TARGET_DFP \ - (TARGET_ZARCH && TARGET_CPU_DFP && TARGET_HARD_FLOAT) + (TARGET_ZARCH && TARGET_CPU_DFP && TARGET_HARD_FLOAT) +#define TARGET_DFP_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_DFP_P (opts) \ + && TARGET_HARD_FLOAT_P (opts->x_target_flags)) #define TARGET_Z10 \ - (TARGET_ZARCH && TARGET_CPU_Z10) + (TARGET_ZARCH && TARGET_CPU_Z10) +#define TARGET_Z10_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z10_P (opts)) #define TARGET_Z196 \ - (TARGET_ZARCH && TARGET_CPU_Z196) + (TARGET_ZARCH && TARGET_CPU_Z196) +#define TARGET_Z196_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z196_P (opts)) #define TARGET_ZEC12 \ - (TARGET_ZARCH && TARGET_CPU_ZEC12) + (TARGET_ZARCH && TARGET_CPU_ZEC12) +#define TARGET_ZEC12_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_ZEC12_P (opts)) #define TARGET_HTM (TARGET_OPT_HTM) +#define TARGET_HTM_P(opts) (TARGET_OPT_HTM_P (opts->x_target_flags)) #define TARGET_Z13 \ - (TARGET_ZARCH && TARGET_CPU_Z13) + (TARGET_ZARCH && TARGET_CPU_Z13) +#define TARGET_Z13_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z13_P (opts)) #define TARGET_VX \ - (TARGET_ZARCH && TARGET_CPU_VX && TARGET_OPT_VX && TARGET_HARD_FLOAT) + (TARGET_ZARCH && TARGET_CPU_VX && TARGET_OPT_VX && TARGET_HARD_FLOAT) +#define TARGET_VX_P(opts) \ + (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_VX_P (opts) \ + && TARGET_OPT_VX_P (opts->x_target_flags) \ + && TARGET_HARD_FLOAT_P (opts->x_target_flags)) + +#ifdef HAVE_AS_MACHINE_MACHINEMODE +#define S390_USE_TARGET_ATTRIBUTE 1 +#else +#define S390_USE_TARGET_ATTRIBUTE 0 +#endif + +#ifdef HAVE_AS_ARCHITECTURE_MODIFIERS +#define S390_USE_ARCHITECTURE_MODIFIERS 1 +#else +#define S390_USE_ARCHITECTURE_MODIFIERS 0 +#endif + +#if S390_USE_TARGET_ATTRIBUTE +/* For switching between functions with different target attributes. */ +#define SWITCHABLE_TARGET 1 +#endif /* Use the ABI introduced with IBM z13: - pass vector arguments <= 16 bytes in VRs @@ -937,6 +999,16 @@ do { \ #define ASM_OUTPUT_FUNCTION_LABEL(FILE, NAME, DECL) \ s390_asm_output_function_label (FILE, NAME, DECL) +#if S390_USE_TARGET_ATTRIBUTE +/* Hook to output .machine and .machinemode at start of function. */ +#undef ASM_OUTPUT_FUNCTION_PREFIX +#define ASM_OUTPUT_FUNCTION_PREFIX s390_asm_output_function_prefix + +/* Hook to output .machine and .machinemode at end of function. */ +#undef ASM_DECLARE_FUNCTION_SIZE +#define ASM_DECLARE_FUNCTION_SIZE s390_asm_declare_function_size +#endif + /* Miscellaneous parameters. */ /* Specify the machine mode that this machine uses for the index in the diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt index af82815fd82..a37c853d03d 100644 --- a/gcc/config/s390/s390.opt +++ b/gcc/config/s390/s390.opt @@ -21,18 +21,27 @@ HeaderInclude config/s390/s390-opts.h -; The architecture name to use in diagnostics. -Variable -const char *s390_arch_string +;; Definitions to add to the cl_target_option and gcc_options structures -Variable -int s390_tune_flags +;; whether -march was specified +TargetVariable +unsigned char s390_arch_specified -Variable +;; Flags derived from s390_arch +TargetVariable int s390_arch_flags +;; whether -mtune was specified +TargetVariable +unsigned char s390_tune_specified + +;; Flags derived from s390_tune +TargetVariable +int s390_tune_flags + +;; Cpu cost table (this is actually a "const struct processor_cost *") Variable -HOST_WIDE_INT s390_warn_framesize = 0 +long s390_cost_pointer m31 Target Report RejectNegative Negative(m64) InverseMask(64BIT) @@ -43,7 +52,7 @@ Target Report RejectNegative Negative(m31) Mask(64BIT) 64 bit ABI. march= -Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max) +Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max) Save Generate code for given CPU. Enum @@ -83,11 +92,11 @@ EnumValue Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly mbackchain -Target Report Mask(BACKCHAIN) +Target Report Mask(BACKCHAIN) Save Maintain backchain pointer. mdebug -Target Report Mask(DEBUG_ARG) +Target Report Mask(DEBUG_ARG) Save Additional debug prints. mesa @@ -95,11 +104,11 @@ Target Report RejectNegative Negative(mzarch) InverseMask(ZARCH) ESA/390 architecture. mhard-dfp -Target Report Mask(HARD_DFP) +Target Report Mask(HARD_DFP) Save Enable decimal floating point hardware support. mhard-float -Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) +Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) Save Enable hardware floating point. mhotpatch= @@ -121,52 +130,60 @@ Target Report RejectNegative Negative(mlong-double-128) InverseMask(LONG_DOUBLE_ Use 64-bit long double. mhtm -Target Report Mask(OPT_HTM) +Target Report Mask(OPT_HTM) Save Use hardware transactional execution instructions. mvx -Target Report Mask(OPT_VX) +Target Report Mask(OPT_VX) Save Use hardware vector facility instructions and enable the vector ABI. mpacked-stack -Target Report Mask(PACKED_STACK) +Target Report Mask(PACKED_STACK) Save Use packed stack layout. msmall-exec -Target Report Mask(SMALL_EXEC) +Target Report Mask(SMALL_EXEC) Save Use bras for executable < 64k. msoft-float -Target Report RejectNegative Negative(mhard-float) Mask(SOFT_FLOAT) +Target Report RejectNegative Negative(mhard-float) Mask(SOFT_FLOAT) Save Disable hardware floating point. mstack-guard= -Target RejectNegative Joined UInteger Var(s390_stack_guard) +Target RejectNegative Negative(mno-stack-guard) Joined UInteger Var(s390_stack_guard) Save Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered. +mno-stack-guard +Target RejectNegative Alias(mstack-guard=,0) Negative(mstack-guard=) +Switches off the -mstack-guard= option. + mstack-size= -Target RejectNegative Joined UInteger Var(s390_stack_size) +Target RejectNegative Joined UInteger Var(s390_stack_size) Save Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit. +mno-stack-size +Target RejectNegative Alias(mstack-size=,0) Negative(mstack-size=) +Switches off the -mstack-size= option. + mtune= -Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max) +Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max) Save Schedule code for given CPU. mmvcle -Target Report Mask(MVCLE) +Target Report Mask(MVCLE) Save mvcle use. mzvector -Target Report Mask(ZVECTOR) +Target Report Mask(ZVECTOR) Save Enable the z vector language extension providing the context-sensitive vector macro and enable the Altivec-style builtins in vecintrin.h mwarn-dynamicstack -Target RejectNegative Var(s390_warn_dynamicstack_p) +Target Var(s390_warn_dynamicstack_p) Save Warn if a function uses alloca or creates an array with dynamic size. mwarn-framesize= -Target RejectNegative Joined +Target RejectNegative Joined UInteger Var(s390_warn_framesize) Save Warn if a single function's framesize exceeds the given framesize. mzarch @@ -174,7 +191,7 @@ Target Report RejectNegative Negative(mesa) Mask(ZARCH) z/Architecture. mbranch-cost= -Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) +Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) Save Set the branch costs for conditional branch instructions. Reasonable values are small, non-negative integers. The default branch cost is 1. diff --git a/gcc/config/s390/vecintrin.h b/gcc/config/s390/vecintrin.h index c24dcb42eb4..621f96c9cc8 100644 --- a/gcc/config/s390/vecintrin.h +++ b/gcc/config/s390/vecintrin.h @@ -21,8 +21,6 @@ along with GCC; see the file COPYING3. If not see #ifndef _VECINTRIN_H #define _VECINTRIN_H -#ifdef __VEC__ - #define __VFTCI_ZERO 1<<11 #define __VFTCI_ZERO_N 1<<10 #define __VFTCI_NORMAL 1<<9 @@ -96,53 +94,50 @@ __lcbb(const void *ptr, int bndry) #define vec_madd __builtin_s390_vfmadb #define vec_msub __builtin_s390_vfmsdb -static inline int -vec_all_nan (__vector double a) -{ - int cc; - __builtin_s390_vftcidb (a, - __VFTCI_QNAN - | __VFTCI_QNAN_N - | __VFTCI_SNAN - | __VFTCI_SNAN_N, &cc); - return cc == 0 ? 1 : 0; -} +#define vec_all_nan(a) \ + __extension__ ({ \ + int __cc; \ + __builtin_s390_vftcidb (a, \ + __VFTCI_QNAN \ + | __VFTCI_QNAN_N \ + | __VFTCI_SNAN \ + | __VFTCI_SNAN_N, &__cc); \ + __cc == 0 ? 1 : 0; \ + }) -static inline int -vec_all_numeric (__vector double a) -{ - int cc; - __builtin_s390_vftcidb (a, - __VFTCI_NORMAL - | __VFTCI_NORMAL_N - | __VFTCI_SUBNORMAL - | __VFTCI_SUBNORMAL_N, &cc); - return cc == 0 ? 1 : 0; -} +#define vec_all_numeric(a) \ + __extension__ ({ \ + int __cc; \ + __builtin_s390_vftcidb (a, \ + __VFTCI_NORMAL \ + | __VFTCI_NORMAL_N \ + | __VFTCI_SUBNORMAL \ + | __VFTCI_SUBNORMAL_N, &__cc); \ + __cc == 0 ? 1 : 0; \ + }) -static inline int -vec_any_nan (__vector double a) -{ - int cc; - __builtin_s390_vftcidb (a, - __VFTCI_QNAN - | __VFTCI_QNAN_N - | __VFTCI_SNAN - | __VFTCI_SNAN_N, &cc); - return cc != 3 ? 1 : 0; -} +#define vec_any_nan(a) \ + __extension__ ({ \ + int __cc; \ + __builtin_s390_vftcidb (a, \ + __VFTCI_QNAN \ + | __VFTCI_QNAN_N \ + | __VFTCI_SNAN \ + | __VFTCI_SNAN_N, &cc); \ + cc != 3 ? 1 : 0; \ + }) + +#define vec_any_numeric(a) \ + __extension__ ({ \ + int __cc; \ + __builtin_s390_vftcidb (a, \ + __VFTCI_NORMAL \ + | __VFTCI_NORMAL_N \ + | __VFTCI_SUBNORMAL \ + | __VFTCI_SUBNORMAL_N, &cc); \ + cc != 3 ? 1 : 0; \ + }) -static inline int -vec_any_numeric (__vector double a) -{ - int cc; - __builtin_s390_vftcidb (a, - __VFTCI_NORMAL - | __VFTCI_NORMAL_N - | __VFTCI_SUBNORMAL - | __VFTCI_SUBNORMAL_N, &cc); - return cc != 3 ? 1 : 0; -} #define vec_gather_element __builtin_s390_vec_gather_element #define vec_xld2 __builtin_s390_vec_xld2 #define vec_xlw4 __builtin_s390_vec_xlw4 @@ -272,5 +267,4 @@ vec_any_numeric (__vector double a) #define vec_ctul __builtin_s390_vec_ctul #define vec_ld2f __builtin_s390_vec_ld2f #define vec_st2f __builtin_s390_vec_st2f -#endif /* __VEC__ */ #endif /* _VECINTRIN_H */ diff --git a/gcc/configure b/gcc/configure index b21c864466d..23f92c3ceeb 100755 --- a/gcc/configure +++ b/gcc/configure @@ -27064,6 +27064,77 @@ if test $gcc_cv_as_s390_gnu_attribute = yes; then $as_echo "#define HAVE_AS_GNU_ATTRIBUTE 1" >>confdefs.h +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .machine and .machinemode support" >&5 +$as_echo_n "checking assembler for .machine and .machinemode support... " >&6; } +if test "${gcc_cv_as_s390_machine_machinemode+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gcc_cv_as_s390_machine_machinemode=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 24 \) \* 1000 + 0` + then gcc_cv_as_s390_machine_machinemode=yes +fi + elif test x$gcc_cv_as != x; then + $as_echo ' .machinemode push + .machinemode pop + .machine push + .machine pop' > conftest.s + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + gcc_cv_as_s390_machine_machinemode=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_machine_machinemode" >&5 +$as_echo "$gcc_cv_as_s390_machine_machinemode" >&6; } +if test $gcc_cv_as_s390_machine_machinemode = yes; then + +$as_echo "#define HAVE_AS_MACHINE_MACHINEMODE 1" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for architecture modifiers support" >&5 +$as_echo_n "checking assembler for architecture modifiers support... " >&6; } +if test "${gcc_cv_as_s390_architecture_modifiers+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gcc_cv_as_s390_architecture_modifiers=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 26 \) \* 1000 + 0` + then gcc_cv_as_s390_architecture_modifiers=yes +fi + elif test x$gcc_cv_as != x; then + $as_echo ' .machine z13+vx ' > conftest.s + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + gcc_cv_as_s390_architecture_modifiers=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_architecture_modifiers" >&5 +$as_echo "$gcc_cv_as_s390_architecture_modifiers" >&6; } +if test $gcc_cv_as_s390_architecture_modifiers = yes; then + +$as_echo "#define HAVE_AS_ARCHITECTURE_MODIFIERS 1" >>confdefs.h + fi ;; esac diff --git a/gcc/configure.ac b/gcc/configure.ac index cff95bc9c6d..a2caf298d33 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -4564,6 +4564,19 @@ pointers into PC-relative form.]) [.gnu_attribute 8,1],, [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1, [Define if your assembler supports .gnu_attribute.])]) + gcc_GAS_CHECK_FEATURE([.machine and .machinemode support], + gcc_cv_as_s390_machine_machinemode, [2,24,0],, + [ .machinemode push + .machinemode pop + .machine push + .machine pop],, + [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1, + [Define if your assembler supports .machine and .machinemode.])]) + gcc_GAS_CHECK_FEATURE([architecture modifiers support], + gcc_cv_as_s390_architecture_modifiers, [2,26,0],, + [ .machine z13+vx ],, + [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1, + [Define if your assembler supports architecture modifiers.])]) ;; esac diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index d0f631f1dd7..650aa94bdb3 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -4944,6 +4944,50 @@ number of halfwords to be added after the function label. For both arguments the maximum allowed value is 1000000. If both arguments are zero, hotpatching is disabled. + +@item target (@var{options}) +@cindex @code{target} function attribute +As discussed in @ref{Common Function Attributes}, this attribute +allows specification of target-specific compilation options. + +On S/390, the following options are supported: + +@table @samp +@item arch= +@item tune= +@item stack-guard= +@item stack-size= +@item branch-cost= +@item warn-framesize= +@item backchain +@itemx no-backchain +@item hard-dfp +@itemx no-hard-dfp +@item hard-float +@itemx soft-float +@item htm +@itemx no-htm +@item vx +@itemx no-vx +@item packed-stack +@itemx no-packed-stack +@item small-exec +@itemx no-small-exec +@item mvcle +@itemx no-mvcle +@item warn-dynamicstack +@itemx no-warn-dynamicstack +@end table + +The options work exactly like the S/390 specific command line +options (without the prefix @option{-m}) except that they do not +change any feature macros. For example, + +@smallexample +@code{target("no-vx")} +@end smallexample + +does not undefine the @code{__VEC__} macro. @end table @node SH Function Attributes @@ -18437,6 +18481,7 @@ for further explanation. * M32C Pragmas:: * MeP Pragmas:: * RS/6000 and PowerPC Pragmas:: +* S/390 Pragmas:: * Darwin Pragmas:: * Solaris Pragmas:: * Symbol-Renaming Pragmas:: @@ -18611,6 +18656,26 @@ declarations. @c Describe sh pragmas here. @c Describe v850 pragmas here. +@node S/390 Pragmas +@subsection S/390 Pragmas + +The pragmas defined by the S/390 target correspond to the S/390 +target function attributes and some the additional options: + +@table @samp +@item zvector +@itemx no-zvector +@end table + +Note that options of the pragma, unlike options of the target +attribute, do change the value of preprocessor macros like +@code{__VEC__}. They can be specified as below: + +@smallexample +#pragma GCC target("string[,string]...") +#pragma GCC target("string"[,"string"]...) +@end smallexample + @node Darwin Pragmas @subsection Darwin Pragmas diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 19cd658b4f6..7ee9f40eafb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,101 @@ +2015-12-04 Dominik Vogt + + * gcc.target/s390/asm-machine-1.c: New test. + * gcc.target/s390/asm-machine-2.c: New test. + * gcc.target/s390/asm-machine-3.c: New test. + * gcc.target/s390/asm-machine-4.c: New test. + * gcc.target/s390/target-attribute/tattr-1.c: New test. + * gcc.target/s390/target-attribute/tattr-2.c: New test. + * gcc.target/s390/target-attribute/tattr-3.c: New test. + * gcc.target/s390/target-attribute/tattr-4.c: New test. + * gcc.target/s390/target-attribute/tattr-5.c: New test. + * gcc.target/s390/target-attribute/tattr-6.c: New test. + * gcc.target/s390/target-attribute/tattr-7.c: New test. + * gcc.target/s390/target-attribute/tattr-8.c: New test. + * gcc.target/s390/target-attribute/tattr-9.c: New test. + * gcc.target/s390/target-attribute/tattr-10.c: New test. + * gcc.target/s390/target-attribute/tattr-11.c: New test. + * gcc.target/s390/target-attribute/tattr-12.c: New test. + * gcc.target/s390/target-attribute/tattr-13.c: New test. + * gcc.target/s390/target-attribute/tattr-14.c: New test. + * gcc.target/s390/target-attribute/tattr-15.c: New test. + * gcc.target/s390/target-attribute/tattr-16.c: New test. + * gcc.target/s390/target-attribute/tattr-17.c: New test. + * gcc.target/s390/target-attribute/tattr-18.c: New test. + * gcc.target/s390/target-attribute/tattr-19.c: New test. + * gcc.target/s390/target-attribute/tattr-arch-tune-1.c: New test. + * gcc.target/s390/target-attribute/tattr-arch-tune-2.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-1.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-2.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-3.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-4.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-5.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-6.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-7.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-8.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-9.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-10.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-11.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-12.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-13.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-14.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-15.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-16.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-17.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-18.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-19.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-20.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-21.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-22.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-23.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-24.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-25.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-26.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-27.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-28.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-29.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-30.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-31.c: New test. + * gcc.target/s390/target-attribute/tattr-m31-32.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-1.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-2.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-3.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-4.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-5.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-6.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-7.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-8.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-9.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-10.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-11.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-12.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-13.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-14.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-15.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-16.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-17.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-18.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-19.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-20.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-21.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-22.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-23.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-24.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-25.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-26.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-27.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-28.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-29.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-30.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-31.c: New test. + * gcc.target/s390/target-attribute/tattr-m64-32.c: New test. + * gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: New test. + * gcc.target/s390/s390.exp (check_effective_target_target_attribute): + Add check whether target attribute is available. + Run test in target-attribute subdir. + * gcc.target/s390/s390-c++.exp + (check_effective_target_target_attribute): Likewise. + 2015-12-04 Kirill Yukhin * c-c++-common/attr-simd-4.c: New test. diff --git a/gcc/testsuite/gcc.target/s390/asm-machine-1.c b/gcc/testsuite/gcc.target/s390/asm-machine-1.c new file mode 100644 index 00000000000..a5326e19289 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/asm-machine-1.c @@ -0,0 +1,9 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-march=z13 -mzarch" } */ + +void foo(void) { } + +/* { dg-final { scan-assembler-not "\t\.machine " } } */ +/* { dg-final { scan-assembler-not "\t\.machinemode " } } */ diff --git a/gcc/testsuite/gcc.target/s390/asm-machine-2.c b/gcc/testsuite/gcc.target/s390/asm-machine-2.c new file mode 100644 index 00000000000..910438eb73e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/asm-machine-2.c @@ -0,0 +1,19 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-march=z13 -mzarch" } */ + +void foo(void) { } + +__attribute__ ((target("arch=z10"))) +void bar(void) { } + +/* { dg-final { scan-assembler-times "\t\.machine push" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machine pop" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machine \"z10\"" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode push" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */ + +/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */ diff --git a/gcc/testsuite/gcc.target/s390/asm-machine-3.c b/gcc/testsuite/gcc.target/s390/asm-machine-3.c new file mode 100644 index 00000000000..b056b1933d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/asm-machine-3.c @@ -0,0 +1,19 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-march=z13 -mzarch" } */ + +void foo(void) { } + +#pragma GCC target("arch=z10") +void bar(void) { } + +/* { dg-final { scan-assembler-times "\t\.machine push" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machine pop" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machine \"z10\"" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode push" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */ + +/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */ diff --git a/gcc/testsuite/gcc.target/s390/asm-machine-4.c b/gcc/testsuite/gcc.target/s390/asm-machine-4.c new file mode 100644 index 00000000000..af9ab1ccd4f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/asm-machine-4.c @@ -0,0 +1,20 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-march=z13 -mzarch" } */ + +void foo(void) { } + +#pragma GCC target("arch=z196") +__attribute__ ((target("arch=z10"))) +void bar(void) { } + +/* { dg-final { scan-assembler-times "\t\.machine push" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machine pop" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machine \"z10\"" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode push" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */ + +/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */ +/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */ diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp index 0b8f80ed669..87433ddc6ef 100644 --- a/gcc/testsuite/gcc.target/s390/s390.exp +++ b/gcc/testsuite/gcc.target/s390/s390.exp @@ -24,6 +24,21 @@ if ![istarget s390*-*-*] then { # Load support procs. load_lib gcc-dg.exp +# Return 1 if the the assembler understands .machine and .machinemode. The +# target attribute needs that feature to work. +proc check_effective_target_target_attribute { } { + if { ![check_runtime s390_check_machine_machinemode [subst { + int main (void) + { + asm (".machine push" : : ); + asm (".machine pop" : : ); + asm (".machinemode push" : : ); + asm (".machinemode pop" : : ); + return 0; + } + }] "" ] } { return 0 } else { return 1 } +} + # Return 1 if htm (etnd - extract nesting depth) instructions are # understood by the assembler and can be executed. proc check_effective_target_htm { } { @@ -70,6 +85,9 @@ dg-runtest [lsort [prune [glob -nocomplain $srcdir/$subdir/*.\[cS\]] \ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*vector*/*.\[cS\]]] \ "" $DEFAULT_CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/target-attribute/*.\[cS\]]] \ + "" $DEFAULT_CFLAGS + # Additional hotpatch torture tests. torture-init set HOTPATCH_TEST_OPTS [list -Os -O0 -O1 -O2 -O3] diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c new file mode 100644 index 00000000000..31643490540 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c @@ -0,0 +1,22 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-O3 -march=zEC12 -mzarch" } */ + +__attribute__ ((target("arch=zEC12"))) +void htm1(void) +{ + __builtin_tend(); +} + +__attribute__ ((target("arch=z10"))) +void htm0(void) +{ + __builtin_tend(); /* { dg-error "is not supported without -mhtm" } */ +} + +void htmd(void) +{ + __builtin_tend(); +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c new file mode 100644 index 00000000000..e48cea3e815 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c @@ -0,0 +1,20 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mno-mvcle -march=z13 -O3" } */ + +#pragma GCC target("mvcle") +void p1(char *b) +{ + __builtin_memset (b, 0, 400); +} +#pragma GCC reset_options + +__attribute__ ((target("mvcle"))) +void a1(char *b) +{ + __builtin_memset (b, 0, 400); +} + +/* { dg-final { scan-assembler-times "\tmvcle\t" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c new file mode 100644 index 00000000000..def418aca83 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c @@ -0,0 +1,25 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mno-mvcle -march=z13 -O3" } */ + +#pragma GCC target("no-mvcle") +void p0(char *b) +{ + __builtin_memset (b, 0, 400); +} +#pragma GCC reset_options + +__attribute__ ((target("no-mvcle"))) +void a0(char *b) +{ + __builtin_memset (b, 0, 400); +} + +void d(char *b) +{ + __builtin_memset (b, 0, 400); +} + +/* { dg-final { scan-assembler-not "\tmvcle\t" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c new file mode 100644 index 00000000000..a22a3e11018 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c @@ -0,0 +1,59 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-O3 -march=z13 -mstack-guard=0 -mstack-size=512" } */ + +extern char *bar(int x); + +void da(int x) +{ + bar(x); + bar(x + 1); + /* { dg-final { scan-assembler-times "\ttmll\t%r15,256" 2 { target { lp64 } } } } */ + /* { dg-final { scan-assembler-times "\ttml\t%r15,384" 2 { target { ! lp64 } } } } */ +} + +#pragma GCC target("stack-size=1024,stack-guard=0") +void p1(int x) +{ + bar(x); + bar(x + 1); + /* { dg-final { scan-assembler-times "\ttmll\t%r15,768" 1 { target { lp64 } } } } */ + /* { dg-final { scan-assembler-times "\ttml\t%r15,896" 1 { target { ! lp64 } } } } */ +} +#pragma GCC reset_options + +#pragma GCC target("stack-size=2048,stack-guard=0") +void p0(int x) +{ + bar(x); + bar(x + 1); + /* { dg-final { scan-assembler-times "\ttmll\t%r15,1792" 1 { target { lp64 } } } } */ + /* { dg-final { scan-assembler-times "\ttml\t%r15,1920" 1 { target { ! lp64 } } } } */ +} +#pragma GCC reset_options + +__attribute__ ((target("stack-size=4096,stack-guard=0"))) +void a1(int x) +{ + bar(x); + bar(x + 1); + /* { dg-final { scan-assembler-times "\ttmll\t%r15,3840" 1 { target { lp64 } } } } */ + /* { dg-final { scan-assembler-times "\ttml\t%r15,3968" 1 { target { ! lp64 } } } } */ +} + +__attribute__ ((target("stack-size=8192,stack-guard=0"))) +void a0(int x) +{ + bar(x); + bar(x + 1); + /* { dg-final { scan-assembler-times "\ttmll\t%r15,7936" 1 { target { lp64 } } } } */ + /* { dg-final { scan-assembler-times "\ttml\t%r15,8064" 1 { target { ! lp64 } } } } */ +} + +void d(int x) +{ + bar(x); + bar(x + 1); +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-13.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-13.c new file mode 100644 index 00000000000..07e0cc9ff5f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-13.c @@ -0,0 +1,18 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-march=z13" } */ + +#pragma GCC target ("zvector","zvector,arch=z13","arch=z13,zvector","zvector") +__attribute__ ((target("arch=z13","arch=z13"))) +void a(void) +{ +} + +#pragma GCC target ("arch=z13","arch=z13,arch=z13","arch=z13,arch=z13,arch=z13") +__attribute__ ((target("zvector","arch=z13"))) +void +b(void) +{ /* { dg-error "Value .zvector. is not supported by attribute .target." } */ +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-14.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-14.c new file mode 100644 index 00000000000..bddc0a943a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-14.c @@ -0,0 +1,50 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mno-small-exec" } */ + +extern void foo(void); + +#pragma GCC target("small-exec") +int p1(void) +{ + foo(); + return 1; +} +#pragma GCC reset_options + +#pragma GCC target("no-small-exec") +int p0(void) +{ + foo(); + foo(); + return 2; +} +#pragma GCC reset_options + +__attribute__ ((target("small-exec"))) +int a1(void) +{ + foo(); + foo(); + foo(); + foo(); + return 4; +} + +__attribute__ ((target("no-small-exec"))) +int a0(void) +{ + foo(); + foo(); + foo(); + foo(); + foo(); + foo(); + foo(); + foo(); + return 8; +} + +/* { dg-final { scan-assembler-times "\tbras\t" 5 } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c new file mode 100644 index 00000000000..dd0c978936b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c @@ -0,0 +1,117 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mno-packed-stack" } */ + +extern void foo(void); + +#pragma GCC target("packed-stack") +int p1(void) +{ + foo(); + return 1; +} +#pragma GCC reset_options + +#pragma GCC target("no-packed-stack") +int p0(void) +{ + foo(); + return 2; +} +int p0b(void) +{ + foo(); + return 2; +} +#pragma GCC reset_options + +__attribute__ ((target("packed-stack"))) +int a1(void) +{ + foo(); + return 4; +} + +__attribute__ ((target("packed-stack"))) +int a1b(void) +{ + foo(); + return 4; +} + +__attribute__ ((target("packed-stack"))) +int a1c(void) +{ + foo(); + return 4; +} + +__attribute__ ((target("packed-stack"))) +int a1d(void) +{ + foo(); + return 4; +} + +__attribute__ ((target("no-packed-stack"))) +int a0(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0b(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0c(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0d(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0e(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0f(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0g(void) +{ + foo(); + return 8; +} + +__attribute__ ((target("no-packed-stack"))) +int a0h(void) +{ + foo(); + return 8; +} + +/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -40" 10 { target { lp64 } } } } */ +/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -8" 5 { target { lp64 } } } } */ +/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -36" 10 { target { ! lp64 } } } } */ +/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -4" 5 { target { ! lp64 } } } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-16.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-16.c new file mode 100644 index 00000000000..42191b1360e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-16.c @@ -0,0 +1,97 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-msoft-float" } */ + +#pragma GCC target("hard-float") +float p1(float f) +{ + return 2 * f; +} +#pragma GCC reset_options + +#pragma GCC target("soft-float") +float p0(float f) +{ + return 2 * f; +} +float p0b(float f) +{ + return 2 * f; +} +#pragma GCC reset_options + +__attribute__ ((target("hard-float"))) +float a1(float f) +{ + return 2 * f; +} + +__attribute__ ((target("hard-float"))) +float a1b(float f) +{ + return 2 * f; +} + +__attribute__ ((target("hard-float"))) +float a1c(float f) +{ + return 2 * f; +} + +__attribute__ ((target("hard-float"))) +float a1d(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0b(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0c(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0d(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0e(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0f(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0g(float f) +{ + return 2 * f; +} + +__attribute__ ((target("soft-float"))) +float a0h(float f) +{ + return 2 * f; +} + +/* { dg-final { scan-assembler-times "\tste\t%f" 5 } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-17.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-17.c new file mode 100644 index 00000000000..2e0fcf77ffd --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-17.c @@ -0,0 +1,42 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile { target { lp64 } } } */ +/* { dg-require-effective-target dfp } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-march=z13 -std=gnu99 -mno-hard-dfp" } */ + +#pragma GCC target("hard-dfp") +_Decimal64 p1(_Decimal64 f, _Decimal64 g) +{ + return f * g; + /* { dg-final { scan-assembler-times "\tmdtr\t" 1 } } */ +} +#pragma GCC reset_options + +#pragma GCC target("no-hard-dfp") + _Decimal64 p0(_Decimal64 f, _Decimal64 g) +{ + return f / 2; + /* { dg-final { scan-assembler-not "\tddtr\t" } } */ +} +#pragma GCC reset_options + +__attribute__ ((target("hard-dfp"))) +_Decimal64 a1(_Decimal64 f, _Decimal64 g) +{ + /* { dg-final { scan-assembler-times "\tadtr\t" 1 } } */ + return f + g; +} + +__attribute__ ((target("no-hard-dfp"))) +_Decimal64 a0(_Decimal64 f, _Decimal64 g) +{ + return f - g; + /* { dg-final { scan-assembler-not "\tsdtr\t" } } */ +} + +_Decimal64 d(_Decimal64 f, _Decimal64 g) +{ + return f - g; + /* { dg-final { scan-assembler-not "\tsdtr\t" } } */ +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-2.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-2.c new file mode 100644 index 00000000000..01ae08ee17f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-2.c @@ -0,0 +1,51 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-O3 -march=zEC12 -mno-htm" } */ + +#pragma GCC target("htm") +void p1(void) +{ +#ifndef __HTM__ +#error __HTM__ is not defined +#endif + __builtin_tend (); +} +#pragma GCC reset_options + +#pragma GCC target("no-htm") +void p0(void) +{ +#ifdef __HTM__ +#error __HTM__ is defined +#endif + __builtin_tend (); +} +#pragma GCC reset_options + +__attribute__ ((target("htm"))) +void a1(void) +{ +#ifdef __HTM__ +#error __HTM__ is defined +#endif + __builtin_tend (); +} + +__attribute__ ((target("no-htm"))) +void a0(void) +{ +#ifdef __HTM__ +#error __HTM__ is defined +#endif + __builtin_tend (); /* { dg-error "is not supported without -mhtm" } */ +} + +void htmd(void) +{ +#ifdef __HTM__ +#error __HTM__ is defined +#endif + __builtin_tend (); /* { dg-error "is not supported without -mhtm" } */ +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-3.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-3.c new file mode 100644 index 00000000000..95916288204 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-3.c @@ -0,0 +1,27 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-O3 -march=z13 -mzarch -mzvector" } */ + +#include + +__attribute__ ((target("arch=z13"))) +void vx1(void) +{ + vec_load_bndry ((const signed char *)0, 64); + __builtin_s390_vll ((unsigned int)0, (const void *)8); +} + +__attribute__ ((target("arch=z10"))) +void vx0(void) +{ + vec_load_bndry ((const signed char *)0, 64); /* { dg-error "is not supported without -mvx" } */ + __builtin_s390_vll ((unsigned int)0, (const void *)8); /* { dg-error "is not supported without -mvx" } */ +} + +void vxd(void) +{ + vec_load_bndry ((const signed char *)0, 64); + __builtin_s390_vll ((unsigned int)0, (const void *)8); +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-4.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-4.c new file mode 100644 index 00000000000..f0a4eff68eb --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-4.c @@ -0,0 +1,38 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-O3 -march=z13 -mno-vx -mno-zvector" } */ + +#include + +#pragma GCC target("no-zvector") +__attribute__ ((target("vx"))) +void a1(void) +{ +#ifdef __VEC__ +#error __VEC__ is defined +#endif + vec_load_bndry ((const signed char *)0, 64); + __builtin_s390_vll ((unsigned int)0, (const void *)8); +} +#pragma GCC reset_options + +__attribute__ ((target("no-vx"))) +void a0(void) +{ +#ifdef __VEC__ +#error __VEC__ is defined +#endif + vec_load_bndry ((const signed char *)0, 64); /* { dg-error "is not supported without -mvx" } */ + __builtin_s390_vll ((unsigned int)0, (const void *)8); /* { dg-error "is not supported without -mvx" } */ +} + +void d(void) +{ +#ifdef __VEC__ +#error __VEC__ is defined +#endif + vec_load_bndry ((const signed char *)0, 64); /* { dg-error "is not supported without -mvx" } */ + __builtin_s390_vll ((unsigned int)0, (const void *)8); /* { dg-error "is not supported without -mvx" } */ +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-5.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-5.c new file mode 100644 index 00000000000..2a66a04114a --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-5.c @@ -0,0 +1,10 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-O3 -march=z13 -mno-zvector" } */ + +__attribute__ ((target("zvector"))) +void a1(void) +{ /* { dg-error "is not supported by attribute" } */ +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-6.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-6.c new file mode 100644 index 00000000000..531dec24edb --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-6.c @@ -0,0 +1,36 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mno-warn-dynamicstack" } */ + +#pragma GCC target("warn-dynamicstack") +void p1(int s) +{ + char b[s]; +} /* { dg-warning "uses dynamic stack allocation" } */ +#pragma GCC reset_options + +#pragma GCC target("no-warn-dynamicstack") +void p0(int s) +{ + char b[s]; +} +#pragma GCC reset_options + +__attribute__ ((target("warn-dynamicstack"))) +void a1(int s) +{ + char b[s]; +} /* { dg-warning "uses dynamic stack allocation" } */ + +__attribute__ ((target("no-warn-dynamicstack"))) +void a0(int s) +{ + char b[s]; +} + +void d(int s) +{ + char b[s]; +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-7.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-7.c new file mode 100644 index 00000000000..906979e9868 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-7.c @@ -0,0 +1,36 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mwarn-framesize=0" } */ + +#pragma GCC target("warn-framesize=1024") +void p1(void) +{ + char b[1025]; +} /* { dg-warning "frame size" } */ +#pragma GCC reset_options + +#pragma GCC target("warn-framesize=0") +void p0(void) +{ + char b[1025]; +} +#pragma GCC reset_options + +__attribute__ ((target("warn-framesize=1024"))) +void a1(void) +{ + char b[1025]; +} /* { dg-warning "frame size" } */ + +__attribute__ ((target("warn-framesize=0"))) +void a0(void) +{ + char b[1025]; +} + +void d(void) +{ + char b[1025]; +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-8.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-8.c new file mode 100644 index 00000000000..512bafebc3f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-8.c @@ -0,0 +1,22 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mno-backchain -march=z13 -mzarch -O0" } */ + +#include + +#pragma GCC target("backchain") +void p1(void) +{ + printf ((void *)0); +} +#pragma GCC reset_options + +__attribute__ ((target("backchain"))) +void a1(void) +{ + printf ((void *)0); +} + +/* { dg-final { scan-assembler-times "\tlg?r\t%r14,%r15" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-9.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-9.c new file mode 100644 index 00000000000..b92e6878f0e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-9.c @@ -0,0 +1,22 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mbackchain -march=z13 -mzarch -O0" } */ + +#include + +#pragma GCC target("no-backchain") +void p0(void) +{ + printf ((void *)0); +} +#pragma GCC reset_options + +__attribute__ ((target("no-backchain"))) +void a0(void) +{ + printf ((void *)0); +} + +/* { dg-final { scan-assembler-not "\tlg?r\t%r14,%r15" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-arch-tune-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-arch-tune-1.c new file mode 100644 index 00000000000..ded08854a98 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-arch-tune-1.c @@ -0,0 +1,160 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mdebug -march=z13" } */ + +/** + ** no pragma + **/ + +void fn_p0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_1 tu9" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_p0_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_2 tu8" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_p0_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_3 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_p0_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_p0_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_5 tu7" } } */ + +/** + ** arch pragma + **/ + +#pragma GCC target ("arch=z9-ec") + +void fn_pa_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_1 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_1 tu5" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pa_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_2 tu8" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pa_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_3 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pa_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pa_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_5 tu7" } } */ + +#pragma GCC reset_options + +/** + ** tune pragma + **/ + +#pragma GCC target ("tune=z9-109") + +void fn_pt_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_1 tu4" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pt_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_2 tu4" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pt_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_3 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pt_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pt_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_5 tu7" } } */ + +#pragma GCC reset_options + +/** + ** arch and tune pragmas + **/ + +#pragma GCC target ("arch=z9-ec,tune=z9-109") + +void fn_pat_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_1 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_1 tu4" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pat_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_2 tu4" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pat_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_3 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pat_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pat_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_5 tu7" } } */ + +#pragma GCC reset_options + +/** + ** tune and arch pragmas + **/ + +#pragma GCC target ("tune=z9-109,arch=z9-ec") + +void fn_pta_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_1 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_1 tu4" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pta_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_2 tu4" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pta_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_3 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pta_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pta_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_5 tu7" } } */ + +#pragma GCC reset_options diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-arch-tune-2.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-arch-tune-2.c new file mode 100644 index 00000000000..d21a522eeb8 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-arch-tune-2.c @@ -0,0 +1,160 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-mdebug -march=z13 -mtune=z10" } */ + +/** + ** no pragma + **/ + +void fn_p0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_1 tu6" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_p0_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_2 tu6" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_p0_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_3 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_p0_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_p0_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_p0_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_p0_5 tu7" } } */ + +/** + ** arch pragma + **/ + +#pragma GCC target ("arch=z9-ec") + +void fn_pa_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_1 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_1 tu6" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pa_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_2 tu6" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pa_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_3 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pa_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pa_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pa_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pa_5 tu7" } } */ + +#pragma GCC reset_options + +/** + ** tune pragma + **/ + +#pragma GCC target ("tune=z9-109") + +void fn_pt_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_1 tu4" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pt_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_2 tu4" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pt_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_3 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pt_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pt_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pt_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pt_5 tu7" } } */ + +#pragma GCC reset_options + +/** + ** arch and tune pragmas + **/ + +#pragma GCC target ("arch=z9-ec,tune=z9-109") + +void fn_pat_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_1 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_1 tu4" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pat_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_2 tu4" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pat_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_3 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pat_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pat_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pat_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pat_5 tu7" } } */ + +#pragma GCC reset_options + +/** + ** tune and arch pragmas + **/ + +#pragma GCC target ("tune=z9-109,arch=z9-ec") + +void fn_pta_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_1 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_1 tu4" } } */ + +__attribute__ ((target("arch=zEC12"))) +void fn_pta_2 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_2 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_2 tu4" } } */ + +__attribute__ ((target("tune=z196"))) +void fn_pta_3 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_3 ar5" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_3 tu7" } } */ + +__attribute__ ((target("arch=zEC12,tune=z196"))) +void fn_pta_4 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_4 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_4 tu7" } } */ + +__attribute__ ((target("tune=z196,arch=zEC12"))) +void fn_pta_5 (void) { } +/* { dg-final { scan-assembler "fn:fn_pta_5 ar8" } } */ +/* { dg-final { scan-assembler "fn:fn_pta_5 tu7" } } */ + +#pragma GCC reset_options diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-1.c new file mode 100644 index 00000000000..2dbb462ee08 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-1.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mno-vx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("arch=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("arch=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("arch=z10,arch=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("arch=z13,arch=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("arch=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("arch=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("arch=z10") +#pragma GCC target ("arch=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +#pragma GCC target ("arch=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-10.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-10.c new file mode 100644 index 00000000000..edae1efe710 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-10.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("branch-cost=1"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("branch-cost=2"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("branch-cost=2,branch-cost=1"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("branch-cost=1,branch-cost=2"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("branch-cost=1") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("branch-cost=2") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("branch-cost=2") +#pragma GCC target ("branch-cost=1") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +#pragma GCC target ("branch-cost=2") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-11.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-11.c new file mode 100644 index 00000000000..4b66d736882 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-11.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("warn-framesize=512"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("warn-framesize=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("warn-framesize=0,warn-framesize=512"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("warn-framesize=512,warn-framesize=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("warn-framesize=512") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("warn-framesize=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("warn-framesize=0") +#pragma GCC target ("warn-framesize=512") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +#pragma GCC target ("warn-framesize=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-12.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-12.c new file mode 100644 index 00000000000..515f504399f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-12.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("warn-framesize=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("warn-framesize=512"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("warn-framesize=512,warn-framesize=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("warn-framesize=0,warn-framesize=512"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("warn-framesize=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("warn-framesize=512") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("warn-framesize=512") +#pragma GCC target ("warn-framesize=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +#pragma GCC target ("warn-framesize=512") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-13.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-13.c new file mode 100644 index 00000000000..ef0914eb3dd --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-13.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mno-packed-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("backchain"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-backchain"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-backchain,backchain"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("backchain,no-backchain"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("backchain") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-backchain") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-backchain") +#pragma GCC target ("backchain") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +#pragma GCC target ("no-backchain") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-14.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-14.c new file mode 100644 index 00000000000..7a7cb362706 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-14.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-backchain"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("backchain"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("backchain,no-backchain"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-backchain,backchain"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-backchain") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("backchain") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("backchain") +#pragma GCC target ("no-backchain") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +#pragma GCC target ("backchain") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-15.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-15.c new file mode 100644 index 00000000000..e1987c0e313 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-15.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("hard-dfp"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-hard-dfp"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-hard-dfp,hard-dfp"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("hard-dfp,no-hard-dfp"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("hard-dfp") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-hard-dfp") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-hard-dfp") +#pragma GCC target ("hard-dfp") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +#pragma GCC target ("no-hard-dfp") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-16.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-16.c new file mode 100644 index 00000000000..b99a5f3e9f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-16.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -mhard-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-hard-dfp"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("hard-dfp"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("hard-dfp,no-hard-dfp"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-hard-dfp,hard-dfp"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-hard-dfp") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("hard-dfp") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("hard-dfp") +#pragma GCC target ("no-hard-dfp") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +#pragma GCC target ("hard-dfp") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-17.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-17.c new file mode 100644 index 00000000000..73e02286769 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-17.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mno-hard-dfp -mno-backchain -mhard-float -mno-vx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("hard-float"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("soft-float"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("soft-float,hard-float"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("hard-float,soft-float"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("hard-float") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("soft-float") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("soft-float") +#pragma GCC target ("hard-float") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +#pragma GCC target ("soft-float") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("hard-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-18.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-18.c new file mode 100644 index 00000000000..63407a088b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-18.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("soft-float"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("hard-float"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("hard-float,soft-float"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("soft-float,hard-float"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("soft-float") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("hard-float") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("hard-float") +#pragma GCC target ("soft-float") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +#pragma GCC target ("hard-float") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("soft-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-19.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-19.c new file mode 100644 index 00000000000..b0ace81763b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-19.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("htm"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-htm"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-htm,htm"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("htm,no-htm"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("htm") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-htm") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-htm") +#pragma GCC target ("htm") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +#pragma GCC target ("no-htm") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("htm") +__attribute__ ((target ("htm"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +__attribute__ ((target ("htm"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-2.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-2.c new file mode 100644 index 00000000000..1e6713f9934 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-2.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("arch=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("arch=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("arch=z13,arch=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("arch=z10,arch=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("arch=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("arch=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("arch=z13") +#pragma GCC target ("arch=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +#pragma GCC target ("arch=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-20.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-20.c new file mode 100644 index 00000000000..48fa677439b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-20.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-htm"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("htm"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("htm,no-htm"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-htm,htm"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-htm") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("htm") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("htm") +#pragma GCC target ("no-htm") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +#pragma GCC target ("htm") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +__attribute__ ((target ("htm"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +__attribute__ ((target ("htm"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-21.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-21.c new file mode 100644 index 00000000000..e8a2cbad2a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-21.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("vx"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-vx"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-vx,vx"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("vx,no-vx"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("vx") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-vx") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-vx") +#pragma GCC target ("vx") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +#pragma GCC target ("no-vx") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("vx") +__attribute__ ((target ("vx"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +__attribute__ ((target ("vx"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-22.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-22.c new file mode 100644 index 00000000000..53f7c11c6ca --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-22.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -mhard-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-vx"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("vx"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("vx,no-vx"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-vx,vx"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-vx") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("vx") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("vx") +#pragma GCC target ("no-vx") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +#pragma GCC target ("vx") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +__attribute__ ((target ("vx"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +__attribute__ ((target ("vx"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-23.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-23.c new file mode 100644 index 00000000000..79b0ac3893f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-23.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("packed-stack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-packed-stack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-packed-stack,packed-stack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("packed-stack,no-packed-stack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("packed-stack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-packed-stack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-packed-stack") +#pragma GCC target ("packed-stack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +#pragma GCC target ("no-packed-stack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-24.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-24.c new file mode 100644 index 00000000000..8a7c6dc0763 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-24.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mno-backchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-packed-stack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("packed-stack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("packed-stack,no-packed-stack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-packed-stack,packed-stack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-packed-stack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("packed-stack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("packed-stack") +#pragma GCC target ("no-packed-stack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +#pragma GCC target ("packed-stack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-25.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-25.c new file mode 100644 index 00000000000..926846b1ada --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-25.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("small-exec"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-small-exec"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-small-exec,small-exec"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("small-exec,no-small-exec"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("small-exec") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-small-exec") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-small-exec") +#pragma GCC target ("small-exec") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +#pragma GCC target ("no-small-exec") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-26.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-26.c new file mode 100644 index 00000000000..1c11b6d59f5 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-26.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-small-exec"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("small-exec"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("small-exec,no-small-exec"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-small-exec,small-exec"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-small-exec") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("small-exec") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("small-exec") +#pragma GCC target ("no-small-exec") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +#pragma GCC target ("small-exec") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-27.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-27.c new file mode 100644 index 00000000000..d93c7d4e278 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-27.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("mvcle"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-mvcle"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-mvcle,mvcle"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("mvcle,no-mvcle"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("mvcle") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-mvcle") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-mvcle") +#pragma GCC target ("mvcle") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +#pragma GCC target ("no-mvcle") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-28.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-28.c new file mode 100644 index 00000000000..7eb069adcb1 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-28.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-mvcle"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("mvcle"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("mvcle,no-mvcle"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-mvcle,mvcle"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-mvcle") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("mvcle") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("mvcle") +#pragma GCC target ("no-mvcle") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +#pragma GCC target ("mvcle") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-29.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-29.c new file mode 100644 index 00000000000..2e38c6eb57e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-29.c @@ -0,0 +1,177 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("zvector") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-zvector") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-zvector") +#pragma GCC target ("zvector") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("zvector") +#pragma GCC target ("no-zvector") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-3.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-3.c new file mode 100644 index 00000000000..77739cc3054 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-3.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("tune=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("tune=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("tune=z10,tune=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("tune=z13,tune=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("tune=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("tune=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("tune=z10") +#pragma GCC target ("tune=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +#pragma GCC target ("tune=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-30.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-30.c new file mode 100644 index 00000000000..cc882fedf90 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-30.c @@ -0,0 +1,177 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-zvector") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("zvector") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("zvector") +#pragma GCC target ("no-zvector") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-zvector") +#pragma GCC target ("zvector") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-31.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-31.c new file mode 100644 index 00000000000..1b16c8e5fda --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-31.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("warn-dynamicstack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-warn-dynamicstack,warn-dynamicstack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ + +__attribute__ ((target ("warn-dynamicstack,no-warn-dynamicstack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-warn-dynamicstack") +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-32.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-32.c new file mode 100644 index 00000000000..cd0ef40a54a --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-32.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("warn-dynamicstack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("warn-dynamicstack,no-warn-dynamicstack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ + +__attribute__ ((target ("no-warn-dynamicstack,warn-dynamicstack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("warn-dynamicstack") +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-4.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-4.c new file mode 100644 index 00000000000..163f7221971 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-4.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("tune=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("tune=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("tune=z13,tune=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("tune=z10,tune=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("tune=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("tune=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("tune=z13") +#pragma GCC target ("tune=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +#pragma GCC target ("tune=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-5.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-5.c new file mode 100644 index 00000000000..4ad1d085302 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-5.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-size=4096"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-size=2048"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-size=2048,stack-size=4096"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("stack-size=4096,stack-size=2048"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-size=4096") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("stack-size=2048") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("stack-size=2048") +#pragma GCC target ("stack-size=4096") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +#pragma GCC target ("stack-size=2048") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-6.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-6.c new file mode 100644 index 00000000000..58ca6021385 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-6.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-size=2048"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-size=4096"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-size=4096,stack-size=2048"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("stack-size=2048,stack-size=4096"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-size=2048") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("stack-size=4096") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("stack-size=4096") +#pragma GCC target ("stack-size=2048") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +#pragma GCC target ("stack-size=4096") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-7.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-7.c new file mode 100644 index 00000000000..2fc4c4f10e6 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-7.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-guard=16"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-guard=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-guard=0,stack-guard=16"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("stack-guard=16,stack-guard=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-guard=16") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("stack-guard=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("stack-guard=0") +#pragma GCC target ("stack-guard=16") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +#pragma GCC target ("stack-guard=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-8.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-8.c new file mode 100644 index 00000000000..1a4dcb7084e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-8.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-guard=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-guard=16"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-guard=16,stack-guard=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("stack-guard=0,stack-guard=16"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-guard=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("stack-guard=16") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("stack-guard=16") +#pragma GCC target ("stack-guard=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +#pragma GCC target ("stack-guard=16") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-9.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-9.c new file mode 100644 index 00000000000..d4304f91d33 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-9.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { ! lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("branch-cost=2"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("branch-cost=1"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("branch-cost=1,branch-cost=2"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("branch-cost=2,branch-cost=1"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("branch-cost=2") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("branch-cost=1") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("branch-cost=1") +#pragma GCC target ("branch-cost=2") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +#pragma GCC target ("branch-cost=1") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-1.c new file mode 100644 index 00000000000..73003f0e4c3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-1.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mno-vx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("arch=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("arch=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("arch=z10,arch=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("arch=z13,arch=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("arch=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("arch=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("arch=z10") +#pragma GCC target ("arch=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +#pragma GCC target ("arch=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z13") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-10.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-10.c new file mode 100644 index 00000000000..7d33c89c93f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-10.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("branch-cost=1"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("branch-cost=2"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("branch-cost=2,branch-cost=1"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("branch-cost=1,branch-cost=2"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("branch-cost=1") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("branch-cost=2") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("branch-cost=2") +#pragma GCC target ("branch-cost=1") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +#pragma GCC target ("branch-cost=2") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=1") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-11.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-11.c new file mode 100644 index 00000000000..4737e9cbf3b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-11.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("warn-framesize=512"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("warn-framesize=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("warn-framesize=0,warn-framesize=512"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("warn-framesize=512,warn-framesize=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("warn-framesize=512") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("warn-framesize=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("warn-framesize=0") +#pragma GCC target ("warn-framesize=512") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +#pragma GCC target ("warn-framesize=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=512") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-12.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-12.c new file mode 100644 index 00000000000..71addb85dee --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-12.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("warn-framesize=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("warn-framesize=512"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("warn-framesize=512,warn-framesize=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("warn-framesize=0,warn-framesize=512"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("warn-framesize=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("warn-framesize=512") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("warn-framesize=512") +#pragma GCC target ("warn-framesize=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +#pragma GCC target ("warn-framesize=512") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-framesize=0") +__attribute__ ((target ("warn-framesize=512"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-13.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-13.c new file mode 100644 index 00000000000..27e3ec52736 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-13.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mno-packed-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("backchain"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-backchain"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-backchain,backchain"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("backchain,no-backchain"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("backchain") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-backchain") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-backchain") +#pragma GCC target ("backchain") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +#pragma GCC target ("no-backchain") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-14.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-14.c new file mode 100644 index 00000000000..9eb0cc58323 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-14.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-backchain"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("backchain"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("backchain,no-backchain"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-backchain,backchain"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-backchain") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("backchain") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("backchain") +#pragma GCC target ("no-backchain") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +#pragma GCC target ("backchain") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("no-backchain"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-backchain") +__attribute__ ((target ("backchain"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-15.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-15.c new file mode 100644 index 00000000000..3818ccdc57c --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-15.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("hard-dfp"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-hard-dfp"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-hard-dfp,hard-dfp"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("hard-dfp,no-hard-dfp"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("hard-dfp") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-hard-dfp") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-hard-dfp") +#pragma GCC target ("hard-dfp") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +#pragma GCC target ("no-hard-dfp") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-16.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-16.c new file mode 100644 index 00000000000..16600294c3e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-16.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -mhard-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-hard-dfp"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("hard-dfp"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("hard-dfp,no-hard-dfp"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-hard-dfp,hard-dfp"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-hard-dfp") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("hard-dfp") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("hard-dfp") +#pragma GCC target ("no-hard-dfp") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +#pragma GCC target ("hard-dfp") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("no-hard-dfp"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-hard-dfp") +__attribute__ ((target ("hard-dfp"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-17.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-17.c new file mode 100644 index 00000000000..39e588d0b17 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-17.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mno-hard-dfp -mno-backchain -mhard-float -mno-vx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("hard-float"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("soft-float"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("soft-float,hard-float"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("hard-float,soft-float"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("hard-float") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("soft-float") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("soft-float") +#pragma GCC target ("hard-float") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +#pragma GCC target ("soft-float") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("hard-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("hard-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-18.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-18.c new file mode 100644 index 00000000000..0b682425c80 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-18.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("soft-float"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("hard-float"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("hard-float,soft-float"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("soft-float,hard-float"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("soft-float") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("hard-float") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("hard-float") +#pragma GCC target ("soft-float") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +#pragma GCC target ("hard-float") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("soft-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +__attribute__ ((target ("soft-float"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("soft-float") +__attribute__ ((target ("hard-float"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-19.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-19.c new file mode 100644 index 00000000000..408800208ef --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-19.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("htm"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-htm"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-htm,htm"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("htm,no-htm"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("htm") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-htm") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-htm") +#pragma GCC target ("htm") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +#pragma GCC target ("no-htm") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("htm") +__attribute__ ((target ("htm"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +__attribute__ ((target ("htm"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-2.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-2.c new file mode 100644 index 00000000000..55a86bf0bc1 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-2.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("arch=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("arch=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("arch=z13,arch=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("arch=z10,arch=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("arch=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("arch=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("arch=z13") +#pragma GCC target ("arch=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +#pragma GCC target ("arch=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("arch=z10") +__attribute__ ((target ("arch=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-20.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-20.c new file mode 100644 index 00000000000..d2b6566f8a5 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-20.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-htm"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("htm"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("htm,no-htm"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-htm,htm"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-htm") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("htm") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("htm") +#pragma GCC target ("no-htm") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +#pragma GCC target ("htm") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +__attribute__ ((target ("no-htm"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +__attribute__ ((target ("htm"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-htm") +__attribute__ ((target ("htm"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-21.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-21.c new file mode 100644 index 00000000000..441e6bcb6ca --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-21.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("vx"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-vx"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-vx,vx"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("vx,no-vx"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("vx") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-vx") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-vx") +#pragma GCC target ("vx") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +#pragma GCC target ("no-vx") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("vx") +__attribute__ ((target ("vx"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +__attribute__ ((target ("vx"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-22.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-22.c new file mode 100644 index 00000000000..e954106fd04 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-22.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -mhard-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-vx"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("vx"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("vx,no-vx"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-vx,vx"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-vx") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("vx") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("vx") +#pragma GCC target ("no-vx") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +#pragma GCC target ("vx") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +__attribute__ ((target ("no-vx"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +__attribute__ ((target ("vx"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-vx") +__attribute__ ((target ("vx"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-23.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-23.c new file mode 100644 index 00000000000..6e6b37ac4b3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-23.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("packed-stack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-packed-stack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-packed-stack,packed-stack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("packed-stack,no-packed-stack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("packed-stack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-packed-stack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-packed-stack") +#pragma GCC target ("packed-stack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +#pragma GCC target ("no-packed-stack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-24.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-24.c new file mode 100644 index 00000000000..b97454fbac3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-24.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mno-backchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-packed-stack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("packed-stack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("packed-stack,no-packed-stack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-packed-stack,packed-stack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-packed-stack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("packed-stack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("packed-stack") +#pragma GCC target ("no-packed-stack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +#pragma GCC target ("packed-stack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("no-packed-stack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-packed-stack") +__attribute__ ((target ("packed-stack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-25.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-25.c new file mode 100644 index 00000000000..46c41ccc02b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-25.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("small-exec"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-small-exec"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-small-exec,small-exec"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("small-exec,no-small-exec"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("small-exec") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-small-exec") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-small-exec") +#pragma GCC target ("small-exec") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +#pragma GCC target ("no-small-exec") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-26.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-26.c new file mode 100644 index 00000000000..957d65810bc --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-26.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-small-exec"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("small-exec"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("small-exec,no-small-exec"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-small-exec,small-exec"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-small-exec") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("small-exec") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("small-exec") +#pragma GCC target ("no-small-exec") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +#pragma GCC target ("small-exec") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("no-small-exec"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-small-exec") +__attribute__ ((target ("small-exec"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-27.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-27.c new file mode 100644 index 00000000000..59b58121a22 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-27.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("mvcle"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-mvcle"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-mvcle,mvcle"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("mvcle,no-mvcle"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("mvcle") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-mvcle") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-mvcle") +#pragma GCC target ("mvcle") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +#pragma GCC target ("no-mvcle") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-28.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-28.c new file mode 100644 index 00000000000..77201274c06 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-28.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-mvcle"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("mvcle"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("mvcle,no-mvcle"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("no-mvcle,mvcle"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-mvcle") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("mvcle") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("mvcle") +#pragma GCC target ("no-mvcle") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +#pragma GCC target ("mvcle") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("no-mvcle"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-mvcle") +__attribute__ ((target ("mvcle"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-29.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-29.c new file mode 100644 index 00000000000..c5bbfaf1c43 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-29.c @@ -0,0 +1,177 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("zvector") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-zvector") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-zvector") +#pragma GCC target ("zvector") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("zvector") +#pragma GCC target ("no-zvector") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-3.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-3.c new file mode 100644 index 00000000000..948da10d29b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-3.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("tune=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("tune=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("tune=z10,tune=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("tune=z13,tune=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("tune=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("tune=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("tune=z10") +#pragma GCC target ("tune=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +#pragma GCC target ("tune=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z13") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-30.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-30.c new file mode 100644 index 00000000000..6aa813b7ff5 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-30.c @@ -0,0 +1,177 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-zvector") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("zvector") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("zvector") +#pragma GCC target ("no-zvector") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-zvector") +#pragma GCC target ("zvector") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-31.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-31.c new file mode 100644 index 00000000000..5227e9acdd6 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-31.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("warn-dynamicstack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("no-warn-dynamicstack,warn-dynamicstack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ + +__attribute__ ((target ("warn-dynamicstack,no-warn-dynamicstack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("no-warn-dynamicstack") +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-32.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-32.c new file mode 100644 index 00000000000..5d9eef7afda --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-32.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("warn-dynamicstack"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("warn-dynamicstack,no-warn-dynamicstack"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ + +__attribute__ ((target ("no-warn-dynamicstack,warn-dynamicstack"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("warn-dynamicstack") +#pragma GCC target ("no-warn-dynamicstack") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +#pragma GCC target ("warn-dynamicstack") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("no-warn-dynamicstack"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("no-warn-dynamicstack") +__attribute__ ((target ("warn-dynamicstack"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-4.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-4.c new file mode 100644 index 00000000000..9b50913e3d9 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-4.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("tune=z10"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("tune=z13"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("tune=z13,tune=z10"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("tune=z10,tune=z13"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("tune=z10") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("tune=z13") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("tune=z13") +#pragma GCC target ("tune=z10") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +#pragma GCC target ("tune=z13") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z10"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("tune=z10") +__attribute__ ((target ("tune=z13"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-5.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-5.c new file mode 100644 index 00000000000..bfc8803390c --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-5.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-size=4096"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-size=2048"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-size=2048,stack-size=4096"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("stack-size=4096,stack-size=2048"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-size=4096") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("stack-size=2048") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("stack-size=2048") +#pragma GCC target ("stack-size=4096") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +#pragma GCC target ("stack-size=2048") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=4096") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-6.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-6.c new file mode 100644 index 00000000000..b3bc0f6f8b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-6.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-size=2048"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-size=4096"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-size=4096,stack-size=2048"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("stack-size=2048,stack-size=4096"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-size=2048") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("stack-size=4096") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("stack-size=4096") +#pragma GCC target ("stack-size=2048") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +#pragma GCC target ("stack-size=4096") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=2048"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-size=2048") +__attribute__ ((target ("stack-size=4096"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-7.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-7.c new file mode 100644 index 00000000000..ac0b08d1a63 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-7.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-guard=16"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-guard=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-guard=0,stack-guard=16"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("stack-guard=16,stack-guard=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-guard=16") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("stack-guard=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("stack-guard=0") +#pragma GCC target ("stack-guard=16") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +#pragma GCC target ("stack-guard=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=16") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-8.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-8.c new file mode 100644 index 00000000000..9ceca50395e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-8.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mzarch -mno-warn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("stack-guard=0"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("stack-guard=16"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("stack-guard=16,stack-guard=0"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */ + +__attribute__ ((target ("stack-guard=0,stack-guard=16"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("stack-guard=0") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */ + +#pragma GCC target ("stack-guard=16") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */ + +#pragma GCC target ("stack-guard=16") +#pragma GCC target ("stack-guard=0") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +#pragma GCC target ("stack-guard=16") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=0"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */ +#pragma GCC reset_options + +#pragma GCC target ("stack-guard=0") +__attribute__ ((target ("stack-guard=16"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-9.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-9.c new file mode 100644 index 00000000000..ac6355561e2 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m64-9.c @@ -0,0 +1,353 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do assemble { target { lp64 } } } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-options "-save-temps -mdebug -m64 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */ + +/** + ** + ** Start + ** + **/ + +void fn_default_start (void) { } +/* { dg-final { scan-assembler "fn:fn_default_start ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */ + +/** + ** + ** Attribute + ** + **/ + +__attribute__ ((target ("branch-cost=2"))) +void fn_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */ + +void fn_att_1_default (void) { } + +__attribute__ ((target ("branch-cost=1"))) +void fn_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */ + +void fn_att_0_default (void) { } + +__attribute__ ((target ("branch-cost=1,branch-cost=2"))) +void fn_att_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */ + +__attribute__ ((target ("branch-cost=2,branch-cost=1"))) +void fn_att_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */ + +/** + ** + ** Pragma + ** + **/ + +#pragma GCC target ("branch-cost=2") +void fn_pragma_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_1_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */ + +#pragma GCC target ("branch-cost=1") +void fn_pragma_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */ +#pragma GCC reset_options + +void fn_pragma_0_default (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */ + +#pragma GCC target ("branch-cost=1") +#pragma GCC target ("branch-cost=2") +void fn_pragma_0_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +#pragma GCC target ("branch-cost=1") +void fn_pragma_1_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** Pragma and attribute + ** + **/ + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_1_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=2"))) +void fn_pragma_0_att_1 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_1_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */ +#pragma GCC reset_options + +#pragma GCC target ("branch-cost=2") +__attribute__ ((target ("branch-cost=1"))) +void fn_pragma_0_att_0 (void) { } +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */ +#pragma GCC reset_options + +/** + ** + ** End + ** + **/ + +void fn_default_end (void) { } +/* { dg-final { scan-assembler "fn:fn_default_end ar9" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end tu6" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */ +/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */ diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c new file mode 100644 index 00000000000..d471033a584 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c @@ -0,0 +1,62 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do run } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-require-effective-target vector } */ +/* { dg-options "-march=z900 -mno-vx -mzarch" } */ + +#define V16 __attribute__ ((vector_size(16))) +#pragma GCC push_options +#pragma GCC target ("arch=z13,vx") +__attribute__ ((noinline)) +void foo (char *d, int *off) +{ + typedef struct + { + char c; + V16 char vc; + } s_t; + s_t s = { 1,{ 0,11,22,33,44,55,66,77,88,99,101,111,121,131,141,151 }}; + *off = __builtin_offsetof(s_t, vc); + __builtin_memcpy(d, &s.vc, 16); +} +#pragma GCC pop_options + +#pragma GCC push_options +#pragma GCC target ("arch=z13,no-vx") +__attribute__ ((noinline)) +void bar (char *d, int *off) +{ + typedef struct + { + char c; + V16 char vc; + } s_t; + s_t s = { 1,{ 0,11,22,33,44,55,66,77,88,99,101,111,121,131,141,151 }}; + *off = __builtin_offsetof(s_t, vc); + __builtin_memcpy(d, &s.vc, 16); +} +#pragma GCC pop_options + +int main(int argc, char **argv) +{ + char buf[16] = { 0 }; + char buf2[16] = { 0 }; + int off = 0; + int off2 = 0; + int rc; + + rc = 0; + foo(buf, &off); + if (off != 8) + rc += 1; + if (buf[7] != 77) + rc += 2; + bar (buf2, &off2); + if (off2 != 16) + rc += 4; + if (buf2[6] != 66) + rc += 8; + + return rc; +} diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c new file mode 100644 index 00000000000..a238dce1c2f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c @@ -0,0 +1,62 @@ +/* Functional tests for the "target" attribute and pragma. */ + +/* { dg-do run } */ +/* { dg-require-effective-target target_attribute } */ +/* { dg-require-effective-target vector } */ +/* { dg-options "-march=z13 -mvx -mzarch" } */ + +#define V16 __attribute__ ((vector_size(16))) +#pragma GCC push_options +#pragma GCC target ("arch=z900,no-vx") +__attribute__ ((noinline)) +void foo (char *d, int *off) +{ + typedef struct + { + char c; + V16 char vc; + } s_t; + s_t s = { 1,{ 0,11,22,33,44,55,66,77,88,99,101,111,121,131,141,151 }}; + *off = __builtin_offsetof(s_t, vc); + __builtin_memcpy(d, &s.vc, 16); +} +#pragma GCC pop_options + +#pragma GCC push_options +#pragma GCC target ("no-vx") +__attribute__ ((noinline)) +void bar (char *d, int *off) +{ + typedef struct + { + char c; + V16 char vc; + } s_t; + s_t s = { 1,{ 0,11,22,33,44,55,66,77,88,99,101,111,121,131,141,151 }}; + *off = __builtin_offsetof(s_t, vc); + __builtin_memcpy(d, &s.vc, 16); +} +#pragma GCC pop_options + +int main(int argc, char **argv) +{ + char buf[16] = { 0 }; + char buf2[16] = { 0 }; + int off = 0; + int off2 = 0; + int rc; + + rc = 0; + foo(buf, &off); + if (off != 16) + rc += 1; + if (buf[7] != 77) + rc += 2; + bar (buf2, &off2); + if (off2 != 16) + rc += 4; + if (buf2[6] != 66) + rc += 8; + + return rc; +}