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

Function decode_iclass_floatdp2

arch/arm64/disassembler/decode1.c:2785–2822  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2783}
2784
2785int decode_iclass_floatdp2(context *ctx, Instruction *dec)
2786{
2787 uint32_t M=INSWORD>>31, S=(INSWORD>>29)&1, ptype=(INSWORD>>22)&3, opcode=(INSWORD>>12)&15;
2788 if(!M && !S && !ptype && !opcode) return FMUL_float(ctx, dec); // -> FMUL_S_floatdp2
2789 if(!M && !S && !ptype && opcode==1) return FDIV_float(ctx, dec); // -> FDIV_S_floatdp2
2790 if(!M && !S && !ptype && opcode==2) return FADD_float(ctx, dec); // -> FADD_S_floatdp2
2791 if(!M && !S && !ptype && opcode==3) return FSUB_float(ctx, dec); // -> FSUB_S_floatdp2
2792 if(!M && !S && !ptype && opcode==4) return FMAX_float(ctx, dec); // -> FMAX_S_floatdp2
2793 if(!M && !S && !ptype && opcode==5) return FMIN_float(ctx, dec); // -> FMIN_S_floatdp2
2794 if(!M && !S && !ptype && opcode==6) return FMAXNM_float(ctx, dec); // -> FMAXNM_S_floatdp2
2795 if(!M && !S && !ptype && opcode==7) return FMINNM_float(ctx, dec); // -> FMINNM_S_floatdp2
2796 if(!M && !S && !ptype && opcode==8) return FNMUL_float(ctx, dec); // -> FNMUL_S_floatdp2
2797 if(!M && !S && ptype==1 && !opcode) return FMUL_float(ctx, dec); // -> FMUL_D_floatdp2
2798 if(!M && !S && ptype==1 && opcode==1) return FDIV_float(ctx, dec); // -> FDIV_D_floatdp2
2799 if(!M && !S && ptype==1 && opcode==2) return FADD_float(ctx, dec); // -> FADD_D_floatdp2
2800 if(!M && !S && ptype==1 && opcode==3) return FSUB_float(ctx, dec); // -> FSUB_D_floatdp2
2801 if(!M && !S && ptype==1 && opcode==4) return FMAX_float(ctx, dec); // -> FMAX_D_floatdp2
2802 if(!M && !S && ptype==1 && opcode==5) return FMIN_float(ctx, dec); // -> FMIN_D_floatdp2
2803 if(!M && !S && ptype==1 && opcode==6) return FMAXNM_float(ctx, dec); // -> FMAXNM_D_floatdp2
2804 if(!M && !S && ptype==1 && opcode==7) return FMINNM_float(ctx, dec); // -> FMINNM_D_floatdp2
2805 if(!M && !S && ptype==1 && opcode==8) return FNMUL_float(ctx, dec); // -> FNMUL_D_floatdp2
2806 if(!M && !S && ptype==3 && !opcode && HasFP16()) return FMUL_float(ctx, dec); // -> FMUL_H_floatdp2
2807 if(!M && !S && ptype==3 && opcode==1 && HasFP16()) return FDIV_float(ctx, dec); // -> FDIV_H_floatdp2
2808 if(!M && !S && ptype==3 && opcode==2 && HasFP16()) return FADD_float(ctx, dec); // -> FADD_H_floatdp2
2809 if(!M && !S && ptype==3 && opcode==3 && HasFP16()) return FSUB_float(ctx, dec); // -> FSUB_H_floatdp2
2810 if(!M && !S && ptype==3 && opcode==4 && HasFP16()) return FMAX_float(ctx, dec); // -> FMAX_H_floatdp2
2811 if(!M && !S && ptype==3 && opcode==5 && HasFP16()) return FMIN_float(ctx, dec); // -> FMIN_H_floatdp2
2812 if(!M && !S && ptype==3 && opcode==6 && HasFP16()) return FMAXNM_float(ctx, dec); // -> FMAXNM_H_floatdp2
2813 if(!M && !S && ptype==3 && opcode==7 && HasFP16()) return FMINNM_float(ctx, dec); // -> FMINNM_H_floatdp2
2814 if(!M && !S && ptype==3 && opcode==8 && HasFP16()) return FNMUL_float(ctx, dec); // -> FNMUL_H_floatdp2
2815 if((opcode&9)==9) UNALLOCATED(ENC_UNALLOCATED_13_FLOATDP2);
2816 if((opcode&10)==10) UNALLOCATED(ENC_UNALLOCATED_14_FLOATDP2);
2817 if((opcode&12)==12) UNALLOCATED(ENC_UNALLOCATED_15_FLOATDP2);
2818 if(ptype==2) UNALLOCATED(ENC_UNALLOCATED_10_FLOATDP2);
2819 if(S) UNALLOCATED(ENC_UNALLOCATED_11_FLOATDP2);
2820 if(M) UNALLOCATED(ENC_UNALLOCATED_12_FLOATDP2);
2821 UNMATCHED;
2822}
2823
2824int decode_iclass_floatdp3(context *ctx, Instruction *dec)
2825{

Callers 1

decode_specFunction · 0.85

Calls 9

FMUL_floatFunction · 0.85
FDIV_floatFunction · 0.85
FADD_floatFunction · 0.85
FSUB_floatFunction · 0.85
FMAX_floatFunction · 0.85
FMIN_floatFunction · 0.85
FMAXNM_floatFunction · 0.85
FMINNM_floatFunction · 0.85
FNMUL_floatFunction · 0.85

Tested by

no test coverage detected