Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
0851aee
[gen] Replace diycross regressions with focused diyone7 tests
ShaleXIONG May 26, 2026
df70f12
[gen] introduce structured AArch64 access atoms
ShaleXIONG Jul 2, 2026
c134488
[gen] Add structured AArch64 atom comparison
ShaleXIONG Jul 14, 2026
457d8a6
[gen] Enumerate AArch64 atoms with structured folds
ShaleXIONG Jul 14, 2026
fa551a6
[gen] Retire legacy AArch64 atom merging
ShaleXIONG Jul 14, 2026
79e0a08
[gen] Delegate AArch64 atom printing to structured atoms
ShaleXIONG Jul 14, 2026
15ab816
[gen] Delegate AArch64 mixed-size handling to structured atoms
ShaleXIONG Jul 14, 2026
a0c7664
[gen] Delegate AArch64 RMW validation to structured atoms
ShaleXIONG Jul 14, 2026
da1927e
[gen] Delegate `is_ifetch` and `is_pair` to structured atoms
ShaleXIONG Jul 14, 2026
2c7749b
[gen] Delegate `as_integers` to structured atoms
ShaleXIONG Jul 14, 2026
76b0269
[gen] Delegate `worth_final` to structured atoms.
ShaleXIONG Jul 14, 2026
b8351fb
[gen] Delegate `get_machine_feature` to structured atoms
ShaleXIONG Jul 14, 2026
1624eb9
[gen] Define AArch64 atom defaults through structured atoms
ShaleXIONG Jul 14, 2026
f6f6640
[gen] Remove unused atom printing hook
ShaleXIONG Jul 14, 2026
bfb86a4
[gen] Use structured atoms for ordinary AArch64 loads
ShaleXIONG Jul 30, 2026
6817cdd
[gen] Use structured atoms for ordinary AArch64 accesses
ShaleXIONG Jul 30, 2026
46546f8
[gen] Use structured atoms for data-dependent stores
ShaleXIONG Jul 30, 2026
4c31a18
[gen] Use structured atoms for address-dependent accesses
ShaleXIONG Jul 30, 2026
5ef3fa2
[gen] Use structured atoms for Morello metadata accesses
ShaleXIONG Jul 30, 2026
89d8fe2
[gen] Use structured atoms for MemTag accesses
ShaleXIONG Jul 31, 2026
830536a
[gen] Use structured atoms for pair accesses
ShaleXIONG Jul 31, 2026
b913d5a
[gen] Use structured atoms for non-dependent PTE accesses
ShaleXIONG Jul 31, 2026
140002c
[gen] Use structured atoms for address-dependent PTE accesses
ShaleXIONG Jul 31, 2026
eaaa86a
[gen] Use structured atoms for data-dependent PTE stores
ShaleXIONG Jul 31, 2026
02863c2
[gen] Use structured atoms for non-dependent vector accesses
ShaleXIONG Jul 31, 2026
8ca13cd
[gen] Use structured atoms for dependent vector accesses
ShaleXIONG Jul 31, 2026
d66bdc7
[gen] Use structured atoms for instruction accesses
ShaleXIONG Jul 31, 2026
2e327bc
[gen] Use structured atoms in AArch64 RMW compilation
ShaleXIONG Jul 30, 2026
44c2f6e
[gen] Finish structured atom migration in AArch64 access compilation
ShaleXIONG Jul 31, 2026
b9b30bc
[gen] Use structured atoms to determine dependency width
ShaleXIONG Jul 31, 2026
3c24f25
[gen] Use structured atoms when collecting AArch64 architecture info
ShaleXIONG Jul 31, 2026
e972ea8
[gen] Use structured atoms when tagging AArch64 locations
ShaleXIONG Jul 31, 2026
b8e2b51
[gen] Make structured atoms canonical for AArch64
ShaleXIONG Jul 31, 2026
3cdd5bb
[gen] Remove redundant AArch64 PTE atom variants
ShaleXIONG Jul 31, 2026
fc349e3
[gen] Simplify AArch64 access compilation
ShaleXIONG Aug 20, 2026
e588116
[gen] Replace AArch64 compilation assertions with diagnostics
ShaleXIONG Aug 20, 2026
6dd9f0b
[gen] Remove redundant diyone output match
ShaleXIONG Aug 20, 2026
fde385f
[gen] Normalize plain atoms in AArch64 data compilation
ShaleXIONG Aug 20, 2026
f99309a
[gen] Diagnose unsupported dependencies and RMWs on code locations
ShaleXIONG Aug 21, 2026
dd8f9d1
[gen] update error message for standalone `I` annotation.
ShaleXIONG Aug 21, 2026
481834a
[gen] Compile diyone directive regexp once
ShaleXIONG Sep 2, 2026
279afa7
[gen] Improve invalid mixed-size annotation errors
ShaleXIONG Sep 2, 2026
cde50d0
[gen] Improve invalid LxSx annotation error message
ShaleXIONG Sep 2, 2026
77e39c0
[gen] Report incompatible adjacent annotations
ShaleXIONG Sep 2, 2026
00e7ddf
[gen] intoduce pp_access_order to simpify pretty-print.
ShaleXIONG Sep 8, 2026
d874624
[gen] Remove a duplicated arm in the matching in compile.
ShaleXIONG Sep 8, 2026
2bb5613
[gen] minor test clean up in `diy-basic-check.t`
ShaleXIONG Sep 9, 2026
adc2a95
[gen] Print round-trippable Orig cycle descriptions
ShaleXIONG Sep 9, 2026
dec290a
[gen] Centralise dependency implementations
ShaleXIONG Aug 6, 2026
625656f
[gen] Move the the dependent edges of AArch64 into `dep.mli`.
ShaleXIONG Aug 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
223 changes: 18 additions & 205 deletions Makefile
Comment thread
ShaleXIONG marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@ REGRESSION_TEST_MODE = test
DUNE_PROFILE = release

