xref: /openbsd/regress/sys/arch/amd64/fpu/Makefile (revision 7775ce89)
1# $OpenBSD: Makefile,v 1.4 2022/04/21 19:21:05 bluhm Exp $
2
3.if "${MACHINE_ARCH}" != amd64
4regress:
5	# MACHINE_ARCH is not amd64
6	@echo SKIPPED
7.else
8
9PROGS =		fenv fdump fdfl feget fxproc0
10SRCS_fenv =	fenv.S
11LDADD_fenv =	-nopie -nostdlib -static
12LDADD_fdfl =	-lm
13LDADD_feget =	-lm
14LDADD_fxproc0 =	-lkvm
15CFLAGS =	-O2 ${PIPE} ${DEBUG}
16CFLAGS +=	-Wformat -Wno-compare-distinct-pointer-types
17WARNINGS =	yes
18CLEANFILES =	*.out
19
20.if ! (make(clean) || make(cleandir) || make(obj))
21MODEL !=	/sbin/sysctl -n hw.model | tr -c '[:alnum:]' '_'
22ALLOWKMEM !=	/sbin/sysctl -n kern.allowkmem
23
24REGRESS_TARGETS +=	run-regress-fenv
25run-regress-fenv: fenv fdump
26.if ${MODEL:C/.*_AMD_Opteron_.*/opteron/} != opteron
27	# Load FPU environment directly at _start and write it.
28	# Read FPU environment and print it to stdout.
29	./fenv | ./fdump >fenv.out
30	diff ${.CURDIR}/fenv_t.ok fenv.out
31.else
32	# Early AMD Opteron processors behave differently.
33	@echo SKIPPED
34.endif
35
36REGRESS_TARGETS +=	run-regress-fdfl
37run-regress-fdfl: fdfl
38	# Print default libm FPU environment to stdout.
39	./fdfl >fdfl.out
40	diff ${.CURDIR}/fenv_t.ok fdfl.out
41
42REGRESS_TARGETS +=	run-regress-feget
43run-regress-feget: feget
44.if ${MODEL:C/.*_AMD_Opteron_.*/opteron/} != opteron
45	# Get FPU environment via libm and print it to stdout.
46	./feget >feget.out
47	diff ${.CURDIR}/fenv_t.ok feget.out
48.else
49	# Early AMD Opteron processors behave differently.
50	@echo SKIPPED
51.endif
52
53REGRESS_TARGETS +=	run-regress-fxproc0
54run-regress-fxproc0: fxproc0
55.if ${ALLOWKMEM}
56	# Read FPU storage area from proc0 via /dev/mem and print it to stdout.
57	${SUDO} ./fxproc0 >fxproc0.out
58	diff ${.CURDIR}/fxsave64.ok fxproc0.out
59.else
60	# Set sysctl kern.allowkmem=1 for additional tests.
61	@echo SKIPPED
62.endif
63.endif
64.endif
65
66.include <bsd.regress.mk>
67