Commit 7763d972 by Dominik Vogt Committed by Andreas Krebbel

[PATCH 2/2] S/390: Implement "target" attribute.

gcc/ChangeLog

	* config/s390/s390.c (s390_asm_file_start): Implement hook function to
	emit .machine and .machinemode to the top of the assembler file.
	(TARGET_ASM_FILE_START): Provide target hook.
	(s390_asm_output_machine_for_arch): Protect with
	HAVE_AS_MACHINE_MACHINEMODE instead of S390_USE_TARGET_ATTRIBUTE.

gcc/testsuite/ChangeLog

	* gcc.target/s390/asm-machine-1.c: Updated.
	* gcc.target/s390/asm-machine-2.c: Updated.
	* gcc.target/s390/asm-machine-3.c: Updated.
	* gcc.target/s390/asm-machine-4.c: Updated.

From-SVN: r231272
parent ec47b086
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com> 2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/s390.c (s390_asm_file_start): Implement hook function to
emit .machine and .machinemode to the top of the assembler file.
(TARGET_ASM_FILE_START): Provide target hook.
(s390_asm_output_machine_for_arch): Protect with
HAVE_AS_MACHINE_MACHINEMODE instead of S390_USE_TARGET_ATTRIBUTE.
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/s390.opt (s390_arch_string): Remove. * config/s390/s390.opt (s390_arch_string): Remove.
(s390_tune_string): Likewise. (s390_tune_string): Likewise.
(s390_cost_pointer): Add Variable. (s390_cost_pointer): Add Variable.
...@@ -6738,7 +6738,7 @@ s390_function_num_hotpatch_hw (tree decl, ...@@ -6738,7 +6738,7 @@ s390_function_num_hotpatch_hw (tree decl,
/* Write the current .machine and .machinemode specification to the assembler /* Write the current .machine and .machinemode specification to the assembler
file. */ file. */
#if S390_USE_TARGET_ATTRIBUTE #ifdef HAVE_AS_MACHINE_MACHINEMODE
static void static void
s390_asm_output_machine_for_arch (FILE *asm_out_file) s390_asm_output_machine_for_arch (FILE *asm_out_file)
{ {
...@@ -14346,6 +14346,15 @@ s390_vector_alignment (const_tree type) ...@@ -14346,6 +14346,15 @@ s390_vector_alignment (const_tree type)
return MIN (64, tree_to_shwi (TYPE_SIZE (type))); return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
} }
#ifdef HAVE_AS_MACHINE_MACHINEMODE
/* Implement TARGET_ASM_FILE_START. */
static void
s390_asm_file_start (void)
{
s390_asm_output_machine_for_arch (asm_out_file);
}
#endif
/* Implement TARGET_ASM_FILE_END. */ /* Implement TARGET_ASM_FILE_END. */
static void static void
s390_asm_file_end (void) s390_asm_file_end (void)
...@@ -14645,6 +14654,11 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty ...@@ -14645,6 +14654,11 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty
#undef TARGET_INVALID_BINARY_OP #undef TARGET_INVALID_BINARY_OP
#define TARGET_INVALID_BINARY_OP s390_invalid_binary_op #define TARGET_INVALID_BINARY_OP s390_invalid_binary_op
#ifdef HAVE_AS_MACHINE_MACHINEMODE
#undef TARGET_ASM_FILE_START
#define TARGET_ASM_FILE_START s390_asm_file_start
#endif
#undef TARGET_ASM_FILE_END #undef TARGET_ASM_FILE_END
#define TARGET_ASM_FILE_END s390_asm_file_end #define TARGET_ASM_FILE_END s390_asm_file_end
......
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com> 2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/asm-machine-1.c: Updated.
* gcc.target/s390/asm-machine-2.c: Updated.
* gcc.target/s390/asm-machine-3.c: Updated.
* gcc.target/s390/asm-machine-4.c: Updated.
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/asm-machine-1.c: New test. * gcc.target/s390/asm-machine-1.c: New test.
* gcc.target/s390/asm-machine-2.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-3.c: New test.
......
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
/* { dg-require-effective-target target_attribute } */ /* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */ /* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */
void foo(void) { } void foo(void) { }
/* { dg-final { scan-assembler-not "\t\.machine " } } */ /* { dg-final { scan-assembler-times "\t\.machine " 1 } } */
/* { dg-final { scan-assembler-not "\t\.machinemode " } } */ /* { dg-final { scan-assembler-times "\t\.machinemode " 1 } } */
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
/* { dg-require-effective-target target_attribute } */ /* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */ /* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
void foo(void) { } void foo(void) { }
__attribute__ ((target("arch=z10"))) __attribute__ ((target("arch=z10")))
...@@ -12,8 +15,8 @@ void bar(void) { } ...@@ -12,8 +15,8 @@ void bar(void) { }
/* { dg-final { scan-assembler-times "\t\.machine pop" 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\.machine \"z10\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode push" 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 zarch" 2 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */ /* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */ /* { dg-final { scan-assembler-times "\t\.machine " 4 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */ /* { dg-final { scan-assembler-times "\t\.machinemode " 4 } } */
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
/* { dg-require-effective-target target_attribute } */ /* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */ /* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
void foo(void) { } void foo(void) { }
#pragma GCC target("arch=z10") #pragma GCC target("arch=z10")
...@@ -12,8 +15,8 @@ void bar(void) { } ...@@ -12,8 +15,8 @@ void bar(void) { }
/* { dg-final { scan-assembler-times "\t\.machine pop" 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\.machine \"z10\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode push" 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 zarch" 2 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */ /* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */ /* { dg-final { scan-assembler-times "\t\.machine " 4 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */ /* { dg-final { scan-assembler-times "\t\.machinemode " 4 } } */
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
/* { dg-require-effective-target target_attribute } */ /* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */ /* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
void foo(void) { } void foo(void) { }
#pragma GCC target("arch=z196") #pragma GCC target("arch=z196")
...@@ -13,8 +16,8 @@ void bar(void) { } ...@@ -13,8 +16,8 @@ void bar(void) { }
/* { dg-final { scan-assembler-times "\t\.machine pop" 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\.machine \"z10\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode push" 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 zarch" 2 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */ /* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */ /* { dg-final { scan-assembler-times "\t\.machine " 4 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */ /* { dg-final { scan-assembler-times "\t\.machinemode " 4 } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment