Addr pc = wf->pc();
ScalarRegI16 simm16 = instData.SIMM16;
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
wf->pc(pc);
}
scc.read();
if (!scc.rawData()) {
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
}
wf->pc(pc);
scc.read();
if (scc.rawData()) {
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
}
wf->pc(pc);
vcc.read();
if (!vcc.rawData()) {
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
}
wf->pc(pc);
if (vcc.rawData()) {
Addr pc = wf->pc();
ScalarRegI16 simm16 = instData.SIMM16;
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
wf->pc(pc);
}
}
if (wf->execMask().none()) {
Addr pc = wf->pc();
ScalarRegI16 simm16 = instData.SIMM16;
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
wf->pc(pc);
}
}
if (wf->execMask().any()) {
Addr pc = wf->pc();
ScalarRegI16 simm16 = instData.SIMM16;
- pc = pc + ((ScalarRegI64)sext<16>(simm16 * 4LL)) + 4LL;
+ pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
wf->pc(pc);
}
}