| 2822 | } |
| 2823 | |
| 2824 | int decode_iclass_floatdp3(context *ctx, Instruction *dec) |
| 2825 | { |
| 2826 | uint32_t M=INSWORD>>31, S=(INSWORD>>29)&1, ptype=(INSWORD>>22)&3, o1=(INSWORD>>21)&1, o0=(INSWORD>>15)&1; |
| 2827 | if(!M && !S && !ptype && !o1 && !o0) return FMADD_float(ctx, dec); // -> FMADD_S_floatdp3 |
| 2828 | if(!M && !S && !ptype && !o1 && o0) return FMSUB_float(ctx, dec); // -> FMSUB_S_floatdp3 |
| 2829 | if(!M && !S && !ptype && o1 && !o0) return FNMADD_float(ctx, dec); // -> FNMADD_S_floatdp3 |
| 2830 | if(!M && !S && !ptype && o1 && o0) return FNMSUB_float(ctx, dec); // -> FNMSUB_S_floatdp3 |
| 2831 | if(!M && !S && ptype==1 && !o1 && !o0) return FMADD_float(ctx, dec); // -> FMADD_D_floatdp3 |
| 2832 | if(!M && !S && ptype==1 && !o1 && o0) return FMSUB_float(ctx, dec); // -> FMSUB_D_floatdp3 |
| 2833 | if(!M && !S && ptype==1 && o1 && !o0) return FNMADD_float(ctx, dec); // -> FNMADD_D_floatdp3 |
| 2834 | if(!M && !S && ptype==1 && o1 && o0) return FNMSUB_float(ctx, dec); // -> FNMSUB_D_floatdp3 |
| 2835 | if(!M && !S && ptype==3 && !o1 && !o0 && HasFP16()) return FMADD_float(ctx, dec); // -> FMADD_H_floatdp3 |
| 2836 | if(!M && !S && ptype==3 && !o1 && o0 && HasFP16()) return FMSUB_float(ctx, dec); // -> FMSUB_H_floatdp3 |
| 2837 | if(!M && !S && ptype==3 && o1 && !o0 && HasFP16()) return FNMADD_float(ctx, dec); // -> FNMADD_H_floatdp3 |
| 2838 | if(!M && !S && ptype==3 && o1 && o0 && HasFP16()) return FNMSUB_float(ctx, dec); // -> FNMSUB_H_floatdp3 |
| 2839 | if(ptype==2) UNALLOCATED(ENC_UNALLOCATED_10_FLOATDP3); |
| 2840 | if(S) UNALLOCATED(ENC_UNALLOCATED_12_FLOATDP3); |
| 2841 | if(M) UNALLOCATED(ENC_UNALLOCATED_11_FLOATDP3); |
| 2842 | UNMATCHED; |
| 2843 | } |
| 2844 | |
| 2845 | int decode_iclass_floatimm(context *ctx, Instruction *dec) |
| 2846 | { |
no test coverage detected