DIY = _build/install/default/bin/diy7
DIYONE = _build/install/default/bin/diyone7
DIYCROSS = _build/install/default/bin/diycross7
DIYMICROENUM = _build/install/default/bin/diymicroenum7
HERD = _build/install/default/bin/herd7
LITMUS = _build/install/default/bin/litmus7
LITMUS_LIB_DIR = $(PWD)/litmus/libdir
DIY_REGRESSION_TEST = _build/default/internal/diy_regression_test.exe
DIYONE_TEST = _build/default/internal/diyone_test.exe
HERD_REGRESSION_TEST = _build/default/internal/herd_regression_test.exe
HERD_DIYCROSS_REGRESSION_TEST = _build/default/internal/herd_diycross_regression_test.exe
HERD_CATALOGUE_REGRESSION_TEST = _build/default/internal/herd_catalogue_regression_test.exe
Expand Down Expand Up @@ -343,8 +345,7 @@ test-all-asl:: test.herd-asl.cata.aarch64-VMSA
### Diy tests, includes
### - A `diyone7` generated syntax check
### - A `diy7` with `cycleonly` instance checks the cycle generations
### - Several `diycross7` + `herd7` instances, check if the generated litmus tests
### are equivalent based on `herd7` result.
### - Individual `diyone7` generation tests for each supported variant
diy-test:: | build
diy-test:: diyone-basic-test
diyone-basic-test:
Expand Down Expand Up @@ -394,218 +395,30 @@ diy-ifetch-cycleonly::
$(REGRESSION_TEST_MODE)
@ echo "diy7 ifetch configuration test: OK"

LDS:="Amo.Cas,Amo.LdAdd,Amo.LdClr,Amo.LdEor,Amo.LdSet"
LDSPLUS:="LxSx",$(LDS)

diy-test:: diy-test-aarch64
diy-test-aarch64:
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64 \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg 'A,L,P' \
-diycross-arg 'Pod**,Fenced**,DSB.SYd**,ISBd**,[Amo.Cas,Pod**],[Amo.Swp,Pod**],[Amo.StAdd,Pod**],[LxSx,Pod**]' \
-diycross-arg 'Rfe,Fre,Coe' \
-diycross-arg 'DpAddrdR,DpAddrdW,DpDatadW,CtrldR,CtrldW,DpAddrCseldR,DpAddrCseldW,DpDataCseldW,DpCtrlCseldR,DpCtrlCseldW,[DpCtrldR,ISB],[DpCtrldW,ISB]' \
-diycross-arg 'Rfe,Fre,Coe,Hat' \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64 diycross7 tests: OK"

diy-test:: diy-test-mixed
diy-test-mixed::
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-j $(J) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64.mixed \
-conf ./gen/tests/AArch64.mixed/mixed.cfg \
-diycross-arg -ua \
-diycross-arg 0 \
-diycross-arg -obs \
-diycross-arg oo \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg -variant \
-diycross-arg mixed \
-diycross-arg -hexa \
-diycross-arg Hat \
-diycross-arg h0 \
-diycross-arg $(LDSPLUS) \
-diycross-arg h0 \
-diycross-arg Rfi \
-diycross-arg w0 \
-diycross-arg Amo.StAdd \
-diycross-arg w0 \
-diycross-arg Rfi \
-diycross-arg h2 \
-diycross-arg $(LDS) \
-diycross-arg h2 \
-diycross-arg PodWR \
-diycross-arg Hat \
-diycross-arg w0 \
-diycross-arg Amo.LdSet \
-diycross-arg w0 \
-diycross-arg PodWR \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64.mixed diycross7 tests: OK"

