predargs = ['dest_pred'] * 5
if immed_offset: # C.LWSP
if immed_offset == 'LD':
+ predargs[4] = 'src_pred'
predargs.append('&src_pred')
else:
predargs.append('&dest_pred')
bool addr_mode, size_t width)
{
reg_t reg = spec.reg;
- int bitwidth = get_bitwidth(_insn->reg_elwidth(reg, true), xlen);
+ int bitwidth = get_bitwidth(_insn->reg_elwidth(reg, true), width);
int shift = 0;
int origoffs = 0;
int offs = 0;
// addr_mode doesn't truncate the register to elwidth-specified
// bitsize, it adds a modulo-offset based on the current VL loop index
reg_t reg = READ_REG(spec, true, width);
- uint64_t regoffs = 0;
- //if (spec.offset && !spec.isvec) {
- // regoffs = *spec.offset;
- //}
- sv_reg_t addr = sv_reg_t((uint64_t)reg + (uint64_t)regoffs + (int64_t)offs);
+ sv_reg_t addr = sv_reg_t((uint64_t)reg + (int64_t)offs);
sv_reg_t v(0);
// now that the address has been moved on by the modulo-offset,
// get only an elwidth-sized element (if not "default")
uint8_t rwidth = _insn->reg_elwidth(spec.reg, true);
width = get_bitwidth(rwidth, width);
- fprintf(stderr, "mmu_load wid %ld reg %lx regoffs %lx offs %lx\n",
- width, (uint64_t)reg, regoffs, (int64_t)offs);
+ fprintf(stderr, "mmu_load wid %ld reg %lx offs %lx\n",
+ width, (uint64_t)reg, (int64_t)offs);
switch (width)
{
case 8: