aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/Makefile
blob: d5613e44bd108d083a5c80b7d36b00b55db6f074 (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
TARGET = make_nm normalize_prefix bad_address misc cvt_test cvt_test32 noexception misc32 detect_x32 avx10_test
XBYAK_INC=../xbyak/xbyak.h ../xbyak/xbyak_mnemonic.h
UNAME_S=$(shell uname -s)
ifeq ($(shell ./detect_x32),x32)
X32?=1
endif
BIT=32
ifeq ($(shell uname -m),x86_64)
BIT=64
endif
ONLY_64BIT=0
ifeq ($(UNAME_S),Darwin)
  # 32-bit binary is not supported
  ONLY_64BIT=1
endif
ifeq ($(findstring MINGW64,$(UNAME_S)),MINGW64)
  ONLY_64BIT=1
endif
ifeq ($(ONLY_64BIT),0)
  TARGET += jmp address
endif

ifeq ($(BIT),64)
	TARGET += jmp64 address64 apx
endif

all: $(TARGET)

CFLAGS_WARN=-Wall -Wextra -Wformat=2 -Wcast-qual -Wwrite-strings -Wfloat-equal -Wpointer-arith

CFLAGS=-O2 -Wall -I.. -I. $(CFLAGS_WARN) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) #-std=c++0x
make_nm:
	$(CXX) $(CFLAGS) make_nm.cpp -o $@
normalize_prefix: normalize_prefix.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) normalize_prefix.cpp -o $@
test_mmx: test_mmx.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) test_mmx.cpp -o $@ -lpthread
jmp: jmp.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) jmp.cpp -o $@ -m32
jmp64: jmp.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) jmp.cpp -o $@ -m64
address: address.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) address.cpp -o $@ -m32
address64: address.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) address.cpp -o $@ -m64
bad_address: bad_address.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) bad_address.cpp -o $@
misc: misc.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) misc.cpp -o $@
misc32: misc.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) misc.cpp -o $@ -DXBYAK32
cvt_test: cvt_test.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) $< -o $@
cvt_test32: cvt_test.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) $< -o $@ -DXBYAK32
noexception: noexception.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) $< -o $@ -fno-exceptions
apx: apx.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) apx.cpp -o $@
avx10_test: avx10_test.cpp $(XBYAK_INC)
	$(CXX) $(CFLAGS) avx10_test.cpp -o $@ -DXBYAK64

TEST_FILES=old.txt new-ymm.txt bf16.txt comp.txt convert.txt minmax.txt saturation.txt
xed_test:
	@for target in $(addprefix avx10/, $(TEST_FILES)); do ./test_by_xed.sh $$target; done

test_nm: normalize_prefix $(TARGET)
	$(MAKE) -C ../gen
ifneq ($(ONLY_64BIT),1)
	CXX=$(CXX) ./test_nm.sh
	CXX=$(CXX) ./test_nm.sh noexcept
	CXX=$(CXX) ./test_nm.sh Y
	CXX=$(CXX) ./test_nm.sh avx512
	CXX=$(CXX) ./test_address.sh
	./jmp
	./cvt_test32
endif
	./bad_address
	./misc
	./misc32
	./cvt_test
ifeq ($(BIT),64)
	CXX=$(CXX) ./test_address.sh 64
ifneq ($(X32),1)
	CXX=$(CXX) ./test_nm.sh 64
	CXX=$(CXX) ./test_nm.sh Y64
endif
	./jmp64
	./apx
	./avx10_test
endif

test_avx: normalize_prefix
ifneq ($(ONLY_64BIT),0)
	CXX=$(CXX) ./test_avx.sh
	CXX=$(CXX) ./test_avx.sh Y
endif
ifeq ($(BIT),64)
	CXX=$(CXX) ./test_avx.sh 64
ifneq ($(X32),1)
	CXX=$(CXX) ./test_avx.sh Y64
endif
endif

test_avx512: normalize_prefix
ifneq ($(ONLY_64BIT),0)
	CXX=$(CXX) ./test_avx512.sh
endif
ifeq ($(BIT),64)
	CXX=$(CXX) ./test_avx512.sh 64
endif

test_avx10: avx10_test
	./avx10_test

detect_x32: detect_x32.c
	$(CC) $< -o $@

test: detect_x32
	$(MAKE) test_nm
	$(MAKE) test_avx
	$(MAKE) test_avx512

clean:
	$(RM) a.asm *.lst *.obj *.o $(TARGET) lib_run nm.cpp nm_frame make_512 avx10_test detect_x32

lib_run: lib_test.cpp lib_run.cpp lib.h
	$(CXX) $(CFLAGS) lib_run.cpp lib_test.cpp -o lib_run
make_nm: make_nm.cpp $(XBYAK_INC)

.PHONY: test