diff options
author | Mike Pall <mike> | 2023-08-30 01:10:52 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2023-08-30 01:10:52 +0200 |
commit | 41fb94defa8f830ce69a8122b03f6ac3216d392a (patch) | |
tree | 0c66d794528b585a138f4aea5e598f1d0bbcfd4e /src/lj_target.h | |
parent | 2f6c451ce8db5b5bc88126c9856e15f25fd5beae (diff) | |
download | luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.tar.gz luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.tar.bz2 luajit-41fb94defa8f830ce69a8122b03f6ac3216d392a.zip |
Add randomized register allocation for fuzz testing.
This must be explicitly enabled with: -DLUAJIT_RANDOM_RA
Thanks to Peter Cawley. #1062
Diffstat (limited to 'src/lj_target.h')
-rw-r--r-- | src/lj_target.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lj_target.h b/src/lj_target.h index 2f4d21c1..09d19bd9 100644 --- a/src/lj_target.h +++ b/src/lj_target.h | |||
@@ -57,8 +57,10 @@ typedef uint32_t RegSP; | |||
57 | */ | 57 | */ |
58 | #if LJ_TARGET_PPC || LJ_TARGET_MIPS || LJ_TARGET_ARM64 | 58 | #if LJ_TARGET_PPC || LJ_TARGET_MIPS || LJ_TARGET_ARM64 |
59 | typedef uint64_t RegSet; | 59 | typedef uint64_t RegSet; |
60 | #define RSET_BITS 6 | ||
60 | #else | 61 | #else |
61 | typedef uint32_t RegSet; | 62 | typedef uint32_t RegSet; |
63 | #define RSET_BITS 5 | ||
62 | #endif | 64 | #endif |
63 | 65 | ||
64 | #define RID2RSET(r) (((RegSet)1) << (r)) | 66 | #define RID2RSET(r) (((RegSet)1) << (r)) |
@@ -70,11 +72,11 @@ typedef uint32_t RegSet; | |||
70 | #define rset_clear(rs, r) (rs &= ~RID2RSET(r)) | 72 | #define rset_clear(rs, r) (rs &= ~RID2RSET(r)) |
71 | #define rset_exclude(rs, r) (rs & ~RID2RSET(r)) | 73 | #define rset_exclude(rs, r) (rs & ~RID2RSET(r)) |
72 | #if LJ_TARGET_PPC || LJ_TARGET_MIPS || LJ_TARGET_ARM64 | 74 | #if LJ_TARGET_PPC || LJ_TARGET_MIPS || LJ_TARGET_ARM64 |
73 | #define rset_picktop(rs) ((Reg)(__builtin_clzll(rs)^63)) | 75 | #define rset_picktop_(rs) ((Reg)(__builtin_clzll(rs)^63)) |
74 | #define rset_pickbot(rs) ((Reg)__builtin_ctzll(rs)) | 76 | #define rset_pickbot_(rs) ((Reg)__builtin_ctzll(rs)) |
75 | #else | 77 | #else |
76 | #define rset_picktop(rs) ((Reg)lj_fls(rs)) | 78 | #define rset_picktop_(rs) ((Reg)lj_fls(rs)) |
77 | #define rset_pickbot(rs) ((Reg)lj_ffs(rs)) | 79 | #define rset_pickbot_(rs) ((Reg)lj_ffs(rs)) |
78 | #endif | 80 | #endif |
79 | 81 | ||
80 | /* -- Register allocation cost -------------------------------------------- */ | 82 | /* -- Register allocation cost -------------------------------------------- */ |