| 2783 | } |
| 2784 | |
| 2785 | int 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 | |
| 2824 | int decode_iclass_floatdp3(context *ctx, Instruction *dec) |
| 2825 | { |
no test coverage detected