qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 4/8] target/mips: Avoid case statements formu


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH v3 4/8] target/mips: Avoid case statements formulated by ranges
Date: Thu, 5 Jul 2018 12:23:35 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0


On 07/04/2018 05:28 PM, Philippe Mathieu-Daudé wrote:
> On 07/04/2018 04:30 PM, Aleksandar Markovic wrote:
>> From: Aleksandar Markovic <address@hidden>
>>
>> Remove "range style" case statements to make code analysis easier.
> Why not...
> 
>>
>> This is needed also for some upcoming nanoMIPS-related refactorings.
>>
>> Signed-off-by: Aleksandar Markovic <address@hidden>
>> ---
>>  target/mips/translate.c | 257 
>> +++++++++++++++++++++++++++++++++++++++---------
>>  1 file changed, 208 insertions(+), 49 deletions(-)
>>
>> diff --git a/target/mips/translate.c b/target/mips/translate.c
>> index 20b43c0..88699ae 100644
>> --- a/target/mips/translate.c
>> +++ b/target/mips/translate.c
>> @@ -5494,7 +5494,14 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>          break;
>>      case 18:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_1e0i(mfc0_watchlo, arg, sel);
>>              rn = "WatchLo";
>>              break;
>> @@ -5504,7 +5511,14 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>          break;
>>      case 19:
>>          switch (sel) {
>> -        case 0 ...7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_1e0i(mfc0_watchhi, arg, sel);
>>              rn = "WatchHi";
>>              break;
>> @@ -5630,7 +5644,10 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>          break;
>>      case 27:
>>          switch (sel) {
>> -        case 0 ... 3:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>>              tcg_gen_movi_tl(arg, 0); /* unimplemented */
>>              rn = "CacheErr";
>>              break;
>> @@ -5701,7 +5718,12 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>              gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
>>              rn = "DESAVE";
>>              break;
>> -        case 2 ... 7:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              CP0_CHECK(ctx->kscrexist & (1 << sel));
>>              tcg_gen_ld_tl(arg, cpu_env,
>>                            offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
>> @@ -6167,7 +6189,14 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>          break;
>>      case 18:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_0e1i(mtc0_watchlo, arg, sel);
>>              rn = "WatchLo";
>>              break;
>> @@ -6177,7 +6206,14 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>          break;
>>      case 19:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_0e1i(mtc0_watchhi, arg, sel);
>>              rn = "WatchHi";
>>              break;
>> @@ -6315,7 +6351,10 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>          break;
>>      case 27:
>>          switch (sel) {
>> -        case 0 ... 3:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>>              /* ignored */
>>              rn = "CacheErr";
>>              break;
>> @@ -6381,7 +6420,12 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int 
>> reg, int sel)
>>              gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
>>              rn = "DESAVE";
>>              break;
>> -        case 2 ... 7:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              CP0_CHECK(ctx->kscrexist & (1 << sel));
>>              tcg_gen_st_tl(arg, cpu_env,
>>                            offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
>> @@ -6842,7 +6886,14 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>          break;
>>      case 18:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_1e0i(dmfc0_watchlo, arg, sel);
>>              rn = "WatchLo";
>>              break;
>> @@ -6852,7 +6903,14 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>          break;
>>      case 19:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_1e0i(mfc0_watchhi, arg, sel);
>>              rn = "WatchHi";
>>              break;
>> @@ -6975,7 +7033,10 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>      case 27:
>>          switch (sel) {
>>          /* ignored */
>> -        case 0 ... 3:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>>              tcg_gen_movi_tl(arg, 0); /* unimplemented */
>>              rn = "CacheErr";
>>              break;
>> @@ -7040,7 +7101,12 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>              gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
>>              rn = "DESAVE";
>>              break;
>> -        case 2 ... 7:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              CP0_CHECK(ctx->kscrexist & (1 << sel));
>>              tcg_gen_ld_tl(arg, cpu_env,
>>                            offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
>> @@ -7497,7 +7563,14 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>          break;
>>      case 18:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_0e1i(mtc0_watchlo, arg, sel);
>>              rn = "WatchLo";
>>              break;
>> @@ -7507,7 +7580,14 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>          break;
>>      case 19:
>>          switch (sel) {
>> -        case 0 ... 7:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              gen_helper_0e1i(mtc0_watchhi, arg, sel);
>>              rn = "WatchHi";
>>              break;
>> @@ -7641,7 +7721,10 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>          break;
>>      case 27:
>>          switch (sel) {
>> -        case 0 ... 3:
>> +        case 0:
>> +        case 1:
>> +        case 2:
>> +        case 3:
>>              /* ignored */
>>              rn = "CacheErr";
>>              break;
>> @@ -7707,7 +7790,12 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, 
>> int reg, int sel)
>>              gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
>>              rn = "DESAVE";
>>              break;
>> -        case 2 ... 7:
>> +        case 2:
>> +        case 3:
>> +        case 4:
>> +        case 5:
>> +        case 6:
>> +        case 7:
>>              CP0_CHECK(ctx->kscrexist & (1 << sel));
>>              tcg_gen_st_tl(arg, cpu_env,
>>                            offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
>> @@ -7843,7 +7931,14 @@ static void gen_mftr(CPUMIPSState *env, DisasContext 
>> *ctx, int rt, int rd,
>>              break;
>>          case 16:
>>              switch (sel) {
>> -            case 0 ... 7:
>> +            case 0:
>> +            case 1:
>> +            case 2:
>> +            case 3:
>> +            case 4:
>> +            case 5:
>> +            case 6:
>> +            case 7:
>>                  gen_helper_mftc0_configx(t0, cpu_env, tcg_const_tl(sel));
>>                  break;
>>              default:
>> @@ -17231,7 +17326,10 @@ static void decode_opc_special_r6(CPUMIPSState 
>> *env, DisasContext *ctx)
>>      case OPC_LSA:
>>          gen_lsa(ctx, op1, rd, rs, rt, extract32(ctx->opcode, 6, 2));
>>          break;
>> -    case OPC_MULT ... OPC_DIVU:
>> +    case OPC_MULT:
>> +    case OPC_MULTU:
>> +    case OPC_DIV:
>> +    case OPC_DIVU:
>>          op2 = MASK_R6_MULDIV(ctx->opcode);
>>          switch (op2) {
>>          case R6_OPC_MUL:
>> @@ -17291,7 +17389,15 @@ static void decode_opc_special_r6(CPUMIPSState 
>> *env, DisasContext *ctx)
>>              generate_exception_end(ctx, EXCP_RI);
>>          }
>>          break;
>> -    case OPC_DMULT ... OPC_DDIVU:
>> +    case OPC_DMULT:
>> +    case OPC_DMULTU:

Watch out here this part <...

>> +    case OPC_DIV:
>> +    case OPC_DIVU:
>> +    case OPC_DMULT:
>> +    case OPC_DMULTU:

...> looks like a failed copy/pasting.
Simply remove it in your v4.

>> +    case OPC_DDIV:
>> +    case OPC_DDIVU:
> 
>> +
> 
> extra line?
> 
>>          op2 = MASK_R6_MULDIV(ctx->opcode);
>>          switch (op2) {
>>          case R6_OPC_DMUL:
>> @@ -17370,7 +17476,14 @@ static void decode_opc_special_legacy(CPUMIPSState 
>> *env, DisasContext *ctx)
>>          gen_muldiv(ctx, op1, 0, rs, rt);
>>          break;
>>  #if defined(TARGET_MIPS64)
>> -    case OPC_DMULT ... OPC_DDIVU:
>> +    case OPC_DMULT:
>> +    case OPC_DMULTU:

<...

>> +    case OPC_DIV:
>> +    case OPC_DIVU:
>> +    case OPC_DMULT:
>> +    case OPC_DMULTU:

...> Ditto.

>> +    case OPC_DDIV:
>> +    case OPC_DDIVU:
>>          check_insn(ctx, ISA_MIPS3);
>>          check_mips_64(ctx);
>>          gen_muldiv(ctx, op1, 0, rs, rt);
>> @@ -17437,7 +17550,10 @@ static void decode_opc_special(CPUMIPSState *env, 
>> DisasContext *ctx)
>>              break;
>>          }
>>          break;
>> -    case OPC_ADD ... OPC_SUBU:
>> +    case OPC_ADD:
>> +    case OPC_ADDU:
>> +    case OPC_SUB:
>> +    case OPC_SUBU:
>>          gen_arith(ctx, op1, rd, rs, rt);
>>          break;
>>      case OPC_SLLV:         /* Shifts */
>> @@ -17473,7 +17589,11 @@ static void decode_opc_special(CPUMIPSState *env, 
>> DisasContext *ctx)
>>      case OPC_JALR:
>>          gen_compute_branch(ctx, op1, 4, rs, rd, sa, 4);
>>          break;
>> -    case OPC_TGE ... OPC_TEQ: /* Traps */
>> +    case OPC_TGE: /* Traps */
>> +    case OPC_TGEU:
>> +    case OPC_TLT:
>> +    case OPC_TLTU:
>> +    case OPC_TEQ:
>>      case OPC_TNE:
>>          check_insn(ctx, ISA_MIPS2);
>>          gen_trap(ctx, op1, rs, rt, -1);
>> @@ -17549,7 +17669,10 @@ static void decode_opc_special(CPUMIPSState *env, 
>> DisasContext *ctx)
>>              break;
>>          }
>>          break;
>> -    case OPC_DADD ... OPC_DSUBU:
>> +    case OPC_DADD:
>> +    case OPC_DADDU:
>> +    case OPC_DSUB:
>> +    case OPC_DSUBU:
>>          check_insn(ctx, ISA_MIPS3);
>>          check_mips_64(ctx);
>>          gen_arith(ctx, op1, rd, rs, rt);
>> @@ -17607,8 +17730,10 @@ static void decode_opc_special2_legacy(CPUMIPSState 
>> *env, DisasContext *ctx)
>>  
>>      op1 = MASK_SPECIAL2(ctx->opcode);
>>      switch (op1) {
>> -    case OPC_MADD ... OPC_MADDU: /* Multiply and add/sub */
>> -    case OPC_MSUB ... OPC_MSUBU:
>> +    case OPC_MADD: /* Multiply and add/sub */
> 
> Now the comment would be /* Multiply and add */
> 
>> +    case OPC_MADDU:
>> +    case OPC_MSUB:
> 
> and here /* Multiply and sub */.
> 
>> +    case OPC_MSUBU:
>>          check_insn(ctx, ISA_MIPS32);
>>          gen_muldiv(ctx, op1, rd & 3, rs, rt);
>>          break;
>> @@ -17705,7 +17830,8 @@ static void decode_opc_special3_r6(CPUMIPSState 
>> *env, DisasContext *ctx)
>>              }
>>              op2 = MASK_BSHFL(ctx->opcode);
>>              switch (op2) {
>> -            case OPC_ALIGN ... OPC_ALIGN_END:
>> +            case OPC_ALIGN:
>> +            case OPC_ALIGN_END:
>>                  gen_align(ctx, OPC_ALIGN, rd, rs, rt, sa & 3);
>>                  break;
>>              case OPC_BITSWAP:
>> @@ -17730,7 +17856,8 @@ static void decode_opc_special3_r6(CPUMIPSState 
>> *env, DisasContext *ctx)
>>              }
>>              op2 = MASK_DBSHFL(ctx->opcode);
>>              switch (op2) {
>> -            case OPC_DALIGN ... OPC_DALIGN_END:
>> +            case OPC_DALIGN:
>> +            case OPC_DALIGN_END:
>>                  gen_align(ctx, OPC_DALIGN, rd, rs, rt, sa & 7);
>>                  break;
>>              case OPC_DBITSWAP:
>> @@ -17759,9 +17886,12 @@ static void decode_opc_special3_legacy(CPUMIPSState 
>> *env, DisasContext *ctx)
>>  
>>      op1 = MASK_SPECIAL3(ctx->opcode);
>>      switch (op1) {
>> -    case OPC_DIV_G_2E ... OPC_DIVU_G_2E:
>> -    case OPC_MOD_G_2E ... OPC_MODU_G_2E:
>> -    case OPC_MULT_G_2E ... OPC_MULTU_G_2E:
>> +    case OPC_DIV_G_2E:
>> +    case OPC_DIVU_G_2E:
>> +    case OPC_MOD_G_2E:
>> +    case OPC_MODU_G_2E:
>> +    case OPC_MULT_G_2E:
>> +    case OPC_MULTU_G_2E:
>>          /* OPC_MULT_G_2E, OPC_ADDUH_QB_DSP, OPC_MUL_PH_DSP have
>>           * the same mask and op1. */
>>          if ((ctx->insn_flags & ASE_DSPR2) && (op1 == OPC_MULT_G_2E)) {
>> @@ -18025,9 +18155,12 @@ static void decode_opc_special3_legacy(CPUMIPSState 
>> *env, DisasContext *ctx)
>>          }
>>          break;
>>  #if defined(TARGET_MIPS64)
>> -    case OPC_DDIV_G_2E ... OPC_DDIVU_G_2E:
>> -    case OPC_DMULT_G_2E ... OPC_DMULTU_G_2E:
>> -    case OPC_DMOD_G_2E ... OPC_DMODU_G_2E:
>> +    case OPC_DDIV_G_2E:
>> +    case OPC_DDIVU_G_2E:
>> +    case OPC_DMULT_G_2E:
>> +    case OPC_DMULTU_G_2E:
>> +    case OPC_DMOD_G_2E:
>> +    case OPC_DMODU_G_2E:
>>          check_insn(ctx, INSN_LOONGSON2E);
>>          gen_loongson_integer(ctx, op1, rd, rs, rt);
>>          break;
>> @@ -18289,18 +18422,25 @@ static void decode_opc_special3(CPUMIPSState *env, 
>> DisasContext *ctx)
>>       */
>>      if (ctx->eva) {
>>          switch (op1) {
>> -        case OPC_LWLE ... OPC_LWRE:
>> +        case OPC_LWLE:
>> +        case OPC_LWRE:
>>              check_insn_opc_removed(ctx, ISA_MIPS32R6);
>>              /* fall through */
>> -        case OPC_LBUE ... OPC_LHUE:
>> -        case OPC_LBE ... OPC_LWE:
>> +        case OPC_LBUE:
>> +        case OPC_LHUE:
>> +        case OPC_LBE:
>> +        case OPC_LHE:
>> +        case OPC_LLE:
>> +        case OPC_LWE:
>>              check_cp0_enabled(ctx);
>>              gen_ld(ctx, op1, rt, rs, imm);
>>              return;
>> -        case OPC_SWLE ... OPC_SWRE:
>> +        case OPC_SWLE:
>> +        case OPC_SWRE:
>>              check_insn_opc_removed(ctx, ISA_MIPS32R6);
>>              /* fall through */
>> -        case OPC_SBE ... OPC_SHE:
>> +        case OPC_SBE:
>> +        case OPC_SHE:
>>          case OPC_SWE:
>>              check_cp0_enabled(ctx);
>>              gen_st(ctx, op1, rt, rs, imm);
>> @@ -18332,7 +18472,8 @@ static void decode_opc_special3(CPUMIPSState *env, 
>> DisasContext *ctx)
>>      case OPC_BSHFL:
>>          op2 = MASK_BSHFL(ctx->opcode);
>>          switch (op2) {
>> -        case OPC_ALIGN ... OPC_ALIGN_END:
>> +        case OPC_ALIGN:
>> +        case OPC_ALIGN_END:
>>          case OPC_BITSWAP:
>>              check_insn(ctx, ISA_MIPS32R6);
>>              decode_opc_special3_r6(env, ctx);
>> @@ -18344,8 +18485,12 @@ static void decode_opc_special3(CPUMIPSState *env, 
>> DisasContext *ctx)
>>          }
>>          break;
>>  #if defined(TARGET_MIPS64)
>> -    case OPC_DEXTM ... OPC_DEXT:
>> -    case OPC_DINSM ... OPC_DINS:
>> +    case OPC_DEXTM:
>> +    case OPC_DEXTU:
>> +    case OPC_DEXT:
>> +    case OPC_DINSM:
>> +    case OPC_DINSU:
>> +    case OPC_DINS:
>>          check_insn(ctx, ISA_MIPS64R2);
>>          check_mips_64(ctx);
>>          gen_bitops(ctx, op1, rt, rs, sa, rd);
>> @@ -18353,7 +18498,8 @@ static void decode_opc_special3(CPUMIPSState *env, 
>> DisasContext *ctx)
>>      case OPC_DBSHFL:
>>          op2 = MASK_DBSHFL(ctx->opcode);
>>          switch (op2) {
>> -        case OPC_DALIGN ... OPC_DALIGN_END:
>> +        case OPC_DALIGN:
>> +        case OPC_DALIGN_END:
>>          case OPC_DBITSWAP:
>>              check_insn(ctx, ISA_MIPS32R6);
>>              decode_opc_special3_r6(env, ctx);
>> @@ -19584,7 +19730,12 @@ static void decode_opc(CPUMIPSState *env, 
>> DisasContext *ctx)
>>                  gen_compute_branch(ctx, op1, 4, rs, -1, imm << 2, 4);
>>              }
>>              break;
>> -        case OPC_TGEI ... OPC_TEQI: /* REGIMM traps */
>> +        case OPC_TGEI: /* REGIMM traps */
>> +        case OPC_TGEIU:
>> +        case OPC_TLTI:
>> +        case OPC_TLTIU:
>> +        case OPC_TEQI:
>> +
>>          case OPC_TNEI:
>>              check_insn(ctx, ISA_MIPS2);
>>              check_insn_opc_removed(ctx, ISA_MIPS32R6);
>> @@ -19759,7 +19910,8 @@ static void decode_opc(CPUMIPSState *env, 
>> DisasContext *ctx)
>>      case OPC_XORI:
>>           gen_logic_imm(ctx, op, rt, rs, imm);
>>           break;
>> -    case OPC_J ... OPC_JAL: /* Jump */
>> +    case OPC_J: /* Jump */
> 
> OK
> 
>> +    case OPC_JAL: /* Jump */
> 
> Maybe we can drop this comment, instead of using /* Jump And Link */.
> 
>>           offset = (int32_t)(ctx->opcode & 0x3FFFFFF) << 2;
>>           gen_compute_branch(ctx, op, 4, rs, rt, offset, 4);
>>           break;
>> @@ -19826,15 +19978,20 @@ static void decode_opc(CPUMIPSState *env, 
>> DisasContext *ctx)
>>      case OPC_LWR:
>>          check_insn_opc_removed(ctx, ISA_MIPS32R6);
>>           /* Fallthrough */
>> -    case OPC_LB ... OPC_LH:
>> -    case OPC_LW ... OPC_LHU:
>> +    case OPC_LB:
>> +    case OPC_LH:
>> +    case OPC_LW:
>> +    case OPC_LWPC:
>> +    case OPC_LBU:
>> +    case OPC_LHU:
>>           gen_ld(ctx, op, rt, rs, imm);
>>           break;
>>      case OPC_SWL:
>>      case OPC_SWR:
>>          check_insn_opc_removed(ctx, ISA_MIPS32R6);
>>          /* fall through */
>> -    case OPC_SB ... OPC_SH:
>> +    case OPC_SB:
>> +    case OPC_SH:
>>      case OPC_SW:
>>           gen_st(ctx, op, rt, rs, imm);
>>           break;
>> @@ -20105,7 +20262,8 @@ static void decode_opc(CPUMIPSState *env, 
>> DisasContext *ctx)
>>  
>>  #if defined(TARGET_MIPS64)
>>      /* MIPS64 opcodes */
>> -    case OPC_LDL ... OPC_LDR:
>> +    case OPC_LDL:
>> +    case OPC_LDR:
>>      case OPC_LLD:
>>          check_insn_opc_removed(ctx, ISA_MIPS32R6);
>>          /* fall through */
>> @@ -20115,7 +20273,8 @@ static void decode_opc(CPUMIPSState *env, 
>> DisasContext *ctx)
>>          check_mips_64(ctx);
>>          gen_ld(ctx, op, rt, rs, imm);
>>          break;
>> -    case OPC_SDL ... OPC_SDR:
>> +    case OPC_SDL:
>> +    case OPC_SDR:
>>          check_insn_opc_removed(ctx, ISA_MIPS32R6);
>>          /* fall through */
>>      case OPC_SD:
>>
> 
> With comments cleanup:
> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]