Skip to content

Commit 84fbf9a

Browse files
committed
[NFC] re-organize & parametrize doc/test targets
Signed-off-by: Jerry Zhang Jian <[email protected]>
1 parent 33d9896 commit 84fbf9a

File tree

1 file changed

+79
-81
lines changed

1 file changed

+79
-81
lines changed

rvv-intrinsic-generator/Makefile

Lines changed: 79 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -58,27 +58,28 @@ PYTHONPATHS = $(RVV_INTRINSIC_GEN_PATH):$(ABS_VENDOR_PATH)
5858
PY3 := PYTHONPATH=$$PYTHONPATH:$(PYTHONPATHS) python3
5959
# Main entry script of the generator
6060
MAIN := rvv_intrinsic_gen.main
61-
# BFloat16 instruction scripts
62-
BF16_INST := $(RVV_INTRINSIC_GEN_PATH)/bfloat16_inst.py
6361
# Script to clang-format the auto-generated adoc files
6462
CLANG_FORMAT_ADOC = clang_format_autogen
6563
# Extra flags specified when calling rvv_intrinsic_gen.main
6664
EXTRA_FLAG :=
6765
# Main output directory is default to auto-generated
6866
OUTPUT_DIR := ../auto-generated
67+
# Types of intrinsics
68+
TYPES = default bf16 vector-crypto
6969
# Derives output directory for each set of intrinsics
7070
# Output directory for non-policy intrinsics
7171
DIR := $(abspath $(OUTPUT_DIR))
72+
DIR_default = $(DIR)
7273
# Output directory for policy intrinsics
73-
POLICY_DIR := $(DIR)/policy_funcs
74+
POLICY_DIR_default = $(DIR)/policy_funcs
7475
# Output directory for bfloat16 non-policy intrinsics
75-
BF16_DIR := $(DIR)/bfloat16
76+
DIR_bf16 = $(DIR)/bfloat16
7677
# Output directory for bfloat16 policy intrinsics
77-
BF16_POLICY_DIR := $(BF16_DIR)/policy_funcs
78+
POLICY_DIR_bf16 = $(DIR_bf16)/policy_funcs
7879
# Output directory for vector-crypto non-policy intrinsics
79-
VECTOR_CRYPTO_DIR := $(DIR)/vector-crypto
80+
DIR_vector-crypto = $(DIR)/vector-crypto
8081
# Output directory for vector-crypto policy intrinsics
81-
VECTOR_CRYPTO_POLICY_DIR := $(VECTOR_CRYPTO_DIR)/policy_funcs
82+
POLICY_DIR_vector-crypto = $(DIR_vector-crypto)/policy_funcs
8283
# Directory that stores the v0.10 unit tests
8384
LEGACY_API_TESTS_DIR := $(abspath ../legacy-api-unit-tests)
8485
# Derived variable to trigger option --vendor-inst
@@ -99,6 +100,12 @@ GNU_TOOLCHAIN_DIR :=
99100
GCC_CASES_DIR := $(GNU_TOOLCHAIN_DIR)/gcc/gcc/testsuite/gcc.target/riscv/rvv/gcc-auto-generated
100101
# Directory that stores the g++ cases
101102
G++_CASES_DIR := $(GNU_TOOLCHAIN_DIR)/gcc/gcc/testsuite/g++.target/riscv/rvv/g++-auto-generated
103+
# Flags for different variants
104+
FLAGS_default =
105+
FLAGS_bf16 = --skip-default-inst --vendor-inst $(RVV_INTRINSIC_GEN_PATH)/bfloat16_inst.py
106+
FLAGS_vector-crypto = --gen-vector-crypto
107+
# Commit header
108+
COMMIT_MSG_PREFIX = [Auto-gen]
102109

103110
###############################################################################
104111
# Functions
@@ -186,116 +193,112 @@ else
186193
all: gen-document gen-test gen-compatible-header bf16-all vector-crypto-all
187194
endif
188195

196+
default-all: gen-document gen-test
189197
bf16-all: gen-bf16-document gen-bf16-test
190198
vector-crypto-all: gen-vector-crypto-document gen-vector-crypto-test
191199

