bit_width_t src_bit_width()

in libredex/DexOpcode.cpp [177:291]


bit_width_t src_bit_width(DexOpcode op, uint16_t i) {
  switch (dex_opcode::format(op)) {
  case FMT_f00x:
    not_reached();
  case FMT_f10x:
    not_reached();
  case FMT_f12x:
    redex_assert(i == 0);
    return 4;
  case FMT_f12x_2:
    redex_assert(i <= 1);
    return 4;
  case FMT_f11n:
    not_reached();
  case FMT_f11x_d:
    not_reached();
  case FMT_f11x_s:
    redex_assert(i == 0);
    return 8;
  case FMT_f10t:
    not_reached();
  case FMT_f20t:
    not_reached();
  case FMT_f20bc:
    not_reached();
  case FMT_f22x:
    redex_assert(i == 0);
    return 16;
  case FMT_f21t:
    redex_assert(i == 0);
    return 8;
  case FMT_f21s:
    not_reached();
  case FMT_f21h:
    not_reached();
  case FMT_f21c_d:
    not_reached();
  case FMT_f21c_s:
    redex_assert(i == 0);
    return 8;
  case FMT_f23x_d:
    redex_assert(i <= 1);
    return 8;
  case FMT_f23x_s:
    redex_assert(i <= 2);
    return 8;
  case FMT_f22b:
    redex_assert(i == 0);
    return 8;
  case FMT_f22t:
    redex_assert(i <= 1);
    return 4;
  case FMT_f22s:
    redex_assert(i == 0);
    return 4;
  case FMT_f22c_d:
    redex_assert(i == 0);
    return 4;
  case FMT_f22c_s:
    redex_assert(i <= 1);
    return 4;
  case FMT_f22cs:
    not_reached();
  case FMT_f30t:
    not_reached();
  case FMT_f32x:
    redex_assert(i == 0);
    return 16;
  case FMT_f31i:
    not_reached();
  case FMT_f31t:
    redex_assert(i == 0);
    return 8;
  case FMT_f31c:
    not_reached();
  case FMT_f35c:
    redex_assert(i <= 4);
    return 4;
  case FMT_f3rc:
    redex_assert(i == 0);
    return 16;
  case FMT_f41c_d:
    not_reached();
  case FMT_f41c_s:
    redex_assert(i == 0);
    return 16;
  case FMT_f45cc:
    redex_assert(i <= 4);
    return 4;
  case FMT_f4rcc:
    redex_assert(i == 0);
    return 16;
  case FMT_f52c_d:
    redex_assert(i == 0);
    return 16;
  case FMT_f52c_s:
    redex_assert(i <= 1);
    return 16;
  case FMT_f5rc:
    redex_assert(i == 0);
    return 16;
  case FMT_f57c:
    redex_assert(i <= 6);
    return 4;
  case FMT_f35ms:
  case FMT_f35mi:
  case FMT_f3rms:
  case FMT_f3rmi:
  case FMT_f51l:
  case FMT_fopcode:
  case FMT_iopcode:
    not_reached();
  }
  not_reached();
}