diy-test-mixed::
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-j $(J) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64.mixed.strict \
-conf ./gen/tests/AArch64.mixed.strict/mixed.cfg \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg -ua \
-diycross-arg 0 \
-diycross-arg -variant \
-diycross-arg mixed,MixedStrictOverlap \
-diycross-arg -hexa \
-diycross-arg h0,h2,w0 \
-diycross-arg Amo.CasAP,LxSxAP \
-diycross-arg h0,h2,w0 \
-diycross-arg PodWR \
-diycross-arg w0,h0 \
-diycross-arg Fre \
-diycross-arg w0,h2 \
-diycross-arg FencedWW \
-diycross-arg w0,h0,h2 \
-diycross-arg Rfe \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64.mixed.strict diycross7 tests: OK"

diy-test-mixed:: v32 v64

v32:
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-j $(J) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64.mixed.v32 \
-conf ./gen/tests/AArch64.mixed.strict/mixed.cfg \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg -variant \
-diycross-arg mixed \
-diycross-arg -hexa \
-diycross-arg PodWW \
-diycross-arg RfeLA \
-diycross-arg h0,h2,w0 \
-diycross-arg DpDatadW,DpAddrdR,DpAddrdW \
-diycross-arg A,P,L \
-diycross-arg h0,h2,w0 \
-diycross-arg Coe,Fre \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64.mixed.v32 diycross7 tests: OK"

v64:
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-j $(J) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64.mixed.v64 \
-conf ./gen/tests/AArch64.mixed.strict/mixed.cfg \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg -variant \
-diycross-arg mixed \
-diycross-arg -hexa \
-diycross-arg -type \
-diycross-arg uint64_t \
-diycross-arg PodWW \
-diycross-arg RfeLA \
-diycross-arg w0,w4,q0 \
-diycross-arg DpDatadW,DpAddrdR,DpAddrdW \
-diycross-arg A,P,L \
-diycross-arg w0,w4,q0 \
-diycross-arg Coe,Fre \
$(DIYONE_TEST) \
-diyone-path $(DIYONE) \
./gen/tests/AArch64 \
./gen/tests/AArch64.mixed \
./gen/tests/AArch64.MTE \
./gen/tests/AArch64.vmsa \
./gen/tests/AArch64.ifetch \
./gen/tests/AArch64.morello \
./gen/tests/AArch64.vector \
./gen/tests/AArch64.store \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64.mixed.v64 diycross7 tests: OK"

diy-test:: diy-store-test
diy-store-test:
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64.store \
-diycross-arg -obs \
-diycross-arg four \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg 'Fenced**' \
-diycross-arg 'Rfe,Fre,Coe' \
-diycross-arg 'DpAddrdR,DpDatadW' \
-diycross-arg 'Pos**' \
-diycross-arg 'Store' \
-diycross-arg 'Rfe,Fre,Coe' \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64 diycross7.store tests: OK"

diy-test:: diy-test-mte
diy-test-mte::
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-j $(J) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/AArch64.MTE \
-conf ./gen/tests/AArch64.MTE/MTE.cfg \
-diycross-arg -arch \
-diycross-arg AArch64 \
-diycross-arg -variant \
-diycross-arg memtag \
-diycross-arg -variant \
-diycross-arg async \
-diycross-arg DMB.SYd*W \
-diycross-arg T,P \
-diycross-arg Rfe \
-diycross-arg A \
-diycross-arg Amo.LdAdd \
-diycross-arg L \
-diycross-arg PodW* \
-diycross-arg T,P \
-diycross-arg Coe,Rfe,Fre \
-diycross-arg T,P \
$(REGRESSION_TEST_MODE)
@ echo "herd7 AArch64.MTE diycross7 tests: OK"
@ echo "diyone7 AArch64 tests: OK"

diy-test:: diy-test-C
diy-test-C:
@ echo
$(HERD_DIYCROSS_REGRESSION_TEST) \
-j $(J) \
-herd-path $(HERD) \
-diycross-path $(DIYCROSS) \
-libdir-path ./herd/libdir \
-expected-dir ./gen/tests/C \
-conf ./gen/tests/C/C.cfg \
-diycross-arg -arch \
-diycross-arg C \
-diycross-arg [Rlx,Coe,Rlx],[Rlx,Rfe,Rlx],[Rlx,Fre,Rlx],[Rlx,Hat,Rlx] \
-diycross-arg PosRW,Fetch.Add,Exch \
-diycross-arg Rlx \
-diycross-arg PodW* \
-diycross-arg [Rlx,Coe,Rlx],[Rlx,Rfe,Rlx],[Rlx,Fre,Rlx] \
-diycross-arg Pod**,[Fetch.Add,Rlx,PodW*] \
$(DIYONE_TEST) \
-diyone-path $(DIYONE) \
./gen/tests/C \
$(REGRESSION_TEST_MODE)
@ echo "herd7 C diycross7 tests: OK"
@ echo "diyone7 C tests: OK"

### Diymicro test
diymicro-test:: | build
Expand Down
Loading
Loading