200+
# Document generation targets
192201
gen-document: non-overloaded-doc non-overloaded-docs overloaded-doc overloaded-docs
193202
gen-bf16-document: bf16-non-overloaded-doc bf16-non-overloaded-docs bf16-overloaded-doc bf16-overloaded-docs
194203
gen-vector-crypto-document: vector-crypto-non-overloaded-doc vector-crypto-non-overloaded-docs vector-crypto-overloaded-doc vector-crypto-overloaded-docs
204+
205+
# Test generation targets
195206
gen-test: non-overloaded-test overloaded-test gen-llvm-test gen-gnu-test
196207
gen-bf16-test: bf16-non-overloaded-test bf16-overloaded-test gen-bf16-llvm-test
197208
gen-vector-crypto-test: vector-crypto-non-overloaded-test vector-crypto-overloaded-test gen-vector-crypto-llvm-test
198-
gen-compatible-header: non-policy-compatible-header policy-compatible-header non-policy-overloaded-compatible-header policy-overloaded-compatible-header
209+
210+
# Toolchain-specific test targets
199211
gen-llvm-test: llvm-non-overloaded-test llvm-overloaded-test
200212
gen-bf16-llvm-test: bf16-llvm-non-overloaded-test bf16-llvm-overloaded-test
201213
gen-vector-crypto-llvm-test: vector-crypto-llvm-non-overloaded-test vector-crypto-llvm-overloaded-test
202214
gen-gnu-test: gnu-overloaded-test gnu-non-overloaded-test
203215

204-
# Generate all-in-one document for non-overloaded intrinsics
216+
# Generate compatible headers
217+
gen-compatible-header: non-policy-compatible-header policy-compatible-header non-policy-overloaded-compatible-header policy-overloaded-compatible-header
218+
219+
# Document generation rules - default variant
205220
non-overloaded-doc:
206-
$(call gen_doc_rule,$(DIR),intrinsic_funcs.adoc,,$(POLICY_DIR))
221+
$(call gen_doc_rule,$(DIR_default),intrinsic_funcs.adoc,$(FLAGS_default),$(POLICY_DIR_default))
207222

208-
# Generate grouped documents for non-overloaded intrinsics
209223
non-overloaded-docs:
210-
$(call gen_docs_rule,$(DIR),intrinsic_funcs,,$(POLICY_DIR))
224+
$(call gen_docs_rule,$(DIR_default),intrinsic_funcs,$(FLAGS_default),$(POLICY_DIR_default))
211225

212-
# Generate all-in-one document for overloaded intrinsics
213226
overloaded-doc:
214-
$(call gen_doc_rule,$(DIR),overloaded_intrinsic_funcs.adoc,,$(POLICY_DIR))
227+
$(call gen_doc_rule,$(DIR_default),overloaded_intrinsic_funcs.adoc,$(FLAGS_default),$(POLICY_DIR_default))
215228

216-
# Generate grouped documents for overloaded intrinsics
217229
overloaded-docs:
218-
$(call gen_docs_rule,$(DIR),overloaded_intrinsic_funcs,,$(POLICY_DIR))
230+
$(call gen_docs_rule,$(DIR_default),overloaded_intrinsic_funcs,$(FLAGS_default),$(POLICY_DIR_default))
231+
232+
# Document generation rules - bf16 variant
233+
bf16-non-overloaded-doc:
234+
$(call gen_doc_rule,$(DIR_bf16),intrinsic_funcs.adoc,$(FLAGS_bf16),$(POLICY_DIR_bf16))
235+
236+
bf16-non-overloaded-docs:
237+
$(call gen_docs_rule,$(DIR_bf16),intrinsic_funcs,$(FLAGS_bf16),$(POLICY_DIR_bf16))
238+
239+
bf16-overloaded-doc:
240+
$(call gen_doc_rule,$(DIR_bf16),overloaded_intrinsic_funcs.adoc,$(FLAGS_bf16),$(POLICY_DIR_bf16))
219241

