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