| 1956 | } |
| 1957 | |
| 1958 | int decode_iclass_asimdshf(context *ctx, Instruction *dec) |
| 1959 | { |
| 1960 | uint32_t U=(INSWORD>>29)&1, opcode=(INSWORD>>11)&0x1f; |
| 1961 | if(!U && !opcode) return SSHR_advsimd(ctx, dec); // -> SSHR_asimdshf_R |
| 1962 | if(!U && opcode==2) return SSRA_advsimd(ctx, dec); // -> SSRA_asimdshf_R |
| 1963 | if(!U && opcode==4) return SRSHR_advsimd(ctx, dec); // -> SRSHR_asimdshf_R |
| 1964 | if(!U && opcode==6) return SRSRA_advsimd(ctx, dec); // -> SRSRA_asimdshf_R |
| 1965 | if(!U && opcode==8) UNALLOCATED(ENC_UNALLOCATED_23_ASIMDSHF); |
| 1966 | if(!U && opcode==10) return SHL_advsimd(ctx, dec); // -> SHL_asimdshf_R |
| 1967 | if(!U && opcode==12) UNALLOCATED(ENC_UNALLOCATED_29_ASIMDSHF); |
| 1968 | if(!U && opcode==14) return SQSHL_advsimd_imm(ctx, dec); // -> SQSHL_asimdshf_R |
| 1969 | if(!U && opcode==0x10) return SHRN_advsimd(ctx, dec); // -> SHRN_asimdshf_N |
| 1970 | if(!U && opcode==0x11) return RSHRN_advsimd(ctx, dec); // -> RSHRN_asimdshf_N |
| 1971 | if(!U && opcode==0x12) return SQSHRN_advsimd(ctx, dec); // -> SQSHRN_asimdshf_N |
| 1972 | if(!U && opcode==0x13) return SQRSHRN_advsimd(ctx, dec); // -> SQRSHRN_asimdshf_N |
| 1973 | if(!U && opcode==0x14) return SSHLL_advsimd(ctx, dec); // -> SSHLL_asimdshf_L |
| 1974 | if(!U && opcode==0x1c) return SCVTF_advsimd_fix(ctx, dec); // -> SCVTF_asimdshf_C |
| 1975 | if(!U && opcode==0x1f) return FCVTZS_advsimd_fix(ctx, dec); // -> FCVTZS_asimdshf_C |
| 1976 | if(U && !opcode) return USHR_advsimd(ctx, dec); // -> USHR_asimdshf_R |
| 1977 | if(U && opcode==2) return USRA_advsimd(ctx, dec); // -> USRA_asimdshf_R |
| 1978 | if(U && opcode==4) return URSHR_advsimd(ctx, dec); // -> URSHR_asimdshf_R |
| 1979 | if(U && opcode==6) return URSRA_advsimd(ctx, dec); // -> URSRA_asimdshf_R |
| 1980 | if(U && opcode==8) return SRI_advsimd(ctx, dec); // -> SRI_asimdshf_R |
| 1981 | if(U && opcode==10) return SLI_advsimd(ctx, dec); // -> SLI_asimdshf_R |
| 1982 | if(U && opcode==12) return SQSHLU_advsimd(ctx, dec); // -> SQSHLU_asimdshf_R |
| 1983 | if(U && opcode==14) return UQSHL_advsimd_imm(ctx, dec); // -> UQSHL_asimdshf_R |
| 1984 | if(U && opcode==0x10) return SQSHRUN_advsimd(ctx, dec); // -> SQSHRUN_asimdshf_N |
| 1985 | if(U && opcode==0x11) return SQRSHRUN_advsimd(ctx, dec); // -> SQRSHRUN_asimdshf_N |
| 1986 | if(U && opcode==0x12) return UQSHRN_advsimd(ctx, dec); // -> UQSHRN_asimdshf_N |
| 1987 | if(U && opcode==0x13) return UQRSHRN_advsimd(ctx, dec); // -> UQRSHRN_asimdshf_N |
| 1988 | if(U && opcode==0x14) return USHLL_advsimd(ctx, dec); // -> USHLL_asimdshf_L |
| 1989 | if(U && opcode==0x1c) return UCVTF_advsimd_fix(ctx, dec); // -> UCVTF_asimdshf_C |
| 1990 | if(U && opcode==0x1f) return FCVTZU_advsimd_fix(ctx, dec); // -> FCVTZU_asimdshf_C |
| 1991 | if(opcode==1) UNALLOCATED(ENC_UNALLOCATED_13_ASIMDSHF); |
| 1992 | if(opcode==3) UNALLOCATED(ENC_UNALLOCATED_16_ASIMDSHF); |
| 1993 | if(opcode==5) UNALLOCATED(ENC_UNALLOCATED_19_ASIMDSHF); |
| 1994 | if(opcode==7) UNALLOCATED(ENC_UNALLOCATED_22_ASIMDSHF); |
| 1995 | if(opcode==9) UNALLOCATED(ENC_UNALLOCATED_25_ASIMDSHF); |
| 1996 | if(opcode==11) UNALLOCATED(ENC_UNALLOCATED_28_ASIMDSHF); |
| 1997 | if(opcode==13) UNALLOCATED(ENC_UNALLOCATED_31_ASIMDSHF); |
| 1998 | if(opcode==15) UNALLOCATED(ENC_UNALLOCATED_34_ASIMDSHF); |
| 1999 | if(opcode==0x15) UNALLOCATED(ENC_UNALLOCATED_45_ASIMDSHF); |
| 2000 | if(opcode==0x1d) UNALLOCATED(ENC_UNALLOCATED_50_ASIMDSHF); |
| 2001 | if(opcode==0x1e) UNALLOCATED(ENC_UNALLOCATED_51_ASIMDSHF); |
| 2002 | if((opcode&0x1e)==0x16) UNALLOCATED(ENC_UNALLOCATED_46_ASIMDSHF); |
| 2003 | if((opcode&0x1c)==0x18) UNALLOCATED(ENC_UNALLOCATED_47_ASIMDSHF); |
| 2004 | UNMATCHED; |
| 2005 | } |
| 2006 | |
| 2007 | int decode_iclass_asimdtbl(context *ctx, Instruction *dec) |
| 2008 | { |
no test coverage detected