220-
# Generate non-overloaded intrinsic testing C source files
242+
bf16-overloaded-docs:
243+
$(call gen_docs_rule,$(DIR_bf16),overloaded_intrinsic_funcs,$(FLAGS_bf16),$(POLICY_DIR_bf16))
244+
245+
# Document generation rules - vector-crypto variant
246+
vector-crypto-non-overloaded-doc:
247+
$(call gen_doc_rule,$(DIR_vector-crypto),intrinsic_funcs.adoc,$(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto))
248+
249+
vector-crypto-non-overloaded-docs:
250+
$(call gen_docs_rule,$(DIR_vector-crypto),intrinsic_funcs,$(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto))
251+
252+
vector-crypto-overloaded-doc:
253+
$(call gen_doc_rule,$(DIR_vector-crypto),overloaded_intrinsic_funcs.adoc,$(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto))
254+
255+
vector-crypto-overloaded-docs:
256+
$(call gen_docs_rule,$(DIR_vector-crypto),overloaded_intrinsic_funcs,$(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto))
257+
258+
# Test generation rules - default variant with different toolchains
221259
non-overloaded-test:
222-
$(call gen_test_rule,$(DIR)/api-testing,non-overloaded-test,--toolchain-type=unknown,$(POLICY_DIR)/api-testing)
260+
$(call gen_test_rule,$(DIR_default)/api-testing,non-overloaded-test,--toolchain-type=unknown $(FLAGS_default),$(POLICY_DIR_default)/api-testing)
223261

224-
# Generate overloaded intrinsic testing C source files
225262
overloaded-test:
226-
$(call gen_test_rule,$(DIR)/overloaded-api-testing,overloaded-test,--toolchain-type=unknown,$(POLICY_DIR)/overloaded-api-testing)
263+
$(call gen_test_rule,$(DIR_default)/overloaded-api-testing,overloaded-test,--toolchain-type=unknown $(FLAGS_default),$(POLICY_DIR_default)/overloaded-api-testing)
227264

228-
# Generate non-overloaded intrinsic testing C source files
229265
llvm-non-overloaded-test:
230-
$(call gen_test_rule,$(DIR)/llvm-api-tests,non-overloaded-test,--toolchain-type=llvm,$(POLICY_DIR)/llvm-api-tests)
266+
$(call gen_test_rule,$(DIR_default)/llvm-api-tests,non-overloaded-test,--toolchain-type=llvm $(FLAGS_default),$(POLICY_DIR_default)/llvm-api-tests)
231267

232-
# Generate overloaded intrinsic testing C source files
233268
llvm-overloaded-test:
234-
$(call gen_test_rule,$(DIR)/llvm-overloaded-tests,overloaded-test,--toolchain-type=llvm,$(POLICY_DIR)/llvm-overloaded-tests)
269+
$(call gen_test_rule,$(DIR_default)/llvm-overloaded-tests,overloaded-test,--toolchain-type=llvm $(FLAGS_default),$(POLICY_DIR_default)/llvm-overloaded-tests)
235270

236-
# Generate GNU non-overloaded intrinsic testing source files
237271
gnu-non-overloaded-test:
238-
$(call gen_test_rule,$(DIR)/gnu-api-tests,non-overloaded-test,--toolchain-type=gnu,$(POLICY_DIR)/gnu-api-tests)
272+
$(call gen_test_rule,$(DIR_default)/gnu-api-tests,non-overloaded-test,--toolchain-type=gnu $(FLAGS_default),$(POLICY_DIR_default)/gnu-api-tests)
239273

240-
# Generate GNU overloaded intrinsic testing source files
241274
gnu-overloaded-test:
242-
$(call gen_test_rule,$(DIR)/gnu-overloaded-tests,overloaded-test,--toolchain-type=gnu,$(POLICY_DIR)/gnu-overloaded-tests)
243-
244-
# BFloat16 documents
245-
bf16-non-overloaded-doc:
246-
$(call gen_doc_rule,$(BF16_DIR),intrinsic_funcs.adoc,--skip-default-inst --vendor-inst $(BF16_INST),$(BF16_POLICY_DIR))
275+
$(call gen_test_rule,$(DIR_default)/gnu-overloaded-tests,overloaded-test,--toolchain-type=gnu $(FLAGS_default),$(POLICY_DIR_default)/gnu-overloaded-tests)
247276

