Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ACFL23 Instruction Support #425

Open
wants to merge 38 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
9a9ca3f
Added LDRSWroW, LDAXRB, stlxrb insts
JosephMoore25 May 1, 2024
9adaeee
Magic OMP affinity fix (thanks Jack)
JosephMoore25 May 1, 2024
70f0387
Added Cpy (Simd&FP scalar) instruction and alias, with tests for each…
JosephMoore25 May 20, 2024
1873378
Fixed OMP getaffinity syscall for new fix. Fixed tests for CPY_ZPmV i…
JosephMoore25 May 20, 2024
3518327
Added more instructions so stream+sve compiles with armclang23. Some …
JosephMoore25 May 21, 2024
81889ab
Added a couple more instructions, working towards minibude armclang23
JosephMoore25 May 22, 2024
c6c6000
Added ClastB instructions with tests that (finally) pass. More tests …
JosephMoore25 May 30, 2024
240ae68
Cleaned up clastb tests and added S,H,B cases
JosephMoore25 May 30, 2024
5e79850
Dirty WIP for pnext instruction
JosephMoore25 May 30, 2024
f8ea7f2
Added pnext inst along with tests
JosephMoore25 Jun 3, 2024
5992cd1
Added NZCV changes to pnext and updated tests
JosephMoore25 Jun 3, 2024
49dbbbe
Added weird FP Trig SVE insts (untested). Minibude now works with arm…
Jun 13, 2024
2716a71
Supported minisweep
JosephMoore25 Jun 18, 2024
8c56ee5
Added instructions to support CloverLeaf armclang23. Numerical error :O
JosephMoore25 Jun 19, 2024
32d0d6c
Added a test to start investigating what's wrong with cloverleaf
JosephMoore25 Jun 19, 2024
2bb065b
Added test for LDRSWroW
JosephMoore25 Jun 20, 2024
b40d011
Added mechanism to detect ROB loops. Also added FDIVv4f32 inst
JosephMoore25 Aug 22, 2024
14cc2e1
Clang format
JosephMoore25 Aug 28, 2024
bd3bfc8
Fixed a couple build issues/warnings
JosephMoore25 Aug 29, 2024
3e45c86
Added uaddlv test, as well as rolled back a ROB fix
JosephMoore25 Aug 30, 2024
96034a5
Added tests for cmphs and a couple other insts. Fixed a couple bugs t…
JosephMoore25 Aug 30, 2024
466fc3d
Added tests for FDIV and LASTB. Fixed LASTB logic.
JosephMoore25 Sep 9, 2024
0aa2584
Finally got smax tests
JosephMoore25 Sep 10, 2024
75f0d9f
Also added smin tests
JosephMoore25 Sep 10, 2024
02386a3
Added tests for umaxv and whilels
JosephMoore25 Sep 10, 2024
4712ea4
Added (or fixed) tests for pfirst and splice
JosephMoore25 Sep 11, 2024
c73b2d2
Added tests for ftsmul and fixed some broken logic
JosephMoore25 Sep 11, 2024
6fe35ec
Added comment to ftsmul test
JosephMoore25 Sep 11, 2024
f22be5a
Added FTSSEL tests. Nasty bugger....
JosephMoore25 Sep 17, 2024
dad0467
Finally got ftmad sorted. Had issues with 32 bit for some reason
JosephMoore25 Sep 20, 2024
5a611d3
Added LDAXRB and STLXR insts. STLXR took some fix in decode to flag a…
JosephMoore25 Sep 20, 2024
a58409b
Added test for ORN. Finished all base tests
JosephMoore25 Sep 20, 2024
0ffcd51
Added group tests to all added insts
JosephMoore25 Dec 10, 2024
4361eab
Cleaned up infinite ROB check and OpenMP bug
JosephMoore25 Dec 16, 2024
6345f08
Responded to PR comments. Cleaned up a lot of helper functions and fi…
JosephMoore25 Dec 18, 2024
6119ade
Responded to more comments
JosephMoore25 Dec 18, 2024
6da7f5c
Updated naming for confusing lastb helper
JosephMoore25 Dec 18, 2024
c9f708b
Fixed issues arising from merge conflicts on Capstone Update branch. …
JosephMoore25 Dec 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/include/simeng/arch/aarch64/helpers/neon.hh
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,39 @@ RegisterValue vecLogicOp_3vecs(srcValContainer& sourceValues,
return {out, 256};
}

/** Helper function for NEON instructions with the format `uaddlv rd, Vn.T`.
* T represents the type of the destination register (e.g. for h0, T =
* uint32_t).
* U represents the type of the sourceValues[0] (e.g. for v0.8b, U =
* uint8_t)
* I represents the number of elements in the output array to be updated (e.g.
* for vd.8b I = 8).
* Returns correctly formatted RegisterValue. */
template <typename T, typename U, int I>
FinnWilkinson marked this conversation as resolved.
Show resolved Hide resolved
RegisterValue vecAddlv(srcValContainer& sourceValues) {
const U* n = sourceValues[0].getAsVector<U>();
T out = 0;
for (int i = 0; i < I; i++) {
out += n[i];
}
return {out, 256};
}

/** Helper function for NEON instructions with the format `umaxv rd, Vn.T`.
* T represents the type of sourceValues (e.g. for vn.s, T = uint32_t).
* I represents the number of elements in the output array to be updated (e.g.
* for vd.8b I = 8).
* Returns correctly formatted RegisterValue. */
template <typename T, int I>
RegisterValue vecUMaxV(srcValContainer& sourceValues) {
const T* n = sourceValues[0].getAsVector<T>();
T out = n[0];
for (int i = 1; i < I; i++) {
out = std::max(n[i], out);
}
return {out, 256};
}

/** Helper function for NEON instructions with the format `umaxp vd, vn, vm`.
* T represents the type of sourceValues (e.g. for vn.2d, T = uint64_t).
* I represents the number of elements in the output array to be updated (e.g.
Expand Down
Loading
Loading