cmgt_advsimd_zero.xml */
| 2477 | |
| 2478 | /* cmgt_advsimd_zero.xml */ |
| 2479 | int CMGT_advsimd_zero(context *ctx, Instruction *instr) |
| 2480 | { |
| 2481 | int rc = DECODE_STATUS_UNMATCHED; |
| 2482 | /* class iclass_sisd */ |
| 2483 | /* 01|U=0|11110|size=xx|10000|opcode[4:1]=0100|op=0|10|Rn=xxxxx|Rd=xxxxx */ |
| 2484 | if((INSWORD & 0xFF3FFC00)==0x5E208800) { |
| 2485 | decode_fields32(ENC_CMGT_ASISDMISC_Z, ctx, instr); |
| 2486 | ctx->d = UINT(ctx->Rd); |
| 2487 | ctx->n = UINT(ctx->Rn); |
| 2488 | if(ctx->size!=3) { |
| 2489 | UNDEFINED; |
| 2490 | } |
| 2491 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2492 | ctx->datasize = ctx->esize; |
| 2493 | ctx->elements = 1; |
| 2494 | if(!((ctx->op<<1)|ctx->U)) { |
| 2495 | ctx->comparison = CompareOp_GT; |
| 2496 | } |
| 2497 | else if(((ctx->op<<1)|ctx->U)==1) { |
| 2498 | ctx->comparison = CompareOp_GE; |
| 2499 | } |
| 2500 | else if(((ctx->op<<1)|ctx->U)==2) { |
| 2501 | ctx->comparison = CompareOp_EQ; |
| 2502 | } |
| 2503 | else if(((ctx->op<<1)|ctx->U)==3) { |
| 2504 | ctx->comparison = CompareOp_LE; |
| 2505 | } |
| 2506 | OK(ENC_CMGT_ASISDMISC_Z); |
| 2507 | } |
| 2508 | /* class iclass_simd */ |
| 2509 | /* 0|Q=x|U=0|01110|size=xx|10000|opcode[4:1]=0100|op=0|10|Rn=xxxxx|Rd=xxxxx */ |
| 2510 | if((INSWORD & 0xBF3FFC00)==0xE208800) { |
| 2511 | decode_fields32(ENC_CMGT_ASIMDMISC_Z, ctx, instr); |
| 2512 | ctx->d = UINT(ctx->Rd); |
| 2513 | ctx->n = UINT(ctx->Rn); |
| 2514 | if(((ctx->size<<1)|ctx->Q)==6) { |
| 2515 | UNDEFINED; |
| 2516 | } |
| 2517 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2518 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 2519 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 2520 | if(!((ctx->op<<1)|ctx->U)) { |
| 2521 | ctx->comparison = CompareOp_GT; |
| 2522 | } |
| 2523 | else if(((ctx->op<<1)|ctx->U)==1) { |
| 2524 | ctx->comparison = CompareOp_GE; |
| 2525 | } |
| 2526 | else if(((ctx->op<<1)|ctx->U)==2) { |
| 2527 | ctx->comparison = CompareOp_EQ; |
| 2528 | } |
| 2529 | else if(((ctx->op<<1)|ctx->U)==3) { |
| 2530 | ctx->comparison = CompareOp_LE; |
| 2531 | } |
| 2532 | OK(ENC_CMGT_ASIMDMISC_Z); |
| 2533 | } |
| 2534 | return rc; |
| 2535 | } |
| 2536 |
no test coverage detected