[Libre-soc-bugs] [Bug 838] sync or at least statically check fields.text, power_decoder, trans/svp64, CSVs between each other

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Fri Aug 12 09:45:01 BST 2022


https://bugs.libre-soc.org/show_bug.cgi?id=838

--- Comment #50 from Dmitry Selyutin <ghostmansd at gmail.com> ---
The opcode should not be part of Desc, though, but rather a part of Record
itself.

struct svp64_desc {
  uint64_t in1 : 3;
  uint64_t in2 : 5;
  uint64_t in3 : 3;
  uint64_t out : 3;
  uint64_t out2 : 3;
  uint64_t cr_in : 4;
  uint64_t cr_out : 3;
  uint64_t sv_ptype : 2;
  uint64_t sv_etype : 2;
  uint64_t sv_in1 : 3;
  uint64_t sv_in2 : 3;
  uint64_t sv_in3 : 3;
  uint64_t sv_out : 3;
  uint64_t sv_out2 : 3;
  uint64_t sv_cr_in : 3;
  uint64_t sv_cr_out : 3;
  uint64_t : 15;
};

struct svp64_opcode {
  uint32_t value;
  uint32_t mask;
};

struct svp64_record {
  const char *name;
  struct svp64_opcode opcode;
  struct svp64_desc desc;
};

{
  .name = "sv.lwbrx",
  .opcode = {
    .value = 0x7c00042c,
    .mask = 0xfc0007fe,
  },
  .desc = {
    .in1 = SVP64_IN1_SEL_RA_OR_ZERO,
    .in2 = SVP64_IN2_SEL_RB,
    .in3 = SVP64_IN3_SEL_NONE,
    .out = SVP64_OUT_SEL_RT,
    .out2 = SVP64_OUT_SEL_NONE,
    .cr_in = SVP64_CR_IN_SEL_NONE,
    .cr_out = SVP64_CR_OUT_SEL_NONE,
    .sv_ptype = SVP64_PTYPE_P2,
    .sv_etype = SVP64_ETYPE_EXTRA2,
    .sv_in1 = SVP64_EXTRA_NONE,
    .sv_in2 = SVP64_EXTRA_IDX2,
    .sv_in3 = SVP64_EXTRA_NONE,
    .sv_out = SVP64_EXTRA_IDX0,
    .sv_out2 = SVP64_EXTRA_NONE,
    .sv_cr_in = SVP64_EXTRA_NONE,
    .sv_cr_out = SVP64_EXTRA_NONE,
  },
},

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list