| 414 | } |
| 415 | |
| 416 | uint32_t get_sme_tile(const InstructionOperand *operand, char *outBuffer, uint32_t outBufferSize) |
| 417 | { |
| 418 | char base_offset[32] = {'\0'}; |
| 419 | if(operand->reg[0] != REG_NONE) { |
| 420 | if(operand->arrSpec == ARRSPEC_FULL) |
| 421 | snprintf(base_offset, sizeof(base_offset), "[%s]", get_register_name(operand->reg[0])); |
| 422 | else |
| 423 | snprintf(base_offset, sizeof(base_offset), "[%s, #%" PRIu64 "]", get_register_name(operand->reg[0]), operand->immediate); |
| 424 | } |
| 425 | |
| 426 | char *slice = ""; |
| 427 | if(operand->slice == SLICE_HORIZONTAL) |
| 428 | slice = "H"; |
| 429 | else if(operand->slice == SLICE_VERTICAL) |
| 430 | slice = "V"; |
| 431 | |
| 432 | if(snprintf(outBuffer, outBufferSize, "Z%d%s%s%s", |
| 433 | operand->tile, |
| 434 | slice, |
| 435 | get_arrspec_str_truncated(operand->arrSpec), |
| 436 | base_offset |
| 437 | ) >= outBufferSize) |
| 438 | return FAILED_TO_DISASSEMBLE_OPERAND; |
| 439 | |
| 440 | return DISASM_SUCCESS; |
| 441 | } |
| 442 | |
| 443 | uint32_t get_indexed_element(const InstructionOperand *operand, char *outBuffer, uint32_t outBufferSize) |
| 444 | { |
no test coverage detected