pacia.xml */
| 18972 | |
| 18973 | /* pacia.xml */ |
| 18974 | int PACIA(context *ctx, Instruction *instr) |
| 18975 | { |
| 18976 | int rc = DECODE_STATUS_UNMATCHED; |
| 18977 | /* class iclass_general */ |
| 18978 | /* sf=1|1|S=0|11010110|opcode2=00001|opcode[5]=0|opcode[4]=0|Z=x|opcode[2:0]=000|Rn=xxxxx|Rd=xxxxx */ |
| 18979 | if((INSWORD & 0xFFFFDC00)==0xDAC10000) { |
| 18980 | decode_fields32(ENC_PACIA_64P_DP_1SRC, ctx, instr); |
| 18981 | ctx->source_is_sp = FALSE; |
| 18982 | ctx->d = UINT(ctx->Rd); |
| 18983 | ctx->n = UINT(ctx->Rn); |
| 18984 | if(!HavePACExt()) { |
| 18985 | UNDEFINED; |
| 18986 | } |
| 18987 | if(ctx->Z==0) { |
| 18988 | if(ctx->n==0x1f) { |
| 18989 | ctx->source_is_sp = TRUE; |
| 18990 | } |
| 18991 | } |
| 18992 | else { |
| 18993 | if(ctx->n!=0x1f) { |
| 18994 | UNDEFINED; |
| 18995 | } |
| 18996 | } |
| 18997 | if(ctx->Z==0) OK(ENC_PACIA_64P_DP_1SRC); |
| 18998 | if(ctx->Z==1 && ctx->Rn==0x1f) OK(ENC_PACIZA_64Z_DP_1SRC); |
| 18999 | } |
| 19000 | /* class iclass_system */ |
| 19001 | /* 1101010100|L=0|op0=00|op1=011|CRn=0010|CRm=00x1|op2=00x|Rt=11111 */ |
| 19002 | if((INSWORD & 0xFFFFFDDF)==0xD503211F) { |
| 19003 | decode_fields32(ENC_PACIA1716_HI_HINTS, ctx, instr); |
| 19004 | ctx->source_is_sp = FALSE; |
| 19005 | if(((ctx->CRm<<3)|ctx->op2)==0x18) { |
| 19006 | ctx->d = 0x1e; |
| 19007 | ctx->n = 0x1f; |
| 19008 | } |
| 19009 | else if(((ctx->CRm<<3)|ctx->op2)==0x19) { |
| 19010 | ctx->d = 0x1e; |
| 19011 | ctx->source_is_sp = TRUE; |
| 19012 | if(HaveBTIExt()) { |
| 19013 | SetBTypeCompatible(BTypeCompatible_PACIXSP()); |
| 19014 | } |
| 19015 | } |
| 19016 | else if(((ctx->CRm<<3)|ctx->op2)==8) { |
| 19017 | ctx->d = 0x11; |
| 19018 | ctx->n = 0x10; |
| 19019 | } |
| 19020 | else if(((ctx->CRm<<3)|ctx->op2)==10) { |
| 19021 | SEE /* PACIB */; |
| 19022 | } |
| 19023 | else if(((ctx->CRm<<3)|ctx->op2)==12) { |
| 19024 | SEE /* AUTIA */; |
| 19025 | } |
| 19026 | else if(((ctx->CRm<<3)|ctx->op2)==14) { |
| 19027 | SEE /* AUTIB */; |
| 19028 | } |
| 19029 | else if((((ctx->CRm<<3)|ctx->op2)&0x7e)==0x1a) { |
| 19030 | SEE /* PACIB */; |
| 19031 | } |
no test coverage detected