248-
bf16-non-overloaded-docs:
249-
$(call gen_docs_rule,$(BF16_DIR),intrinsic_funcs,--skip-default-inst --vendor-inst $(BF16_INST),$(BF16_POLICY_DIR))
250-
251-
bf16-overloaded-doc:
252-
$(call gen_doc_rule,$(BF16_DIR),overloaded_intrinsic_funcs.adoc,--skip-default-inst --vendor-inst $(BF16_INST),$(BF16_POLICY_DIR))
253-
254-
bf16-overloaded-docs:
255-
$(call gen_docs_rule,$(BF16_DIR),overloaded_intrinsic_funcs,--skip-default-inst --vendor-inst $(BF16_INST),$(BF16_POLICY_DIR))
256-
257-
# BFloat16 tests
258-
# Generate non-overloaded intrinsic testing C source files
277+
# Test generation rules - bf16 variant with different toolchains
259278
bf16-non-overloaded-test:
260-
$(call gen_test_rule,$(BF16_DIR)/api-testing,non-overloaded-test,--skip-default-inst --vendor-inst $(BF16_INST) --toolchain-type=unknown,$(BF16_POLICY_DIR)/api-testing)
279+
$(call gen_test_rule,$(DIR_bf16)/api-testing,non-overloaded-test,--toolchain-type=unknown $(FLAGS_bf16),$(POLICY_DIR_bf16)/api-testing)
261280

262-
# Generate overloaded intrinsic testing C source files
263281
bf16-overloaded-test:
264-
$(call gen_test_rule,$(BF16_DIR)/overloaded-api-testing,overloaded-test,--skip-default-inst --vendor-inst $(BF16_INST) --toolchain-type=unknown,$(BF16_POLICY_DIR)/overloaded-api-testing)
282+
$(call gen_test_rule,$(DIR_bf16)/overloaded-api-testing,overloaded-test,--toolchain-type=unknown $(FLAGS_bf16),$(POLICY_DIR_bf16)/overloaded-api-testing)
265283

266-
# Generate non-overloaded intrinsic testing C source files
267284
bf16-llvm-non-overloaded-test:
268-
$(call gen_test_rule,$(BF16_DIR)/llvm-api-tests,non-overloaded-test,--skip-default-inst --vendor-inst $(BF16_INST) --toolchain-type=llvm,$(BF16_POLICY_DIR)/llvm-api-tests)
285+
$(call gen_test_rule,$(DIR_bf16)/llvm-api-tests,non-overloaded-test,--toolchain-type=llvm $(FLAGS_bf16),$(POLICY_DIR_bf16)/llvm-api-tests)
269286

270-
# Generate overloaded intrinsic testing C source files
271287
bf16-llvm-overloaded-test:
272-
$(call gen_test_rule,$(BF16_DIR)/llvm-overloaded-tests,overloaded-test,--skip-default-inst --vendor-inst $(BF16_INST) --toolchain-type=llvm,$(BF16_POLICY_DIR)/llvm-overloaded-tests)
288+
$(call gen_test_rule,$(DIR_bf16)/llvm-overloaded-tests,overloaded-test,--toolchain-type=llvm $(FLAGS_bf16),$(POLICY_DIR_bf16)/llvm-overloaded-tests)
273289

274-
# Vector crypto documents
275-
vector-crypto-non-overloaded-doc:
276-
$(call gen_doc_rule,$(VECTOR_CRYPTO_DIR),intrinsic_funcs.adoc,--gen-vector-crypto,$(VECTOR_CRYPTO_POLICY_DIR))
277-
278-
vector-crypto-non-overloaded-docs:
279-
$(call gen_docs_rule,$(VECTOR_CRYPTO_DIR),intrinsic_funcs,--gen-vector-crypto,$(VECTOR_CRYPTO_POLICY_DIR))
280-
281-
vector-crypto-overloaded-doc:
282-
$(call gen_doc_rule,$(VECTOR_CRYPTO_DIR),overloaded_intrinsic_funcs.adoc,--gen-vector-crypto,$(VECTOR_CRYPTO_POLICY_DIR))
283-
284-
vector-crypto-overloaded-docs:
285-
$(call gen_docs_rule,$(VECTOR_CRYPTO_DIR),overloaded_intrinsic_funcs,--gen-vector-crypto,$(VECTOR_CRYPTO_POLICY_DIR))
286-
287-
# Vector-crypto tests
290+
# Test generation rules - vector-crypto variant with different toolchains
288291
vector-crypto-non-overloaded-test:
289-
$(call gen_test_rule,$(VECTOR_CRYPTO_DIR)/api-testing,non-overloaded-test,--gen-vector-crypto --toolchain-type=unknown, $(VECTOR_CRYPTO_POLICY_DIR)/api-testing)
292+
$(call gen_test_rule,$(DIR_vector-crypto)/api-testing,non-overloaded-test,--toolchain-type=unknown $(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto)/api-testing)
290293

