aboutsummaryrefslogtreecommitdiff
path: root/tests/tcg/aarch64/Makefile.target
blob: ad1774c2ce06763d90ea7660c15d2425cc958355 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# -*- Mode: makefile -*-
#
# AArch64 specific tweaks

ARM_SRC=$(SRC_PATH)/tests/tcg/arm
VPATH 		+= $(ARM_SRC)

AARCH64_SRC=$(SRC_PATH)/tests/tcg/aarch64
VPATH 		+= $(AARCH64_SRC)

# Base architecture tests
AARCH64_TESTS=fcvt pcalign-a64 lse2-fault
AARCH64_TESTS += test-2248 test-2150

fcvt: LDFLAGS+=-lm

run-fcvt: fcvt
	$(call run-test,$<,$(QEMU) $<)
	$(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)

config-cc.mak: Makefile
	$(quiet-@)( \
	    fnia=`$(call cc-test,-fno-integrated-as) && echo -fno-integrated-as`; \
	    $(call cc-option,-march=armv8.1-a+sve,          CROSS_CC_HAS_SVE); \
	    $(call cc-option,-march=armv8.1-a+sve2,         CROSS_CC_HAS_SVE2); \
	    $(call cc-option,-march=armv8.2-a,              CROSS_CC_HAS_ARMV8_2); \
	    $(call cc-option,-march=armv8.3-a,              CROSS_CC_HAS_ARMV8_3); \
	    $(call cc-option,-march=armv8.5-a,              CROSS_CC_HAS_ARMV8_5); \
	    $(call cc-option,-mbranch-protection=standard,  CROSS_CC_HAS_ARMV8_BTI); \
	    $(call cc-option,-march=armv8.5-a+memtag,       CROSS_CC_HAS_ARMV8_MTE); \
	    $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme $$fnia, CROSS_AS_HAS_ARMV9_SME)) 3> config-cc.mak
-include config-cc.mak

ifneq ($(CROSS_CC_HAS_ARMV8_2),)
AARCH64_TESTS += dcpop
dcpop: CFLAGS += $(CROSS_CC_HAS_ARMV8_2)
endif
ifneq ($(CROSS_CC_HAS_ARMV8_5),)
AARCH64_TESTS += dcpodp
dcpodp: CFLAGS += $(CROSS_CC_HAS_ARMV8_5)
endif

# Pauth Tests
ifneq ($(CROSS_CC_HAS_ARMV8_3),)
AARCH64_TESTS += pauth-1 pauth-2 pauth-4 pauth-5 test-2375
pauth-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
test-2375: CFLAGS += -march=armv8.3-a
run-pauth-1: QEMU_OPTS += -cpu max
run-pauth-2: QEMU_OPTS += -cpu max
# Choose a cpu with FEAT_Pauth but without FEAT_FPAC for pauth-[45].
run-pauth-4: QEMU_OPTS += -cpu neoverse-v1
run-pauth-5: QEMU_OPTS += -cpu neoverse-v1
endif

# BTI Tests
# bti-1 tests the elf notes, so we require special compiler support.
ifneq ($(CROSS_CC_HAS_ARMV8_BTI),)
AARCH64_TESTS += bti-1 bti-3
bti-1 bti-3: CFLAGS += -fno-stack-protector $(CROSS_CC_HAS_ARMV8_BTI)
bti-1 bti-3: LDFLAGS += -nostdlib
endif
# bti-2 tests PROT_BTI, so no special compiler support required.
AARCH64_TESTS += bti-2

# MTE Tests
ifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7
mte-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_MTE)
endif

# SME Tests
ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
AARCH64_TESTS += sme-outprod1 sme-smopa-1 sme-smopa-2
sme-outprod1 sme-smopa-1 sme-smopa-2: CFLAGS += $(CROSS_AS_HAS_ARMV9_SME)
endif

# System Registers Tests
AARCH64_TESTS += sysregs

AARCH64_TESTS += test-aes
test-aes: CFLAGS += -O -march=armv8-a+aes
test-aes: test-aes-main.c.inc

# Vector SHA1
sha1-vector: CFLAGS=-O3
sha1-vector: sha1.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
run-sha1-vector: sha1-vector run-sha1
	$(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<)
	$(call diff-out, sha1-vector, sha1.out)

TESTS += sha1-vector

# Vector versions of sha512 (-O3 triggers vectorisation)
sha512-vector: CFLAGS=-O3
sha512-vector: sha512.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)

TESTS += sha512-vector

ifneq ($(CROSS_CC_HAS_SVE),)
# SVE ioctl test
AARCH64_TESTS += sve-ioctls
sve-ioctls: CFLAGS += $(CROSS_CC_HAS_SVE)

sha512-sve: CFLAGS=-O3 -march=armv8.1-a+sve
sha512-sve: sha512.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)

sve-str: CFLAGS=-O1 -march=armv8.1-a+sve
sve-str: sve-str.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)

TESTS += sha512-sve sve-str

ifneq ($(GDB),)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py

run-gdbstub-sysregs: sysregs
	$(call run-test, $@, $(GDB_SCRIPT) \
		--gdb $(GDB) \
		--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
		--bin $< --test $(AARCH64_SRC)/gdbstub/test-sve.py, \
	basic gdbstub SVE support)

run-gdbstub-sve-ioctls: sve-ioctls
	$(call run-test, $@, $(GDB_SCRIPT) \
		--gdb $(GDB) \
		--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
		--bin $< --test $(AARCH64_SRC)/gdbstub/test-sve-ioctl.py, \
	basic gdbstub SVE ZLEN support)

EXTRA_RUNS += run-gdbstub-sysregs run-gdbstub-sve-ioctls
endif
endif

ifneq ($(CROSS_CC_HAS_SVE2),)
AARCH64_TESTS += test-826
test-826: CFLAGS += $(CROSS_CC_HAS_SVE2)
endif

TESTS += $(AARCH64_TESTS)