MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / decode_iclass_dp_2src

Function decode_iclass_dp_2src

arch/arm64/disassembler/decode1.c:1379–1424  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1377}
1378
1379int decode_iclass_dp_2src(context *ctx, Instruction *dec)
1380{
1381 uint32_t sf=INSWORD>>31, S=(INSWORD>>29)&1, opcode=(INSWORD>>10)&0x3f;
1382 if(!sf && !S && opcode==2) return UDIV(ctx, dec); // -> UDIV_32_dp_2src
1383 if(!sf && !S && opcode==3) return SDIV(ctx, dec); // -> SDIV_32_dp_2src
1384 if(!sf && !S && opcode==8) return LSLV(ctx, dec); // -> LSLV_32_dp_2src
1385 if(!sf && !S && opcode==9) return LSRV(ctx, dec); // -> LSRV_32_dp_2src
1386 if(!sf && !S && opcode==10) return ASRV(ctx, dec); // -> ASRV_32_dp_2src
1387 if(!sf && !S && opcode==11) return RORV(ctx, dec); // -> RORV_32_dp_2src
1388 if(!sf && !S && opcode==12) UNALLOCATED(ENC_UNALLOCATED_36_DP_2SRC);
1389 if(!sf && !S && opcode==0x10) return CRC32(ctx, dec); // -> CRC32B_32C_dp_2src
1390 if(!sf && !S && opcode==0x11) return CRC32(ctx, dec); // -> CRC32H_32C_dp_2src
1391 if(!sf && !S && opcode==0x12) return CRC32(ctx, dec); // -> CRC32W_32C_dp_2src
1392 if(!sf && !S && opcode==0x14) return CRC32C(ctx, dec); // -> CRC32CB_32C_dp_2src
1393 if(!sf && !S && opcode==0x15) return CRC32C(ctx, dec); // -> CRC32CH_32C_dp_2src
1394 if(!sf && !S && opcode==0x16) return CRC32C(ctx, dec); // -> CRC32CW_32C_dp_2src
1395 if(sf && !S && !opcode && HasMTE()) return SUBP(ctx, dec); // -> SUBP_64S_dp_2src
1396 if(sf && !S && opcode==2) return UDIV(ctx, dec); // -> UDIV_64_dp_2src
1397 if(sf && !S && opcode==3) return SDIV(ctx, dec); // -> SDIV_64_dp_2src
1398 if(sf && !S && opcode==4 && HasMTE()) return IRG(ctx, dec); // -> IRG_64I_dp_2src
1399 if(sf && !S && opcode==5 && HasMTE()) return GMI(ctx, dec); // -> GMI_64G_dp_2src
1400 if(sf && !S && opcode==8) return LSLV(ctx, dec); // -> LSLV_64_dp_2src
1401 if(sf && !S && opcode==9) return LSRV(ctx, dec); // -> LSRV_64_dp_2src
1402 if(sf && !S && opcode==10) return ASRV(ctx, dec); // -> ASRV_64_dp_2src
1403 if(sf && !S && opcode==11) return RORV(ctx, dec); // -> RORV_64_dp_2src
1404 if(sf && !S && opcode==12 && HasPAuth()) return PACGA(ctx, dec); // -> PACGA_64P_dp_2src
1405 if(sf && !S && opcode==0x13) return CRC32(ctx, dec); // -> CRC32X_64C_dp_2src
1406 if(sf && !S && opcode==0x17) return CRC32C(ctx, dec); // -> CRC32CX_64C_dp_2src
1407 if(sf && S && !opcode && HasMTE()) return SUBPS(ctx, dec); // -> SUBPS_64S_dp_2src
1408 if(!S && opcode==13) UNALLOCATED(ENC_UNALLOCATED_34_DP_2SRC);
1409 if(!sf && !opcode) UNALLOCATED(ENC_UNALLOCATED_11_DP_2SRC);
1410 if(!sf && !S && (opcode&0x3e)==4) UNALLOCATED(ENC_UNALLOCATED_21_DP_2SRC);
1411 if(!sf && !S && (opcode&0x3b)==0x13) UNALLOCATED(ENC_UNALLOCATED_47_DP_2SRC);
1412 if(opcode==1) UNALLOCATED(ENC_UNALLOCATED_14_DP_2SRC);
1413 if(!S && (opcode&0x3e)==6) UNALLOCATED(ENC_UNALLOCATED_24_DP_2SRC);
1414 if(!S && (opcode&0x3e)==14) UNALLOCATED(ENC_UNALLOCATED_35_DP_2SRC);
1415 if(S && (opcode&0x3e)==2) UNALLOCATED(ENC_UNALLOCATED_15_DP_2SRC);
1416 if(sf && !S && (opcode&0x39)==0x10) UNALLOCATED(ENC_UNALLOCATED_49_DP_2SRC);
1417 if(sf && !S && (opcode&0x3a)==0x10) UNALLOCATED(ENC_UNALLOCATED_48_DP_2SRC);
1418 if(S && (opcode&0x3c)==4) UNALLOCATED(ENC_UNALLOCATED_20_DP_2SRC);
1419 if(S && (opcode&0x38)==8) UNALLOCATED(ENC_UNALLOCATED_25_DP_2SRC);
1420 if((opcode&0x38)==0x18) UNALLOCATED(ENC_UNALLOCATED_50_DP_2SRC);
1421 if(S && (opcode&0x30)==0x10) UNALLOCATED(ENC_UNALLOCATED_38_DP_2SRC);
1422 if((opcode&0x20)==0x20) UNALLOCATED(ENC_UNALLOCATED_51_DP_2SRC);
1423 UNMATCHED;
1424}
1425
1426int decode_iclass_dp_3src(context *ctx, Instruction *dec)
1427{

Callers 1

decode_specFunction · 0.85

Calls 13

UDIVFunction · 0.85
SDIVFunction · 0.85
LSLVFunction · 0.85
LSRVFunction · 0.85
ASRVFunction · 0.85
RORVFunction · 0.85
CRC32Function · 0.85
CRC32CFunction · 0.85
SUBPFunction · 0.85
IRGFunction · 0.85
GMIFunction · 0.85
PACGAFunction · 0.85

Tested by

no test coverage detected