Lines Matching refs:binary
69 print_instr(FILE* output, const std::vector<uint32_t>& binary, char* instr, unsigned size,
75 fprintf(output, " %.8x", binary[pos + i]);
175 print_asm_clrx(Program* program, std::vector<uint32_t>& binary, unsigned exec_size, FILE* output)
187 /* Dump the binary into a temporary file. */
193 if (write(fd, &binary[i], 4) == -1)
235 print_instr(output, binary, prev_instr, pos - prev_pos, prev_pos);
253 print_instr(output, binary, prev_instr, exec_size - prev_pos, prev_pos);
271 disasm_instr(amd_gfx_level gfx_level, LLVMDisasmContextRef disasm, uint32_t* binary,
275 LLVMDisasmInstruction(disasm, (uint8_t*)&binary[pos], (exec_size - pos) * sizeof(uint32_t),
278 if (gfx_level >= GFX10 && l == 8 && ((binary[pos] & 0xffff0000) == 0xd7610000) &&
279 ((binary[pos + 1] & 0x1ff) == 0xff)) {
288 (binary[pos] & 0xffff8000) == 0xd1348000) || /* v_add_u32_e64 + clamp */
290 (binary[pos] & 0xffff8000) == 0xd7038000) || /* v_add_u16_e64 + clamp */
292 (binary[pos] & 0xffff8000) == 0xd1268000) || /* v_add_u16_e64 + clamp */
293 (gfx_level >= GFX10 && (binary[pos] & 0xffff8000) == 0xd76d8000) || /* v_add3_u32 + clamp */
294 (gfx_level == GFX9 && (binary[pos] & 0xffff8000) == 0xd1ff8000)) /* v_add3_u32 + clamp */) {
296 bool has_literal = gfx_level >= GFX10 && (((binary[pos + 1] & 0x1ff) == 0xff) ||
297 (((binary[pos + 1] >> 9) & 0x1ff) == 0xff));
299 } else if (gfx_level >= GFX10 && l == 4 && ((binary[pos] & 0xfe0001ff) == 0x020000f9)) {
317 } else if (gfx_level == GFX9 && (binary[pos] & 0xfc024000) == 0xc0024000) {
325 snprintf(outline + len, outline_size - len, " s%u offset:%s", binary[pos + 1] >> 25, imm);
326 } else if (gfx_level >= GFX10 && (binary[pos] & 0xfc000000) == 0xf4000000 &&
327 (binary[pos + 1] & 0xfe000000) != 0xfa000000) {
329 uint32_t offset = binary[pos + 1] & 0x1fffff;
341 print_asm_llvm(Program* program, std::vector<uint32_t>& binary, unsigned exec_size, FILE* output)
378 memcmp(&binary[prev_pos], &binary[pos], prev_size * 4) == 0) {
391 std::pair<bool, size_t> res = disasm_instr(program->gfx_level, disasm, binary.data(),
395 print_instr(output, binary, outline, res.second, pos);
435 /* Check if CLRX disassembler binary is available and can disassemble the program */
445 print_asm(Program* program, std::vector<uint32_t>& binary, unsigned exec_size, FILE* output)
449 return print_asm_llvm(program, binary, exec_size, output);
453 return print_asm_clrx(program, binary, exec_size, output);