| 2843 | } |
| 2844 | |
| 2845 | int decode_iclass_floatimm(context *ctx, Instruction *dec) |
| 2846 | { |
| 2847 | uint32_t M=INSWORD>>31, S=(INSWORD>>29)&1, ptype=(INSWORD>>22)&3, imm5=(INSWORD>>5)&0x1f; |
| 2848 | if(!M && !S && !ptype && !imm5) return FMOV_float_imm(ctx, dec); // -> FMOV_S_floatimm |
| 2849 | if(!M && !S && ptype==1 && !imm5) return FMOV_float_imm(ctx, dec); // -> FMOV_D_floatimm |
| 2850 | if(!M && !S && ptype==3 && !imm5 && HasFP16()) return FMOV_float_imm(ctx, dec); // -> FMOV_H_floatimm |
| 2851 | if(ptype==2) UNALLOCATED(ENC_UNALLOCATED_17_FLOATIMM); |
| 2852 | if(imm5&1) UNALLOCATED(ENC_UNALLOCATED_10_FLOATIMM); |
| 2853 | if((imm5&2)==2) UNALLOCATED(ENC_UNALLOCATED_11_FLOATIMM); |
| 2854 | if((imm5&4)==4) UNALLOCATED(ENC_UNALLOCATED_12_FLOATIMM); |
| 2855 | if((imm5&8)==8) UNALLOCATED(ENC_UNALLOCATED_13_FLOATIMM); |
| 2856 | if((imm5&0x10)==0x10) UNALLOCATED(ENC_UNALLOCATED_14_FLOATIMM); |
| 2857 | if(S) UNALLOCATED(ENC_UNALLOCATED_15_FLOATIMM); |
| 2858 | if(M) UNALLOCATED(ENC_UNALLOCATED_16_FLOATIMM); |
| 2859 | UNMATCHED; |
| 2860 | } |
| 2861 | |
| 2862 | int decode_iclass_perm_undef(context *ctx, Instruction *dec) |
| 2863 | { |
no test coverage detected