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

i#6662 regdeps ISA: virtual registers #6783

Merged
merged 22 commits into from
Apr 24, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
bc51495
i#6662 regdeps ISA: virtual registers
edeiana Apr 18, 2024
8a39c9b
Merge branch 'master' into i6662-virtual-regs
edeiana Apr 18, 2024
6702851
Fixed build error for AARCH64.
Apr 18, 2024
20eb2a2
Fixed define. From X64 (always defined apparently?) to X86_64.
Apr 18, 2024
aba1fc3
Fixed formatting.
edeiana Apr 18, 2024
5b1f61d
Merge branch 'master' into i6662-virtual-regs
edeiana Apr 18, 2024
398900c
Addressed PR feedback.
edeiana Apr 19, 2024
009cf26
Updated API names in doc.
edeiana Apr 19, 2024
07efe1f
Removed unused headers.
edeiana Apr 19, 2024
acac875
Improved readability of d_r_reg_id_to_virtual[] for all arches.
edeiana Apr 20, 2024
b639a71
Improving readability following dr_reg_fixer[].
edeiana Apr 20, 2024
15aefbd
Making dr_reg_to_virtual() private (now called: d_r_reg_to_virtual()).
edeiana Apr 22, 2024
66d7cbd
Removed dr_get_virtual_register_name() API.
edeiana Apr 22, 2024
7464642
Improved explanation of why we need to set the size for virtual regs.
edeiana Apr 22, 2024
e75d683
Fixed grammar.
edeiana Apr 22, 2024
8717389
Added check that DR_REG_V enums are never equal to
edeiana Apr 23, 2024
c4d2b56
Fixed stale comment.
edeiana Apr 23, 2024
967afe6
Fixed comment, removed unnecessary header.
edeiana Apr 23, 2024
42af79e
Addressed code-review feedback on better comments.
edeiana Apr 24, 2024
4832ef1
Merge branch 'master' into i6662-virtual-regs
edeiana Apr 24, 2024
e04625e
We need a doxygen comment for DR_REG_V0 in order to
edeiana Apr 24, 2024
7e3fbea
Fixed return value bug in tests.
edeiana Apr 24, 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
1 change: 0 additions & 1 deletion api/docs/release.dox
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,6 @@ Further non-compatibility-affecting changes include:
- Added instr_convert_to_isa_regdeps() API that converts an #instr_t from a real ISA
(e.g., #DR_ISA_AMD64) to the #DR_ISA_REGDEPS synthetic ISA.

edeiana marked this conversation as resolved.
Show resolved Hide resolved

**************************************************
<hr>

Expand Down
1 change: 1 addition & 0 deletions core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ set(DECODER_SRCS
ir/${ARCH_NAME}/decode.c
ir/encode_shared.c
ir/${ARCH_NAME}/encode.c
ir/isa_regdeps/encoding_common.c
ir/isa_regdeps/encode.c
ir/isa_regdeps/decode.c
ir/disassemble_shared.c
Expand Down
271 changes: 271 additions & 0 deletions core/arch/arch.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#include "decode.h"
#include "decode_fast.h"
#include "../fcache.h"
#include "opnd_api.h"
#include "proc.h"
#include "instrument.h"

Expand Down Expand Up @@ -676,10 +677,280 @@ far_ibl_set_targets(ibl_code_t src_ibl[], ibl_code_t tgt_ibl[])
}
#endif

/* We can't compare DR_REG_V and DR_REG_ enum values directly because they belong to
* different enums and we build with -Werror=enum-compare. So we use scopes and the
* temporary variable reg_virtual.
*/
#define ASSERT_NOT_NULL_OR_INVALID(x) \
do { \
reg_id_t reg_virtual = x; \
ASSERT((reg_virtual != DR_REG_NULL) && (reg_virtual != DR_REG_INVALID)); \
} while (0);

/* We can't loop through DR_REG_V enums because we have a gap for value 187
* (== DR_REG_INVALID for x86), so we unroll the loop and compare every enum manually.
*/
#define CHECK_VIRTUAL_REGISTER_IDS \
edeiana marked this conversation as resolved.
Show resolved Hide resolved
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V0) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V1) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V2) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V3) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V4) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V5) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V6) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V7) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V8) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V9) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V10) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V11) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V12) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V13) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V14) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V15) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V16) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V17) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V18) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V19) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V20) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V21) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V22) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V23) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V24) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V25) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V26) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V27) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V28) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V29) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V30) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V31) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V32) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V33) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V34) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V35) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V36) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V37) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V38) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V39) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V40) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V41) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V42) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V43) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V44) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V45) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V46) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V47) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V48) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V49) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V50) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V51) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V52) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V53) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V54) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V55) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V56) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V57) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V58) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V59) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V60) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V61) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V62) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V63) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V64) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V65) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V66) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V67) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V68) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V69) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V70) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V71) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V72) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V73) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V74) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V75) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V76) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V77) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V78) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V79) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V80) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V81) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V82) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V83) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V84) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V85) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V86) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V87) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V88) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V89) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V90) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V91) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V92) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V93) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V94) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V95) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V96) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V97) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V98) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V99) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V100) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V101) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V102) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V103) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V104) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V105) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V106) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V107) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V108) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V109) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V110) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V111) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V112) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V113) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V114) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V115) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V116) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V117) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V118) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V119) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V120) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V121) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V122) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V123) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V124) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V125) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V126) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V127) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V128) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V129) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V130) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V131) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V132) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V133) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V134) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V135) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V136) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V137) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V138) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V139) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V140) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V141) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V142) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V143) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V144) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V145) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V146) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V147) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V148) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V149) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V150) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V151) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V152) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V153) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V154) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V155) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V156) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V157) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V158) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V159) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V160) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V161) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V162) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V163) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V164) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V165) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V166) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V167) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V168) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V169) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V170) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V171) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V172) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V173) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V174) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V175) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V176) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V177) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V178) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V179) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V180) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V181) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V182) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V183) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V184) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V185) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V186) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V187) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V188) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V189) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V190) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V191) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V192) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V193) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V194) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V195) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V196) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V197) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V198) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V199) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V200) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V201) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V202) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V203) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V204) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V205) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V206) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V207) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V208) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V209) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V210) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V211) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V212) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V213) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V214) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V215) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V216) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V217) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V218) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V219) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V220) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V221) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V222) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V223) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V224) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V225) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V226) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V227) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V228) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V229) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V230) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V231) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V232) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V233) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V234) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V235) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V236) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V237) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V238) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V239) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V240) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V241) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V242) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V243) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V244) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V245) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V246) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V247) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V248) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V249) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V250) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V251) \
ASSERT_NOT_NULL_OR_INVALID(DR_REG_V252)

/* arch-specific initializations */

void
d_r_arch_init(void)
{
DOCHECK(1, { CHECK_VIRTUAL_REGISTER_IDS; });
ASSERT(sizeof(opnd_t) == EXPECTED_SIZEOF_OPND);
IF_X86(ASSERT(CHECK_TRUNCATE_TYPE_byte(OPSZ_LAST)));
/* This ensures that DR_REG_ enums that may be used as opnd_size_t fit its size.
Expand Down
Loading
Loading