-
Notifications
You must be signed in to change notification settings - Fork 150
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add initial support for analyzing AMDGPU binaries (#900)
* remove unnecessary assertion for unknown phdr_type * add initial stubs for amdgpu support * add formatters for amdgpu * add opcode table and register definition * added support for register vector * add untracked files * commit stubs for xiaozhu to see * initial cfg traversal done * remove unused register-pair related files * remove symbol patching since the 256 byte function header is no longer there * Do not assert in getBaseRegister * fix instruction length detection and decoding logic * now decode will only decode operands for branch instructions * added basic support for amdgpu in rose * merged upstream * fix a bug where we decode the vdst as ssrc * improve the logic for computing len of instructions that might make use of literals, such that we no longer need to pass the buffer all over the place * fix undefined behavior for std::transform * Remove empty code blocks/Unreachable code/Unneeded Comment out dead code Restore sym_debug_parsing to default value 0 * Added meaningful name and comments to function prototype of getAMDGPURoseRegisters Remove duplicate public modifiers in class declaration. * remove unnecessary include of boost/format.hpp * remove all amdgpu related stuff in dataflowAPI, and patched indirect analyzer so it skips for amdgpu * renaming Arch_amdgpu to Arch_amdgpu_vega * make changes to use namespace amdgpu_vega instead of amdgpu * change the naming of c_NonReturnInsn to c_GPUKernelExitInsn as suggested Co-authored-by: Xiaozhu Meng <mxz297@gmail.com>
- Loading branch information
1 parent
6266e1a
commit 40f9295
Showing
49 changed files
with
8,351 additions
and
2,056 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,379 @@ | ||
amdgpu_op_s_add_u32, | ||
amdgpu_op_v_subrev_u16_e64, | ||
amdgpu_op_v_ashrrev_i16, | ||
amdgpu_op_v_subbrev_co_u32_e64, | ||
amdgpu_op_v_subbrev_co_u32, | ||
amdgpu_op_v_add_f16, | ||
amdgpu_op_v_or_b32_e64, | ||
amdgpu_op_s_max_i32, | ||
amdgpu_op_s_fltbit_i32, | ||
amdgpu_op_s_mulk_i32, | ||
amdgpu_op_v_min_f32, | ||
amdgpu_op_v_mac_f16, | ||
amdgpu_op_v_ashrrev_i32, | ||
amdgpu_op_v_max_f16, | ||
amdgpu_op_s_bitset1_b32, | ||
amdgpu_op_s_barrier, | ||
amdgpu_op_v_cvt_i32_f32, | ||
amdgpu_op_v_subrev_u16, | ||
amdgpu_op_v_cndmask_b32, | ||
amdgpu_op_v_cvt_f32_f16, | ||
amdgpu_op_v_interp_mov_f32, | ||
amdgpu_op_v_lshrrev_b16_e64, | ||
amdgpu_op_s_xor_b32, | ||
amdgpu_op_s_buffer_store_dwordx2, | ||
amdgpu_op_s_nor_b64, | ||
amdgpu_op_s_cmp_lt_u32, | ||
amdgpu_op_v_ldexp_f16_e64, | ||
amdgpu_op_v_max_f16_e64, | ||
amdgpu_op_s_min_u32, | ||
amdgpu_op_s_buffer_load_dwordx2, | ||
amdgpu_op_v_mul_lo_u16_e64, | ||
amdgpu_op_s_bfm_b64, | ||
amdgpu_op_s_xnor_b32, | ||
amdgpu_op_s_cmpk_eq_i32, | ||
amdgpu_op_v_min_u32, | ||
amdgpu_op_v_cmp_le_u64_e64, | ||
amdgpu_op_s_cmp_ge_eq_u32, | ||
amdgpu_op_v_min_i16, | ||
amdgpu_op_v_add_co_u32_e64, | ||
amdgpu_op_s_quadmask_b64, | ||
amdgpu_op_v_readfirstlane_b32, | ||
amdgpu_op_s_scratch_store_dwordx4, | ||
amdgpu_op_s_ashr_i32, | ||
amdgpu_op_s_movreld_b64, | ||
amdgpu_op_s_cmpk_le_u32, | ||
amdgpu_op_s_scratch_load_dwordx4, | ||
amdgpu_op_v_lshlrev_b64, | ||
amdgpu_op_s_waitcnt, | ||
amdgpu_op_v_sub_u16, | ||
amdgpu_op_v_madak_f32, | ||
amdgpu_op_s_dcache_inv_vol, | ||
amdgpu_op_v_mul_hi_i32_i24, | ||
amdgpu_op_s_nop, | ||
amdgpu_op_v_cvt_flr_i32_f32_e64, | ||
amdgpu_op_s_addc_u32, | ||
amdgpu_op_s_setreg_imm32_b32, | ||
amdgpu_op_s_xnor_savexec_b64, | ||
amdgpu_op_s_endpgm, | ||
amdgpu_op_v_cvt_i32_f64_e64, | ||
amdgpu_op_s_movrels_b64, | ||
amdgpu_op_s_icache_inv, | ||
amdgpu_op_v_cvt_f64_i32_e64, | ||
amdgpu_op_flat_store_dword, | ||
amdgpu_op_v_madak_f16, | ||
amdgpu_op_s_set_gpr_idx_off, | ||
amdgpu_op_s_ff1_i32_b32, | ||
amdgpu_op_s_ff0_i32_b32, | ||
amdgpu_op_s_lshl4_add_u32, | ||
amdgpu_op_v_add_u32, | ||
amdgpu_op_v_mul_i32_i24, | ||
amdgpu_op_v_sub_u32_e64, | ||
amdgpu_op_v_addc_co_u32, | ||
amdgpu_op_v_cvt_f16_f32_e64, | ||
amdgpu_op_v_cmp_class_f32_e64, | ||
amdgpu_op_buffer_store_format_xy, | ||
amdgpu_op_v_cmp_le_u64, | ||
amdgpu_op_s_subb_u32, | ||
amdgpu_op_buffer_store_format_x, | ||
amdgpu_op_v_xor_b32_e64, | ||
amdgpu_op_s_cbranch_scc0, | ||
amdgpu_op_s_cbranch_vccnz, | ||
amdgpu_op_s_xor_savexec_b64, | ||
amdgpu_op_s_bitcmp0_b64, | ||
amdgpu_op_s_bfe_u32, | ||
amdgpu_op_s_cbranch_cdbguser, | ||
amdgpu_op_s_quadmask_b32, | ||
amdgpu_op_s_bcnt1_i32_b32, | ||
amdgpu_op_s_rfe_restore_b64, | ||
amdgpu_op_s_wakeup, | ||
amdgpu_op_v_max_i32, | ||
amdgpu_op_tbuffer_load_format_xy, | ||
amdgpu_op_s_and_b64, | ||
amdgpu_op_s_cmpk_gt_u32, | ||
amdgpu_op_s_bfe_u64, | ||
amdgpu_op_v_interp_p1_f32, | ||
amdgpu_op_v_mul_hi_u32_u24, | ||
amdgpu_op_v_madak_f16_e64, | ||
amdgpu_op_s_cmp_ge_eq_i32, | ||
amdgpu_op_s_cmpk_le_i32, | ||
amdgpu_op_ds_add_u32, | ||
amdgpu_op_s_setkill, | ||
amdgpu_op_s_setprio, | ||
amdgpu_op_s_addk_i32, | ||
amdgpu_op_v_add_b32, | ||
amdgpu_op_v_max_f32, | ||
amdgpu_op_s_cbranch_cdbgsys, | ||
amdgpu_op_s_cbranch_cdbgsys_and_user, | ||
amdgpu_op_s_dcache_memrealtime, | ||
amdgpu_op_v_mul_u32_u24, | ||
amdgpu_op_s_set_gpr_idx_on, | ||
amdgpu_op_s_cmov_b32, | ||
amdgpu_op_s_load_dwordx8, | ||
amdgpu_op_s_cmp_ge_i32, | ||
amdgpu_op_v_cvt_f16_f32, | ||
amdgpu_op_v_max_u32, | ||
amdgpu_op_v_lshrrev_b32, | ||
amdgpu_op_s_invalid_2, | ||
amdgpu_op_s_min_i32, | ||
amdgpu_op_v_max_i16_e64, | ||
amdgpu_op_s_orn1_saveexec_b64, | ||
amdgpu_op_v_cvt_flr_i32_f32, | ||
amdgpu_op_v_sub_f16, | ||
amdgpu_op_v_cvt_u32_f32_e64, | ||
amdgpu_op_s_sub_u32, | ||
amdgpu_op_s_absdiff_i32, | ||
amdgpu_op_s_orn2_savexec_b64, | ||
amdgpu_op_s_bcnt0_i32_b64, | ||
amdgpu_op_v_ashrrev_i32_e64, | ||
amdgpu_op_s_sext_i32_i8, | ||
amdgpu_op_s_sendmsghalt, | ||
amdgpu_op_s_lshsl2_add_u32, | ||
amdgpu_op_v_subrev_u32, | ||
amdgpu_op_v_sub_f16_e64, | ||
amdgpu_op_v_subrev_co_u32, | ||
amdgpu_op_s_bitset0_b32, | ||
amdgpu_op_s_cmpk_lg_i32, | ||
amdgpu_op_s_lshl1_add_u32, | ||
amdgpu_op_s_bcnt1_i32_b64, | ||
amdgpu_op_s_nand_b64, | ||
amdgpu_op_v_lshlrev_b32, | ||
amdgpu_op_v_min_f16, | ||
amdgpu_op_v_interp_p2_f32, | ||
amdgpu_op_v_subrev_f32_e64, | ||
amdgpu_op_s_movreld_b32, | ||
amdgpu_op_s_lshl_b64, | ||
amdgpu_op_v_sub_u32, | ||
amdgpu_op_s_sleep, | ||
amdgpu_op_s_scratch_store_dwordx2, | ||
amdgpu_op_s_set_gpr_idx_idx, | ||
amdgpu_op_s_wqm_b64, | ||
amdgpu_op_s_cmp_ge_u32, | ||
amdgpu_op_s_pack_ll_b32_b16, | ||
amdgpu_op_v_mul_f32_e64, | ||
amdgpu_op_s_scratch_load_dwordx2, | ||
amdgpu_op_v_mad_legacy_f32, | ||
amdgpu_op_v_cvt_off_f32_i4, | ||
amdgpu_op_s_andn2_b32, | ||
amdgpu_op_v_mov_b32_e64, | ||
amdgpu_op_s_set_gpr_idx_mode, | ||
amdgpu_op_s_bfe_i64, | ||
amdgpu_op_s_load_dwordx16, | ||
amdgpu_op_v_cvt_f32_i32, | ||
amdgpu_op_s_mov_b32, | ||
amdgpu_op_s_lshr_b64, | ||
amdgpu_op_buffer_load_format_xyzw, | ||
amdgpu_op_s_not_b32, | ||
amdgpu_op_s_cmov_b64, | ||
amdgpu_op_s_or_savexec_b64, | ||
amdgpu_op_v_xor_b32, | ||
amdgpu_op_v_mul_lo_u16, | ||
amdgpu_op_s_cmpk_gt_i32, | ||
amdgpu_op_s_nand_b32, | ||
amdgpu_op_v_madmk_f16_e64, | ||
amdgpu_op_v_lshlrev_b32_e64, | ||
amdgpu_op_v_pk_mad_i16, | ||
amdgpu_op_s_endpgm_ordered_ps_done, | ||
amdgpu_op_s_and_b32, | ||
amdgpu_op_v_sub_f32_e64, | ||
amdgpu_op_s_invalid_1, | ||
amdgpu_op_s_load_dwordx2, | ||
amdgpu_op_v_subrev_f16, | ||
amdgpu_op_s_not_b64, | ||
amdgpu_op_v_cvt_i32_f32_e64, | ||
amdgpu_op_v_mul_f32, | ||
amdgpu_op_v_min_u16, | ||
amdgpu_op_v_madmk_f32, | ||
amdgpu_op_tbuffer_store_format_xyz, | ||
amdgpu_op_s_brev_b32, | ||
amdgpu_op_v_subrev_co_u32_e64, | ||
amdgpu_op_s_bitcmp0_b32, | ||
amdgpu_op_v_cmp_class_f32, | ||
amdgpu_op_s_scratch_store_dword, | ||
amdgpu_op_v_mul_u32_u24_e64, | ||
amdgpu_op_s_decperflevel, | ||
amdgpu_op_s_or_b64, | ||
amdgpu_op_tbuffer_load_format_x, | ||
amdgpu_op_v_mac_b32_e64, | ||
amdgpu_op_s_nand_savexec_b64, | ||
amdgpu_op_v_sub_co_u32_e64, | ||
amdgpu_op_s_setreg_b32, | ||
amdgpu_op_s_mul_i32, | ||
amdgpu_op_v_cvt_rpi_i32_f32, | ||
amdgpu_op_v_mul_i32_i24_e64, | ||
amdgpu_op_s_cbranch_scc1, | ||
amdgpu_op_v_nop, | ||
amdgpu_op_s_setpc_b64, | ||
amdgpu_op_v_cvt_rpi_i32_f32_e64, | ||
amdgpu_op_s_branch, | ||
amdgpu_op_v_mul_hi_i32_i24_e64, | ||
amdgpu_op_v_subrev_u32_e64, | ||
amdgpu_op_v_min_u32_e64, | ||
amdgpu_op_v_add_f32, | ||
amdgpu_op_s_buffer_store_dwordx4, | ||
amdgpu_op_s_lshr_b32, | ||
amdgpu_op_s_buffer_load_dwordx16, | ||
amdgpu_op_s_pack_lh_b32_b16, | ||
amdgpu_op_v_cmp_gt_u64_e64, | ||
amdgpu_op_v_max_i32_e64, | ||
amdgpu_op_s_cbranch_vccz, | ||
amdgpu_op_s_buffer_load_dwordx4, | ||
amdgpu_op_v_max_f32_e64, | ||
amdgpu_op_v_sub_f32, | ||
amdgpu_op_buffer_load_format_xyz, | ||
amdgpu_op_v_cvt_f32_i32_e64, | ||
amdgpu_op_v_min_u16_e64, | ||
amdgpu_op_s_cmp_gt_u32, | ||
amdgpu_op_v_mov_b32, | ||
amdgpu_op_s_cmp_lg_u64, | ||
amdgpu_op_s_bitset1_b64, | ||
amdgpu_op_s_buffer_store_dword, | ||
amdgpu_op_s_wqm_b32, | ||
amdgpu_op_s_lshl3_add_u32, | ||
amdgpu_op_v_max_i16, | ||
amdgpu_op_s_cmpk_ge_i32, | ||
amdgpu_op_s_orn2_b64, | ||
amdgpu_op_s_bitcmp1_b32, | ||
amdgpu_op_s_buffer_load_dword, | ||
amdgpu_op_s_bitcmp1_b64, | ||
amdgpu_op_v_nop_e64, | ||
amdgpu_op_s_bitreplicate_b64_b32, | ||
amdgpu_op_tbuffer_load_format_xyz, | ||
amdgpu_op_s_getreg_b32, | ||
amdgpu_op_s_andn2_savexec_b64, | ||
amdgpu_op_v_subrev_f16_e64, | ||
amdgpu_op_s_cbranch_execz, | ||
amdgpu_op_s_load_dwordx4, | ||
amdgpu_op_s_andn1_saveexec_b64, | ||
amdgpu_op_s_ashr_i64, | ||
amdgpu_op_buffer_load_format_xy, | ||
amdgpu_op_flat_load_dword, | ||
amdgpu_op_s_brev_b64, | ||
amdgpu_op_s_scratch_load_dword, | ||
amdgpu_op_s_lshl_b32, | ||
amdgpu_op_v_madmk_f16, | ||
amdgpu_op_tbuffer_store_format_xyzw, | ||
amdgpu_op_v_min_i32_e64, | ||
amdgpu_op_s_cslect_b32, | ||
amdgpu_op_v_lshrrev_b32_e64, | ||
amdgpu_op_v_cvt_u32_f32, | ||
amdgpu_op_v_readfirstlane_b32_e64, | ||
amdgpu_op_v_min_f32_e64, | ||
amdgpu_op_buffer_load_format_x, | ||
amdgpu_op_v_mul_hi_u32_u24_e64, | ||
amdgpu_op_s_sendmsg, | ||
amdgpu_op_v_add_u16_e64, | ||
amdgpu_op_s_endpgm_saved, | ||
amdgpu_op_v_min_i16_e64, | ||
amdgpu_op_s_flbit_i32_b64, | ||
amdgpu_op_s_mul_hi_u32, | ||
amdgpu_op_v_max_u32_e64, | ||
amdgpu_op_v_add_u32_e64, | ||
amdgpu_op_s_bfm_b32, | ||
amdgpu_op_s_xnor_b64, | ||
amdgpu_op_v_sub_u16_e64, | ||
amdgpu_op_s_sext_i32_i16, | ||
amdgpu_op_v_cvt_i32_f64, | ||
amdgpu_op_s_setvkip, | ||
amdgpu_op_s_dcache_wb, | ||
amdgpu_op_v_min_f16_e64, | ||
amdgpu_op_s_nor_b32, | ||
amdgpu_op_s_getpc_b64, | ||
amdgpu_op_v_cvt_off_f32_i4_e64, | ||
amdgpu_op_s_sub_i32, | ||
amdgpu_op_s_dcache_wb_vol, | ||
amdgpu_op_s_xor_b64, | ||
amdgpu_op_v_cvt_f32_u32_e64, | ||
amdgpu_op_s_nor_savexec_b64, | ||
amdgpu_op_v_add_u16, | ||
amdgpu_op_s_mul_hi_i32, | ||
amdgpu_op_v_mul_legacy_f32_e64, | ||
amdgpu_op_v_or_b32, | ||
amdgpu_op_s_cslect_b64, | ||
amdgpu_op_v_mul_f16, | ||
amdgpu_op_s_load_dword, | ||
amdgpu_op_v_cvt_f32_f16_e64, | ||
amdgpu_op_s_rfe_b64, | ||
amdgpu_op_s_cmp_lt_i32, | ||
amdgpu_op_s_cmp_le_i32, | ||
amdgpu_op_s_cmp_eq_u64, | ||
amdgpu_op_s_dcache_memtime, | ||
amdgpu_op_v_lshlrev_b16_e64, | ||
amdgpu_op_s_ff0_i32_b64, | ||
amdgpu_op_s_cmp_lg_i32, | ||
amdgpu_op_s_trap, | ||
amdgpu_op_v_mad_f32, | ||
amdgpu_op_s_store_dwordx2, | ||
amdgpu_op_s_cmpk_ge_u32, | ||
amdgpu_op_v_add_b32_e64, | ||
amdgpu_op_v_sub_co_u32, | ||
amdgpu_op_s_fltbit_i32_i64, | ||
amdgpu_op_v_max_u16, | ||
amdgpu_op_v_add_f16_e64, | ||
amdgpu_op_s_flbit_i32_b32, | ||
amdgpu_op_s_buffer_load_dwordx8, | ||
amdgpu_op_s_cbranch_i_fork, | ||
amdgpu_op_s_sethalt, | ||
amdgpu_op_tbuffer_store_format_xy, | ||
amdgpu_op_v_subrev_f32, | ||
amdgpu_op_s_bcnt0_i32_b32, | ||
amdgpu_op_s_pack_hh_b32_B16, | ||
amdgpu_op_v_madmk_f32_e64, | ||
amdgpu_op_s_ttracedata, | ||
amdgpu_op_v_pack_b32_f16, | ||
amdgpu_op_s_bitset0_b64, | ||
amdgpu_op_s_store_dword, | ||
amdgpu_op_s_abs_i32, | ||
amdgpu_op_s_and_saveexec_b64, | ||
amdgpu_op_buffer_store_format_xyz, | ||
amdgpu_op_s_cmovk_i32, | ||
amdgpu_op_v_mac_f16_e64, | ||
amdgpu_op_s_cmp_le_u32, | ||
amdgpu_op_v_add_co_u32, | ||
amdgpu_op_s_incperflevel, | ||
amdgpu_op_s_max_u32, | ||
amdgpu_op_s_cbranch_g_fork, | ||
amdgpu_op_s_cmpk_lt_i32, | ||
amdgpu_op_v_subb_co_u32, | ||
amdgpu_op_v_addc_co_u32_e64, | ||
amdgpu_op_v_madak_f32_e64, | ||
amdgpu_op_s_call_b64, | ||
amdgpu_op_v_ldexp_f16, | ||
amdgpu_op_v_lshlrev_b16, | ||
amdgpu_op_v_mul_legacy_f32, | ||
amdgpu_op_s_swappc_b64, | ||
amdgpu_op_s_orn2_b32, | ||
amdgpu_op_s_store_dwordx4, | ||
amdgpu_op_s_mov_b64, | ||
amdgpu_op_s_cmp_lg_u32, | ||
amdgpu_op_v_lshrrev_b16, | ||
amdgpu_op_s_movk_i32, | ||
amdgpu_op_s_andn2_b64, | ||
amdgpu_op_s_andn2_wrexec_b64, | ||
amdgpu_op_v_cvt_f32_u32, | ||
amdgpu_op_tbuffer_load_format_xyzw, | ||
amdgpu_op_v_mac_b32, | ||
amdgpu_op_s_cbranch_join, | ||
amdgpu_op_tbuffer_store_format_x, | ||
amdgpu_op_buffer_store_format_xyzw, | ||
amdgpu_op_v_max_u16_e64, | ||
amdgpu_op_s_dcache_inv, | ||
amdgpu_op_s_cmpk_lg_u32, | ||
amdgpu_op_v_min_i32, | ||
amdgpu_op_v_cvt_f64_i32, | ||
amdgpu_op_v_cndmask_b32_e64, | ||
amdgpu_op_s_movrels_b32, | ||
amdgpu_op_s_cmp_gt_i32, | ||
amdgpu_op_s_add_i32, | ||
amdgpu_op_s_andn1_wrexec_b64, | ||
amdgpu_op_s_cmpk_lt_u32, | ||
amdgpu_op_s_cmpk_eq_u32, | ||
amdgpu_op_v_cmp_gt_u64, | ||
amdgpu_op_s_ff1_i32_b64, | ||
amdgpu_op_v_subb_co_u32_e64, | ||
amdgpu_op_v_ashrrev_i16_e64, | ||
amdgpu_op_v_add_f32_e64, | ||
amdgpu_op_s_or_b32, | ||
amdgpu_op_s_cbranch_execnz, | ||
amdgpu_op_s_bfe_i32, | ||
amdgpu_op_v_mul_f16_e64, |
Oops, something went wrong.