291294
vector-crypto-overloaded-test:
292-
$(call gen_test_rule,$(VECTOR_CRYPTO_DIR)/overloaded-api-testing,overloaded-test,--gen-vector-crypto --toolchain-type=unknown, $(VECTOR_CRYPTO_POLICY_DIR)/overloaded-api-testing)
295+
$(call gen_test_rule,$(DIR_vector-crypto)/overloaded-api-testing,overloaded-test,--toolchain-type=unknown $(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto)/overloaded-api-testing)
293296

294297
vector-crypto-llvm-non-overloaded-test:
295-
$(call gen_test_rule,$(VECTOR_CRYPTO_DIR)/llvm-api-tests,non-overloaded-test,--gen-vector-crypto --toolchain-type=llvm,$(VECTOR_CRYPTO_POLICY_DIR)/llvm-api-tests)
298+
$(call gen_test_rule,$(DIR_vector-crypto)/llvm-api-tests,non-overloaded-test,--toolchain-type=llvm $(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto)/llvm-api-tests)
296299

297300
vector-crypto-llvm-overloaded-test:
298-
$(call gen_test_rule,$(VECTOR_CRYPTO_DIR)/llvm-overloaded-tests,overloaded-test,--gen-vector-crypto --toolchain-type=llvm,$(VECTOR_CRYPTO_POLICY_DIR)/llvm-overloaded-tests)
301+
$(call gen_test_rule,$(DIR_vector-crypto)/llvm-overloaded-tests,overloaded-test,--toolchain-type=llvm $(FLAGS_vector-crypto),$(POLICY_DIR_vector-crypto)/llvm-overloaded-tests)
299302

300303
###############################################################################
301304

@@ -325,12 +328,12 @@ gen-all:
325328
rm -rf ${DIR}
326329
make all OUTPUT_DIR=${OUTPUT_DIR}
327330

328-
# Define common variables
329-
TYPES = default bf16 vector-crypto
330-
DIR_default = ${DIR}
331-
DIR_bf16 = ${BF16_DIR}
332-
DIR_vector-crypto = ${VECTOR_CRYPTO_DIR}
333-
COMMIT_MSG_PREFIX = [Auto-gen]
331+
###############################################################################
332+
# Auto-commit re-generated Document / Test Targets
333+
###############################################################################
334+
git-commit-all: git-commit-default-all
335+
git-commit-autogen-doc: git-commit-autogen-default-doc
336+
git-commit-autogen-test: git-commit-autogen-default-test
334337

335338
# Generic update and commit target for docs
336339
git-commit-autogen-%-doc:
@@ -359,16 +362,11 @@ git-commit-%-all:
359362
make git-commit-autogen-$(TYPE_PREFIX)doc OUTPUT_DIR=${OUTPUT_DIR}
360363
make git-commit-autogen-$(TYPE_PREFIX)test OUTPUT_DIR=${OUTPUT_DIR}
361364

362-
# Provide backward compatibility aliases
363-
git-commit-all: git-commit-default-all
364-
git-commit-autogen-doc: git-commit-autogen-default-doc
365-
git-commit-autogen-test: git-commit-autogen-default-test
366-
367-
# Update and commit compatible headers (kept as-is since it doesn't follow the pattern)
365+
# Update and commit compatible headers
368366
git-commit-autogen-compatible-header:
369367
make gen-compatible-header
370368
git add $(DIR)/*
371-
git commit -m "$(COMMIT_MSG_PREFIX) Update tests under ${OUTPUT_DIR}. (make git-commit-autogen-compatible-header)"
369+
git commit -m "$(COMMIT_MSG_PREFIX) Update compatible header under ${OUTPUT_DIR}. (make $@)"
372370

373371
# Runs diff with auto-generated, requires ${TEST_DIR} to be provided.
374372
GOLDEN_DIR = ${DIR}

0 commit comments

Comments
 (0)