master
target 211 lines 6.15 KB
Raw
1 # -*- Mode: makefile -*-
2 #
3 # AArch64 specific tweaks
4
5 ARM_SRC=$(SRC_PATH)/tests/tcg/arm
6 VPATH += $(ARM_SRC)
7
8 AARCH64_SRC=$(SRC_PATH)/tests/tcg/aarch64
9 VPATH += $(AARCH64_SRC)
10
11 # Base architecture tests
12 AARCH64_TESTS=fcvt pcalign-a64 lse2-fault
13 AARCH64_TESTS += test-2248 test-2150
14
15 fcvt: LDFLAGS+=-lm
16
17 run-fcvt: fcvt
18 $(call run-test,$<,$(QEMU) $<)
19 $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
20
21 config-cc.mak: Makefile
22 $(quiet-@)( \
23 fnia=`$(call cc-test,-fno-integrated-as) && echo -fno-integrated-as`; \
24 $(call cc-option,-march=armv8.1-a+sve, CROSS_CC_HAS_SVE); \
25 $(call cc-option,-march=armv8.1-a+sve2, CROSS_CC_HAS_SVE2); \
26 $(call cc-option,-march=armv8.2-a, CROSS_CC_HAS_ARMV8_2); \
27 $(call cc-option,-march=armv8.3-a, CROSS_CC_HAS_ARMV8_3); \
28 $(call cc-option,-march=armv8.5-a, CROSS_CC_HAS_ARMV8_5); \
29 $(call cc-option,-mbranch-protection=standard, CROSS_CC_HAS_ARMV8_BTI); \
30 $(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE); \
31 $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme $$fnia, CROSS_AS_HAS_ARMV9_SME); \
32 $(call cc-option,-march=armv9-a+fprcvt, CROSS_CC_HAS_ARMV9_FPRCVT)) 3> config-cc.mak
33 -include config-cc.mak
34
35 ifneq ($(CROSS_CC_HAS_ARMV9_FPRCVT),)
36 AARCH64_TESTS += fcvt-fprcvt
37 fcvt-fprcvt: LDFLAGS += -lm
38 fcvt-fprcvt: CFLAGS += $(CROSS_CC_HAS_ARMV9_FPRCVT) -DFPRCVT
39 fcvt-fprcvt: fcvt.c
40 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
41 run-fcvt-fprcvt: fcvt-fprcvt
42 $(call run-test,$<,$(QEMU) $<)
43 $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
44 endif
45
46 ifneq ($(CROSS_CC_HAS_ARMV8_2),)
47 AARCH64_TESTS += dcpop
48 dcpop: CFLAGS += $(CROSS_CC_HAS_ARMV8_2)
49 endif
50 ifneq ($(CROSS_CC_HAS_ARMV8_5),)
51 AARCH64_TESTS += dcpodp
52 dcpodp: CFLAGS += $(CROSS_CC_HAS_ARMV8_5)
53 endif
54
55 # Pauth Tests
56 ifneq ($(CROSS_CC_HAS_ARMV8_3),)
57 AARCH64_TESTS += pauth-1 pauth-2 pauth-4 pauth-5 test-2375
58 pauth-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
59 test-2375: CFLAGS += -march=armv8.3-a
60 run-pauth-1: QEMU_OPTS += -cpu max
61 run-pauth-2: QEMU_OPTS += -cpu max
62 # Choose a cpu with FEAT_Pauth but without FEAT_FPAC for pauth-[45].
63 run-pauth-4: QEMU_OPTS += -cpu neoverse-v1
64 run-pauth-5: QEMU_OPTS += -cpu neoverse-v1
65 endif
66
67 # BTI Tests
68 # bti-1 tests the elf notes, so we require special compiler support.
69 ifneq ($(CROSS_CC_HAS_ARMV8_BTI),)
70 AARCH64_TESTS += bti-1 bti-3
71 bti-1 bti-3: CFLAGS += -fno-stack-protector $(CROSS_CC_HAS_ARMV8_BTI)
72 bti-1 bti-3: LDFLAGS += -nostdlib
73 endif
74 # bti-2 tests PROT_BTI, so no special compiler support required.
75 AARCH64_TESTS += bti-2
76
77 # MTE Tests
78 ifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
79 AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7 mte-8 mte-9 mte-10
80 mte-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_MTE)
81 endif
82
83 # SME Tests
84 ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
85 SME_TESTS = sme-outprod1 sme-smopa-1 sme-smopa-2 sme-fmopa-1 sme-fmopa-2 sme-fmopa-3
86 AARCH64_TESTS += $(SME_TESTS)
87 $(SME_TESTS): CFLAGS += $(CROSS_AS_HAS_ARMV9_SME)
88 endif
89
90 # GCS Tests
91 GCS_TESTS += gcsstr gcspushm gcsss
92 AARCH64_TESTS += $(GCS_TESTS)
93 $(GCS_TESTS): gcs.h
94
95 # System Registers Tests
96 AARCH64_TESTS += sysregs
97
98 AARCH64_TESTS += test-aes
99 test-aes: CFLAGS += -O -march=armv8-a+aes
100 test-aes: test-aes-main.c.inc
101
102 # Vector SHA1
103 # Work around compiler false-positive warning, as we do for the 'sha1' test
104 sha1-vector: CFLAGS=-O3 -Wno-stringop-overread
105 sha1-vector: sha1.c
106 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
107 run-sha1-vector: sha1-vector run-sha1
108 $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<)
109 $(call diff-out, sha1-vector, sha1.out)
110
111 TESTS += sha1-vector
112
113 # Vector versions of sha512 (-O3 triggers vectorisation)
114 sha512-vector: CFLAGS=-O3
115 sha512-vector: sha512.c
116 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
117
118 TESTS += sha512-vector
119
120 ifneq ($(CROSS_CC_HAS_SVE),)
121 # SVE ioctl test
122 AARCH64_TESTS += sve-ioctls
123 sve-ioctls: CFLAGS += $(CROSS_CC_HAS_SVE)
124
125 sha512-sve: CFLAGS=-O3 -march=armv8.1-a+sve
126 sha512-sve: sha512.c
127 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
128
129 sve-str: CFLAGS=-O1 -march=armv8.1-a+sve
130 sve-str: sve-str.c
131 $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
132
133 TESTS += sha512-sve sve-str
134
135 ifneq ($(GDB),)
136 GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
137
138 run-gdbstub-sysregs: sysregs
139 $(call run-test, $@, $(GDB_SCRIPT) \
140 --gdb $(GDB) \
141 --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
142 --bin $< --test $(AARCH64_SRC)/gdbstub/test-sve.py, \
143 basic gdbstub SVE support)
144
145 run-gdbstub-sve-ioctls: sve-ioctls
146 $(call run-test, $@, $(GDB_SCRIPT) \
147 --gdb $(GDB) \
148 --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
149 --bin $< --test $(AARCH64_SRC)/gdbstub/test-sve-ioctl.py, \
150 basic gdbstub SVE ZLEN support)
151
152 EXTRA_RUNS += run-gdbstub-sysregs run-gdbstub-sve-ioctls
153
154 ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
155 # SME gdbstub tests
156
157 run-gdbstub-sysregs-sme: sysregs
158 $(call run-test, $@, $(GDB_SCRIPT) \
159 --gdb $(GDB) \
160 --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
161 --bin $< --test $(AARCH64_SRC)/gdbstub/test-sme.py \
162 -- test_sme --gdb_basic_za_test, \
163 basic gdbstub SME support)
164
165 ifeq ($(GDB_HAS_SME_TILES),y)
166 run-gdbstub-sysregs-sme-tile-slice: sysregs
167 $(call run-test, $@, $(GDB_SCRIPT) \
168 --gdb $(GDB) \
169 --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
170 --bin $< --test $(AARCH64_SRC)/gdbstub/test-sme.py \
171 -- test_sme --gdb_tile_slice_test, \
172 gdbstub SME ZA tile slice support)
173 else
174 run-gdbstub-sysregs-sme-tile-slice: sysregs
175 $(call skip-test,"gdbstub SME ZA tile slice support", \
176 "selected gdb ($(GDB)) does not support SME ZA tile slices")
177 endif
178
179 run-gdbstub-sysregs-sme2: sysregs
180 $(call run-test, $@, $(GDB_SCRIPT) \
181 --gdb $(GDB) \
182 --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
183 --bin $< --test $(AARCH64_SRC)/gdbstub/test-sme2.py, \
184 gdbstub SME ZA tile slice support)
185
186 EXTRA_RUNS += run-gdbstub-sysregs-sme run-gdbstub-sysregs-sme-tile-slice run-gdbstub-sysregs-sme2
187
188 endif
189
190 ifeq ($(GDB_HAS_MTE),y)
191 run-gdbstub-mte: mte-8
192 $(call run-test, $@, $(GDB_SCRIPT) \
193 --gdb $(GDB) \
194 --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
195 --bin $< --test $(AARCH64_SRC)/gdbstub/test-mte.py \
196 -- --mode=user, \
197 gdbstub MTE support)
198
199 EXTRA_RUNS += run-gdbstub-mte
200 endif
201
202 endif
203 endif
204
205 ifneq ($(CROSS_CC_HAS_SVE2),)
206 SVE2_TESTS = test-826 sve-while-ptr
207 $(SVE2_TESTS): CFLAGS += $(CROSS_CC_HAS_SVE2)
208 AARCH64_TESTS += $(SVE2_TESTS)
209 endif
210
211 TESTS += $(AARCH64_TESTS)