Skip to content

Commit

Permalink
Addressed PR feedback.
Browse files Browse the repository at this point in the history
  • Loading branch information
edeiana committed Apr 19, 2024
1 parent 5b1f61d commit 398900c
Show file tree
Hide file tree
Showing 12 changed files with 493 additions and 566 deletions.
92 changes: 45 additions & 47 deletions core/ir/aarch64/encode.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,76 +201,74 @@ const reg_id_t dr_reg_fixer[] = { REG_NULL,

/* Maps containing-registers to their DR_ISA_REGDEPS virtual-register.
* Same size as dr_reg_fixer[], keep them synched.
* Note: DR_REG_INVALID (== DR_REG_V1 == 1) has been excluded to avoid failures on opnd_t
* operations.
*/
const reg_id_t dr_reg_virtual[] = {
DR_REG_V0, DR_REG_V0, DR_REG_V2, DR_REG_V3, DR_REG_V4, DR_REG_V5,
DR_REG_V6, DR_REG_V7, DR_REG_V8, DR_REG_V9, DR_REG_V10, DR_REG_V11,
DR_REG_V12, DR_REG_V13, DR_REG_V14, DR_REG_V15, DR_REG_V16, DR_REG_V17,
DR_REG_V18, DR_REG_V19, DR_REG_V20, DR_REG_V21, DR_REG_V22, DR_REG_V23,
DR_REG_V24, DR_REG_V25, DR_REG_V26, DR_REG_V27, DR_REG_V28, DR_REG_V29,
DR_REG_V30, DR_REG_V31, DR_REG_V32, DR_REG_V33, DR_REG_V34, DR_REG_V2,
DR_REG_V3, DR_REG_V4, DR_REG_V5, DR_REG_V6, DR_REG_V7, DR_REG_V8,
DR_REG_V9, DR_REG_V10, DR_REG_V11, DR_REG_V12, DR_REG_V13, DR_REG_V14,
DR_REG_V15, DR_REG_V16, DR_REG_V17, DR_REG_V18, DR_REG_V19, DR_REG_V20,
DR_REG_V21, DR_REG_V22, DR_REG_V23, DR_REG_V24, DR_REG_V25, DR_REG_V26,
DR_REG_V27, DR_REG_V28, DR_REG_V29, DR_REG_V30, DR_REG_V31, DR_REG_V32,
DR_REG_V33, DR_REG_V34, DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38,
DR_REG_V39, DR_REG_V40, DR_REG_V41, DR_REG_V42, DR_REG_V43, DR_REG_V44,
DR_REG_V45, DR_REG_V46, DR_REG_V47, DR_REG_V48, DR_REG_V49, DR_REG_V50,
DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56,
DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62,
DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66, DR_REG_V35, DR_REG_V36,
const reg_id_t d_r_reg_id_to_virtual[] = {
DR_REG_NULL, DR_REG_NULL, DR_REG_V0, DR_REG_V1, DR_REG_V2, DR_REG_V3,
DR_REG_V4, DR_REG_V5, DR_REG_V6, DR_REG_V7, DR_REG_V8, DR_REG_V9,
DR_REG_V10, DR_REG_V11, DR_REG_V12, DR_REG_V13, DR_REG_V14, DR_REG_V15,
DR_REG_V16, DR_REG_V17, DR_REG_V18, DR_REG_V19, DR_REG_V20, DR_REG_V21,
DR_REG_V22, DR_REG_V23, DR_REG_V24, DR_REG_V25, DR_REG_V26, DR_REG_V27,
DR_REG_V28, DR_REG_V29, DR_REG_V30, DR_REG_V31, DR_REG_V32, DR_REG_V0,
DR_REG_V1, DR_REG_V2, DR_REG_V3, DR_REG_V4, DR_REG_V5, DR_REG_V6,
DR_REG_V7, DR_REG_V8, DR_REG_V9, DR_REG_V10, DR_REG_V11, DR_REG_V12,
DR_REG_V13, DR_REG_V14, DR_REG_V15, DR_REG_V16, DR_REG_V17, DR_REG_V18,
DR_REG_V19, DR_REG_V20, DR_REG_V21, DR_REG_V22, DR_REG_V23, DR_REG_V24,
DR_REG_V25, DR_REG_V26, DR_REG_V27, DR_REG_V28, DR_REG_V29, DR_REG_V30,
DR_REG_V31, DR_REG_V32, DR_REG_V33, DR_REG_V34, DR_REG_V35, DR_REG_V36,
DR_REG_V37, DR_REG_V38, DR_REG_V39, DR_REG_V40, DR_REG_V41, DR_REG_V42,
DR_REG_V43, DR_REG_V44, DR_REG_V45, DR_REG_V46, DR_REG_V47, DR_REG_V48,
DR_REG_V49, DR_REG_V50, DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54,
DR_REG_V55, DR_REG_V56, DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60,
DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66,
DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64, DR_REG_V33, DR_REG_V34,
DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38, DR_REG_V39, DR_REG_V40,
DR_REG_V41, DR_REG_V42, DR_REG_V43, DR_REG_V44, DR_REG_V45, DR_REG_V46,
DR_REG_V47, DR_REG_V48, DR_REG_V49, DR_REG_V50, DR_REG_V51, DR_REG_V52,
DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56, DR_REG_V57, DR_REG_V58,
DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64,
DR_REG_V65, DR_REG_V66, DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38,
DR_REG_V33, DR_REG_V34, DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38,
DR_REG_V39, DR_REG_V40, DR_REG_V41, DR_REG_V42, DR_REG_V43, DR_REG_V44,
DR_REG_V45, DR_REG_V46, DR_REG_V47, DR_REG_V48, DR_REG_V49, DR_REG_V50,
DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56,
DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62,
DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66, DR_REG_V35, DR_REG_V36,
DR_REG_V63, DR_REG_V64, DR_REG_V33, DR_REG_V34, DR_REG_V35, DR_REG_V36,
DR_REG_V37, DR_REG_V38, DR_REG_V39, DR_REG_V40, DR_REG_V41, DR_REG_V42,
DR_REG_V43, DR_REG_V44, DR_REG_V45, DR_REG_V46, DR_REG_V47, DR_REG_V48,
DR_REG_V49, DR_REG_V50, DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54,
DR_REG_V55, DR_REG_V56, DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60,
DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66,
DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64, DR_REG_V33, DR_REG_V34,
DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38, DR_REG_V39, DR_REG_V40,
DR_REG_V41, DR_REG_V42, DR_REG_V43, DR_REG_V44, DR_REG_V45, DR_REG_V46,
DR_REG_V47, DR_REG_V48, DR_REG_V49, DR_REG_V50, DR_REG_V51, DR_REG_V52,
DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56, DR_REG_V57, DR_REG_V58,
DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64,
DR_REG_V65, DR_REG_V66, DR_REG_V67, DR_REG_V68, DR_REG_V69, DR_REG_V70,
DR_REG_V71, DR_REG_V72, DR_REG_V73, DR_REG_V74, DR_REG_V75, DR_REG_V76,
DR_REG_V77, DR_REG_V78, DR_REG_V79, DR_REG_V80, DR_REG_V81, DR_REG_V82,
DR_REG_V83, DR_REG_V84, DR_REG_V85, DR_REG_V86, DR_REG_V87, DR_REG_V88,
DR_REG_V89, DR_REG_V90, DR_REG_V91, DR_REG_V92, DR_REG_V93, DR_REG_V94,
DR_REG_V95, DR_REG_V96, DR_REG_V97, DR_REG_V98, DR_REG_V99, DR_REG_V100,
DR_REG_V101, DR_REG_V102, DR_REG_V103, DR_REG_V104, DR_REG_V105, DR_REG_V106,
DR_REG_V107, DR_REG_V108, DR_REG_V109, DR_REG_V110, DR_REG_V111, DR_REG_V112,
DR_REG_V113, DR_REG_V114, DR_REG_V115, DR_REG_V116, DR_REG_V117, DR_REG_V118,
DR_REG_V119, DR_REG_V120, DR_REG_V121, DR_REG_V122, DR_REG_V123, DR_REG_V124,
DR_REG_V125, DR_REG_V126, DR_REG_V127, DR_REG_V128, DR_REG_V129, DR_REG_V130,
DR_REG_V131, DR_REG_V132, DR_REG_V133, DR_REG_V134, DR_REG_V135, DR_REG_V136,
DR_REG_V137, DR_REG_V138, DR_REG_V139, DR_REG_V140, DR_REG_V141, DR_REG_V142,
DR_REG_V143, DR_REG_V144, DR_REG_V145, DR_REG_V146, DR_REG_V147, DR_REG_V148,
DR_REG_V149, DR_REG_V150, DR_REG_V151, DR_REG_V152, DR_REG_V153, DR_REG_V154,
DR_REG_V155, DR_REG_V156, DR_REG_V157, DR_REG_V158, DR_REG_V159, DR_REG_V160,
DR_REG_V161, DR_REG_V162, DR_REG_V163, DR_REG_V164, DR_REG_V165, DR_REG_V166,
DR_REG_V167, DR_REG_V168, DR_REG_V169, DR_REG_V170, DR_REG_V171, DR_REG_V172,
DR_REG_V173, DR_REG_V174, DR_REG_V175, DR_REG_V176, DR_REG_V177, DR_REG_V178,
DR_REG_V179, DR_REG_V180, DR_REG_V181, DR_REG_V182, DR_REG_V183, DR_REG_V184,
DR_REG_V185, DR_REG_V186, DR_REG_V187, DR_REG_V188, DR_REG_V189, DR_REG_V190,
DR_REG_V191, DR_REG_V192, DR_REG_V193, DR_REG_V194, DR_REG_V195, DR_REG_V196,
DR_REG_V197, DR_REG_V198,
DR_REG_V33, DR_REG_V34, DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38,
DR_REG_V39, DR_REG_V40, DR_REG_V41, DR_REG_V42, DR_REG_V43, DR_REG_V44,
DR_REG_V45, DR_REG_V46, DR_REG_V47, DR_REG_V48, DR_REG_V49, DR_REG_V50,
DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56,
DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62,
DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66, DR_REG_V67, DR_REG_V68,
DR_REG_V69, DR_REG_V70, DR_REG_V71, DR_REG_V72, DR_REG_V73, DR_REG_V74,
DR_REG_V75, DR_REG_V76, DR_REG_V77, DR_REG_V78, DR_REG_V79, DR_REG_V80,
DR_REG_V81, DR_REG_V82, DR_REG_V83, DR_REG_V84, DR_REG_V85, DR_REG_V86,
DR_REG_V87, DR_REG_V88, DR_REG_V89, DR_REG_V90, DR_REG_V91, DR_REG_V92,
DR_REG_V93, DR_REG_V94, DR_REG_V95, DR_REG_V96, DR_REG_V97, DR_REG_V98,
DR_REG_V99, DR_REG_V100, DR_REG_V101, DR_REG_V102, DR_REG_V103, DR_REG_V104,
DR_REG_V105, DR_REG_V106, DR_REG_V107, DR_REG_V108, DR_REG_V109, DR_REG_V110,
DR_REG_V111, DR_REG_V112, DR_REG_V113, DR_REG_V114, DR_REG_V115, DR_REG_V116,
DR_REG_V117, DR_REG_V118, DR_REG_V119, DR_REG_V120, DR_REG_V121, DR_REG_V122,
DR_REG_V123, DR_REG_V124, DR_REG_V125, DR_REG_V126, DR_REG_V127, DR_REG_V128,
DR_REG_V129, DR_REG_V130, DR_REG_V131, DR_REG_V132, DR_REG_V133, DR_REG_V134,
DR_REG_V135, DR_REG_V136, DR_REG_V137, DR_REG_V138, DR_REG_V139, DR_REG_V140,
DR_REG_V141, DR_REG_V142, DR_REG_V143, DR_REG_V144, DR_REG_V145, DR_REG_V146,
DR_REG_V147, DR_REG_V148, DR_REG_V149, DR_REG_V150, DR_REG_V151, DR_REG_V152,
DR_REG_V153, DR_REG_V154, DR_REG_V155, DR_REG_V156, DR_REG_V157, DR_REG_V158,
DR_REG_V159, DR_REG_V160, DR_REG_V161, DR_REG_V162, DR_REG_V163, DR_REG_V164,
DR_REG_V165, DR_REG_V166, DR_REG_V167, DR_REG_V168, DR_REG_V169, DR_REG_V170,
DR_REG_V171, DR_REG_V172, DR_REG_V173, DR_REG_V174, DR_REG_V175, DR_REG_V176,
DR_REG_V177, DR_REG_V178, DR_REG_V179, DR_REG_V180, DR_REG_V181, DR_REG_V182,
DR_REG_V183, DR_REG_V184, DR_REG_V185, DR_REG_V186, DR_REG_V187, DR_REG_V188,
DR_REG_V189, DR_REG_V190, DR_REG_V191, DR_REG_V192, DR_REG_V193, DR_REG_V194,
DR_REG_V195, DR_REG_V196,
};

#ifdef DEBUG
Expand Down
62 changes: 30 additions & 32 deletions core/ir/arm/encode.c
Original file line number Diff line number Diff line change
Expand Up @@ -464,39 +464,37 @@ const reg_id_t dr_reg_fixer[] = {

/* Maps containing-registers to their DR_ISA_REGDEPS virtual-register.
* Same size as dr_reg_fixer[], keep them synched.
* Note: DR_REG_INVALID (== DR_REG_V1 == 1) has been excluded to avoid failures on opnd_t
* operations.
*/
const reg_id_t dr_reg_virtual[] = {
DR_REG_V0, DR_REG_V0, DR_REG_V2, DR_REG_V3, DR_REG_V4, DR_REG_V5, DR_REG_V6,
DR_REG_V7, DR_REG_V8, DR_REG_V9, DR_REG_V10, DR_REG_V11, DR_REG_V12, DR_REG_V13,
DR_REG_V14, DR_REG_V15, DR_REG_V16, DR_REG_V17, DR_REG_V18, DR_REG_V19, DR_REG_V20,
DR_REG_V21, DR_REG_V22, DR_REG_V23, DR_REG_V24, DR_REG_V25, DR_REG_V26, DR_REG_V27,
DR_REG_V28, DR_REG_V29, DR_REG_V30, DR_REG_V31, DR_REG_V32, DR_REG_V33, DR_REG_V34,
DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38, DR_REG_V39, DR_REG_V40, DR_REG_V41,
DR_REG_V42, DR_REG_V43, DR_REG_V44, DR_REG_V45, DR_REG_V46, DR_REG_V47, DR_REG_V48,
DR_REG_V49, DR_REG_V18, DR_REG_V18, DR_REG_V19, DR_REG_V19, DR_REG_V20, DR_REG_V20,
DR_REG_V21, DR_REG_V21, DR_REG_V22, DR_REG_V22, DR_REG_V23, DR_REG_V23, DR_REG_V24,
DR_REG_V24, DR_REG_V25, DR_REG_V25, DR_REG_V26, DR_REG_V26, DR_REG_V27, DR_REG_V27,
DR_REG_V28, DR_REG_V28, DR_REG_V29, DR_REG_V29, DR_REG_V30, DR_REG_V30, DR_REG_V31,
DR_REG_V31, DR_REG_V32, DR_REG_V32, DR_REG_V33, DR_REG_V33, DR_REG_V18, DR_REG_V18,
DR_REG_V18, DR_REG_V18, DR_REG_V19, DR_REG_V19, DR_REG_V19, DR_REG_V19, DR_REG_V20,
DR_REG_V20, DR_REG_V20, DR_REG_V20, DR_REG_V21, DR_REG_V21, DR_REG_V21, DR_REG_V21,
DR_REG_V22, DR_REG_V22, DR_REG_V22, DR_REG_V22, DR_REG_V23, DR_REG_V23, DR_REG_V23,
DR_REG_V23, DR_REG_V24, DR_REG_V24, DR_REG_V24, DR_REG_V24, DR_REG_V25, DR_REG_V25,
DR_REG_V25, DR_REG_V25, DR_REG_V18, DR_REG_V19, DR_REG_V20, DR_REG_V21, DR_REG_V22,
DR_REG_V23, DR_REG_V24, DR_REG_V25, DR_REG_V26, DR_REG_V27, DR_REG_V28, DR_REG_V29,
DR_REG_V30, DR_REG_V31, DR_REG_V32, DR_REG_V33, DR_REG_V50, DR_REG_V51, DR_REG_V52,
DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56, DR_REG_V57, DR_REG_V58, DR_REG_V59,
DR_REG_V60, DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V18,
DR_REG_V19, DR_REG_V20, DR_REG_V21, DR_REG_V22, DR_REG_V23, DR_REG_V24, DR_REG_V25,
DR_REG_V26, DR_REG_V27, DR_REG_V28, DR_REG_V29, DR_REG_V30, DR_REG_V31, DR_REG_V32,
DR_REG_V33, DR_REG_V50, DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54, DR_REG_V55,
DR_REG_V56, DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62,
DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66, DR_REG_V67, DR_REG_V68, DR_REG_V69,
DR_REG_V70, DR_REG_V71, DR_REG_V72, DR_REG_V73, DR_REG_V74, DR_REG_V75, DR_REG_V76,
DR_REG_V77, DR_REG_V78, DR_REG_V79, DR_REG_V80, DR_REG_V81, DR_REG_V82, DR_REG_V83,
DR_REG_V84, DR_REG_V85, DR_REG_V86,
const reg_id_t d_r_reg_id_to_virtual[] = {
DR_REG_NULL, DR_REG_NULL, DR_REG_V0, DR_REG_V1, DR_REG_V2, DR_REG_V3, DR_REG_V4,
DR_REG_V5, DR_REG_V6, DR_REG_V7, DR_REG_V8, DR_REG_V9, DR_REG_V10, DR_REG_V11,
DR_REG_V12, DR_REG_V13, DR_REG_V14, DR_REG_V15, DR_REG_V16, DR_REG_V17, DR_REG_V18,
DR_REG_V19, DR_REG_V20, DR_REG_V21, DR_REG_V22, DR_REG_V23, DR_REG_V24, DR_REG_V25,
DR_REG_V26, DR_REG_V27, DR_REG_V28, DR_REG_V29, DR_REG_V30, DR_REG_V31, DR_REG_V32,
DR_REG_V33, DR_REG_V34, DR_REG_V35, DR_REG_V36, DR_REG_V37, DR_REG_V38, DR_REG_V39,
DR_REG_V40, DR_REG_V41, DR_REG_V42, DR_REG_V43, DR_REG_V44, DR_REG_V45, DR_REG_V46,
DR_REG_V47, DR_REG_V16, DR_REG_V16, DR_REG_V17, DR_REG_V17, DR_REG_V18, DR_REG_V18,
DR_REG_V19, DR_REG_V19, DR_REG_V20, DR_REG_V20, DR_REG_V21, DR_REG_V21, DR_REG_V22,
DR_REG_V22, DR_REG_V23, DR_REG_V23, DR_REG_V24, DR_REG_V24, DR_REG_V25, DR_REG_V25,
DR_REG_V26, DR_REG_V26, DR_REG_V27, DR_REG_V27, DR_REG_V28, DR_REG_V28, DR_REG_V29,
DR_REG_V29, DR_REG_V30, DR_REG_V30, DR_REG_V31, DR_REG_V31, DR_REG_V16, DR_REG_V16,
DR_REG_V16, DR_REG_V16, DR_REG_V17, DR_REG_V17, DR_REG_V17, DR_REG_V17, DR_REG_V18,
DR_REG_V18, DR_REG_V18, DR_REG_V18, DR_REG_V19, DR_REG_V19, DR_REG_V19, DR_REG_V19,
DR_REG_V20, DR_REG_V20, DR_REG_V20, DR_REG_V20, DR_REG_V21, DR_REG_V21, DR_REG_V21,
DR_REG_V21, DR_REG_V22, DR_REG_V22, DR_REG_V22, DR_REG_V22, DR_REG_V23, DR_REG_V23,
DR_REG_V23, DR_REG_V23, DR_REG_V16, DR_REG_V17, DR_REG_V18, DR_REG_V19, DR_REG_V20,
DR_REG_V21, DR_REG_V22, DR_REG_V23, DR_REG_V24, DR_REG_V25, DR_REG_V26, DR_REG_V27,
DR_REG_V28, DR_REG_V29, DR_REG_V30, DR_REG_V31, DR_REG_V48, DR_REG_V49, DR_REG_V50,
DR_REG_V51, DR_REG_V52, DR_REG_V53, DR_REG_V54, DR_REG_V55, DR_REG_V56, DR_REG_V57,
DR_REG_V58, DR_REG_V59, DR_REG_V60, DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V16,
DR_REG_V17, DR_REG_V18, DR_REG_V19, DR_REG_V20, DR_REG_V21, DR_REG_V22, DR_REG_V23,
DR_REG_V24, DR_REG_V25, DR_REG_V26, DR_REG_V27, DR_REG_V28, DR_REG_V29, DR_REG_V30,
DR_REG_V31, DR_REG_V48, DR_REG_V49, DR_REG_V50, DR_REG_V51, DR_REG_V52, DR_REG_V53,
DR_REG_V54, DR_REG_V55, DR_REG_V56, DR_REG_V57, DR_REG_V58, DR_REG_V59, DR_REG_V60,
DR_REG_V61, DR_REG_V62, DR_REG_V63, DR_REG_V64, DR_REG_V65, DR_REG_V66, DR_REG_V67,
DR_REG_V68, DR_REG_V69, DR_REG_V70, DR_REG_V71, DR_REG_V72, DR_REG_V73, DR_REG_V74,
DR_REG_V75, DR_REG_V76, DR_REG_V77, DR_REG_V78, DR_REG_V79, DR_REG_V80, DR_REG_V81,
DR_REG_V82, DR_REG_V83, DR_REG_V84,
};

const char *const type_names[] = {
Expand Down
18 changes: 12 additions & 6 deletions core/ir/instr_shared.c
Original file line number Diff line number Diff line change
Expand Up @@ -3017,8 +3017,7 @@ instr_convert_to_isa_regdeps(void *drcontext, instr_t *instr_real_isa,
reg_id_t reg = opnd_get_reg_used(dst_opnd, opnd_index);
/* Map sub-registers to their containing register.
*/
reg_id_t reg_canonical = reg_to_pointer_sized(reg);
reg_id_t reg_virtual = reg_to_virtual(reg_canonical);
reg_id_t reg_virtual = dr_reg_to_virtual(reg);
if (!src_reg_used[reg_virtual]) {
++num_srcs;
src_reg_used[reg_virtual] = true;
Expand All @@ -3029,8 +3028,7 @@ instr_convert_to_isa_regdeps(void *drcontext, instr_t *instr_real_isa,
reg_id_t reg = opnd_get_reg_used(dst_opnd, opnd_index);
/* Map sub-registers to their containing register.
*/
reg_id_t reg_canonical = reg_to_pointer_sized(reg);
reg_id_t reg_virtual = reg_to_virtual(reg_canonical);
reg_id_t reg_virtual = dr_reg_to_virtual(reg);
if (!dst_reg_used[reg_virtual]) {
++num_dsts;
dst_reg_used[reg_virtual] = true;
Expand Down Expand Up @@ -3059,8 +3057,7 @@ instr_convert_to_isa_regdeps(void *drcontext, instr_t *instr_real_isa,
reg_id_t reg = opnd_get_reg_used(src_opnd, opnd_index);
/* Map sub-registers to their containing register.
*/
reg_id_t reg_canonical = reg_to_pointer_sized(reg);
reg_id_t reg_virtual = reg_to_virtual(reg_canonical);
reg_id_t reg_virtual = dr_reg_to_virtual(reg);
if (!src_reg_used[reg_virtual]) {
++num_srcs;
src_reg_used[reg_virtual] = true;
Expand Down Expand Up @@ -3105,6 +3102,15 @@ instr_convert_to_isa_regdeps(void *drcontext, instr_t *instr_real_isa,
for (uint reg = 0; reg < REGDEPS_MAX_NUM_REGS; ++reg) {
if (dst_reg_used[reg]) {
opnd_t dst_opnd = opnd_create_reg((reg_id_t)reg);
/* Virtual registers may have ID values not supported by reg_get_size().
* We set the opnd_t.size field to be the operation_size max_opnd_size so
* that reg_get_size() can return it without triggering a CLIENT_ASSERT
* error. Note that now the same virtual register in two different
* instructions may have different sizes. However, querying the size of
* a virtual register is not supported on purpose, so the user should not
* expect opnd_t.size to have any meaningful value. We do the same for
* both src and dst register operands of DR_ISA_REGDEPS instructions.
*/
opnd_set_size(&dst_opnd, max_opnd_size);
instr_set_dst(instr_regdeps_isa, reg_counter, dst_opnd);
++reg_counter;
Expand Down
9 changes: 9 additions & 0 deletions core/ir/isa_regdeps/decode.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,15 @@ decode_isa_regdeps(dcontext_t *dcontext, byte *encoded_instr, instr_t *instr)
for (uint i = 0; i < num_dsts; ++i) {
reg_id_t dst = (reg_id_t)encoded_instr[i + REGDEPS_OPND_INDEX];
opnd_t dst_opnd = opnd_create_reg((reg_id_t)dst);
/* Virtual registers may have ID values not supported by reg_get_size().
* We set the opnd_t.size field to be the operation_size max_opnd_size so
* that reg_get_size() can return it without triggering a CLIENT_ASSERT
* error. Note that now the same virtual register in two different
* instructions may have different sizes. However, querying the size of
* a virtual register is not supported on purpose, so the user should not
* expect opnd_t.size to have any meaningful value. We do the same for
* both src and dst register operands of DR_ISA_REGDEPS instructions.
*/
opnd_set_size(&dst_opnd, max_opnd_size);
instr_set_dst(instr, i, dst_opnd);
}
Expand Down
Loading

0 comments on commit 398900c

Please sign in to comment.