summaryrefslogtreecommitdiff
path: root/0222-Backport-SME-aarch64-Skip-some-SME-register-save-tes.patch
blob: 0b0dbd97beb6c13b7b8c5584e8bc37e35a882466 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
From cc2e901eccd40992432f74270a9ebc1b708b6eb1 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <richard.sandiford@arm.com>
Date: Sun, 10 Dec 2023 19:46:05 +0000
Subject: [PATCH 123/157] [Backport][SME] aarch64: Skip some SME register save
 tests on BE

Reference: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=23ea0bc2cf042d74c4adfe26a57cf96b1d837a91

Big-endian targets need to save Z8-Z15 in the same order as
the registers would appear for D8-D15, because the layout is
mandated by the EH ABI.  BE targets therefore use ST1D instead
of the normal STR for those registers (but not for others).

That difference is already tested elsewhere and isn't important
for the SME tests.  This patch therefore restricts the affected
tests to LE.

gcc/testsuite/
	* gcc.target/aarch64/sme/call_sm_switch_5.c: Restrict tests that
	contain Z8-Z23 saves to little-endian.
	* gcc.target/aarch64/sme/call_sm_switch_8.c: Likewise.
	* gcc.target/aarch64/sme/locally_streaming_1.c: Likewise.
---
 gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_5.c    | 6 +++---
 gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_8.c    | 6 +++---
 gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c | 2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_5.c b/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_5.c
index e3d9bc274..6238ab80d 100644
--- a/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_5.c
+++ b/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_5.c
@@ -14,7 +14,7 @@ struct callbacks {
 };
 
 /*
-** n_caller:	{ target lp64 }
+** n_caller:	{ target { lp64 && aarch64_little_endian } }
 **	stp	x30, (x19|x2[0-8]), \[sp, #?-32\]!
 **	cntd	x16
 **	str	x16, \[sp, #?16\]
@@ -114,7 +114,7 @@ n_caller (struct callbacks *c)
 }
 
 /*
-** s_caller:	{ target lp64 }
+** s_caller:	{ target { lp64 && aarch64_little_endian } }
 **	stp	x30, (x19|x2[0-8]), \[sp, #?-32\]!
 **	cntd	x16
 **	str	x16, \[sp, #?16\]
@@ -214,7 +214,7 @@ s_caller (struct callbacks *c) [[arm::streaming]]
 }
 
 /*
-** sc_caller:
+** sc_caller:	{ target aarch64_little_endian }
 **	stp	x29, x30, \[sp, #?-32\]!
 **	mov	x29, sp
 **	cntd	x16
diff --git a/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_8.c b/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_8.c
index f44724df3..c909b34ff 100644
--- a/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_8.c
+++ b/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_8.c
@@ -7,7 +7,7 @@ svint8_t produce_z0 ();
 void consume_z0 (svint8_t);
 
 /*
-** test_z0:
+** test_z0:	{ target aarch64_little_endian }
 **	...
 **	smstop	sm
 **	bl	produce_z0
@@ -32,7 +32,7 @@ svint8x4_t produce_z3 ();
 void consume_z3 (svint8x4_t);
 
 /*
-** test_z3:
+** test_z3:	{ target aarch64_little_endian }
 **	...
 **	smstop	sm
 **	bl	produce_z3
@@ -61,7 +61,7 @@ svbool_t produce_p0 ();
 void consume_p0 (svbool_t);
 
 /*
-** test_p0:
+** test_p0:	{ target aarch64_little_endian }
 **	...
 **	smstop	sm
 **	bl	produce_p0
diff --git a/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c b/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c
index 20ff4b87d..4bb637f47 100644
--- a/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c
@@ -265,7 +265,7 @@ n_ls_vector_pcs ()
 }
 
 /*
-** n_ls_sve_pcs:
+** n_ls_sve_pcs:	{ target aarch64_little_endian }
 **	sub	sp, sp, #?16
 **	cntd	x16
 **	str	x16, \[sp\]
-- 
2.33.0