aarch64: Add codegen support for AdvSIMD faminmax
[official-gcc.git] / gcc / testsuite / gcc.target / s390 / unaligned-1.c
blob47d77160266fb605982ee3ff87735708472b2d53
1 /* With the -munaligned-symbols option all external and weak symbols
2 without explicit alignment are assumed to be potentially unaligned
3 and therefore cannot be accessed with larl. */
5 /* { dg-do compile } */
6 /* { dg-options "-O3 -march=z900 -fno-section-anchors -munaligned-symbols" } */
8 extern unsigned char extern_char;
9 extern unsigned char extern_explicitly_aligned_char __attribute__((aligned(2)));
10 extern unsigned char extern_explicitly_unaligned_char __attribute__((aligned(1)));
11 extern unsigned char __attribute__((weak)) extern_weak_char;
12 extern unsigned char extern_explicitly_aligned_weak_char __attribute__((weak,aligned(2)));
13 extern unsigned char extern_explicitly_unaligned_weak_char __attribute__((weak,aligned(1)));
15 unsigned char normal_char;
16 unsigned char explicitly_unaligned_char __attribute__((aligned(1)));
17 unsigned char __attribute__((weak)) weak_char = 0;
18 unsigned char explicitly_aligned_weak_char __attribute__((weak,aligned(2)));
19 unsigned char explicitly_unaligned_weak_char __attribute__((weak,aligned(1)));
21 extern unsigned int extern_int;
22 extern unsigned int extern_explicitly_aligned_int __attribute__((aligned(4)));
23 extern unsigned int extern_explicitly_unaligned_int __attribute__((aligned(1)));
24 extern unsigned int __attribute__((weak)) extern_weak_int;
25 extern unsigned int extern_explicitly_aligned_weak_int __attribute__((weak,aligned(4)));
26 extern unsigned int extern_explicitly_unaligned_weak_int __attribute__((weak,aligned(1)));
28 unsigned int normal_int;
29 unsigned int explicitly_unaligned_int __attribute__((aligned(1)));
30 unsigned int __attribute__((weak)) weak_int = 0;
31 unsigned int explicitly_aligned_weak_int __attribute__((weak,aligned(4)));
32 unsigned int explicitly_unaligned_weak_int __attribute__((weak,aligned(1)));
34 extern const void extern_void;
35 extern const void extern_explicitly_aligned_void __attribute__((aligned(2)));
36 extern const void extern_explicitly_unaligned_void __attribute__((aligned(1)));
37 extern const void __attribute__((weak)) extern_weak_void;
38 extern const void extern_explicitly_aligned_weak_void __attribute__((weak,aligned(2)));
39 extern const void extern_explicitly_unaligned_weak_void __attribute__((weak,aligned(1)));
42 unsigned char
43 foo ()
45 return extern_char + extern_explicitly_aligned_char
46 + extern_explicitly_unaligned_char
47 + extern_weak_char + extern_explicitly_aligned_weak_char
48 + extern_explicitly_unaligned_weak_char
50 + normal_char + explicitly_unaligned_char
51 + weak_char + explicitly_aligned_weak_char
52 + explicitly_unaligned_weak_char
54 + extern_int + extern_explicitly_aligned_int
55 + extern_explicitly_unaligned_int
56 + extern_weak_int + extern_explicitly_aligned_weak_int
57 + extern_explicitly_unaligned_weak_int
59 + normal_int + explicitly_unaligned_int
60 + weak_int + explicitly_aligned_weak_int
61 + explicitly_unaligned_weak_int;
64 const void *f1(void) { return &extern_void; }
65 const void *f2(void) { return &extern_explicitly_aligned_void; }
66 const void *f3(void) { return &extern_explicitly_unaligned_void; }
67 const void *f4(void) { return &extern_weak_void; }
68 const void *f5(void) { return &extern_explicitly_aligned_weak_void; }
69 const void *f6(void) { return &extern_explicitly_unaligned_weak_void; }
72 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_char\n" 0 } } */
73 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_aligned_char\n" 1 } } */
74 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_unaligned_char\n" 0 } } */
75 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_weak_char\n" 0 } } */
76 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_aligned_weak_char\n" 1 } } */
77 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_unaligned_weak_char\n" 0 } } */
79 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,normal_char\n" 1 } } */
80 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,explicitly_unaligned_char\n" 0 } } */
81 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,weak_char\n" 0 } } */
82 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,explicitly_aligned_weak_char\n" 1 } } */
83 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,explicitly_unaligned_weak_char\n" 0 } } */
85 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_int\n" 1 } } */
86 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_aligned_int\n" 1 } } */
87 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_unaligned_int\n" 0 } } */
88 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_weak_int\n" 1 } } */
89 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_aligned_weak_int\n" 1 } } */
90 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_unaligned_weak_int\n" 0 } } */
92 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,normal_int\n" 1 } } */
93 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,explicitly_unaligned_int\n" 0 } } */
94 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,weak_int\n" 1 } } */
95 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,explicitly_aligned_weak_int\n" 1 } } */
96 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,explicitly_unaligned_weak_int\n" 0 } } */
98 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_void\n" 0 } } */
99 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_aligned_void\n" 1 } } */
100 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_unaligned_void\n" 0 } } */
101 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_weak_void\n" 0 } } */
102 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_aligned_weak_void\n" 1 } } */
103 /* { dg-final { scan-assembler-times "larl\t%r\[0-9\]*,extern_explicitly_unaligned_weak_void\n" 0 } } */