| 1377 | } |
| 1378 | |
| 1379 | int 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 | |
| 1426 | int decode_iclass_dp_3src(context *ctx, Instruction *dec) |
| 1427 | { |
no test coverage detected