casb.xml */
| 1873 | |
| 1874 | /* casb.xml */ |
| 1875 | int CASB(context *ctx, Instruction *instr) |
| 1876 | { |
| 1877 | int rc = DECODE_STATUS_UNMATCHED; |
| 1878 | /* class iclass_base_register */ |
| 1879 | /* size=00|0010001|L=x|1|Rs=xxxxx|o0=x|Rt2=11111|Rn=xxxxx|Rt=xxxxx */ |
| 1880 | if((INSWORD & 0xFFA07C00)==0x8A07C00) { |
| 1881 | decode_fields32(ENC_CASAB_C32_COMSWAP, ctx, instr); |
| 1882 | if(!HaveAtomicExt()) { |
| 1883 | UNDEFINED; |
| 1884 | } |
| 1885 | ctx->n = UINT(ctx->Rn); |
| 1886 | ctx->t = UINT(ctx->Rt); |
| 1887 | ctx->s = UINT(ctx->Rs); |
| 1888 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 1889 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 1890 | ctx->ldacctype = (ctx->L==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 1891 | ctx->stacctype = (ctx->o0==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 1892 | ctx->tag_checked = ctx->n!=0x1f; |
| 1893 | if(ctx->L==1 && ctx->o0==0) OK(ENC_CASAB_C32_COMSWAP); |
| 1894 | if(ctx->L==1 && ctx->o0==1) OK(ENC_CASALB_C32_COMSWAP); |
| 1895 | if(ctx->L==0 && ctx->o0==0) OK(ENC_CASB_C32_COMSWAP); |
| 1896 | if(ctx->L==0 && ctx->o0==1) OK(ENC_CASLB_C32_COMSWAP); |
| 1897 | } |
| 1898 | return rc; |
| 1899 | } |
| 1900 | |
| 1901 | /* cash.xml */ |
| 1902 | int CASH(context *ctx, Instruction *instr) |
no test coverage detected