Skip to content

Commit f8c74c2

Browse files
AntonJohanssonAnton Johanssonayosher
authored
Xqci: Make sure imm is signed for extended loads (#792)
Otherwise loads from negative offsets such as qc.e.lw a0, -0x8004(a0) won't work correctly. Signed-off-by: Anton Johansson <anjo@rev.ng> Co-authored-by: Anton Johansson <anjo@rev.ng> Co-authored-by: ayosher <181945086+ayosher@users.noreply.github.com>
1 parent 1c982a4 commit f8c74c2

File tree

5 files changed

+5
-5
lines changed

5 files changed

+5
-5
lines changed

arch_overlay/qc_iu/inst/Xqci/qc.e.lb.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ access:
3030
vs: always
3131
vu: always
3232
operation(): |
33-
XReg virtual_address = X[rs1] + imm;
33+
XReg virtual_address = X[rs1] + $signed(imm);
3434
X[rd] = sext(read_memory<8>(virtual_address, $encoding), 8);

arch_overlay/qc_iu/inst/Xqci/qc.e.lbu.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ access:
3030
vs: always
3131
vu: always
3232
operation(): |
33-
XReg virtual_address = X[rs1] + imm;
33+
XReg virtual_address = X[rs1] + $signed(imm);
3434
X[rd] = read_memory<8>(virtual_address, $encoding);

arch_overlay/qc_iu/inst/Xqci/qc.e.lh.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ access:
3030
vs: always
3131
vu: always
3232
operation(): |
33-
XReg virtual_address = X[rs1] + imm;
33+
XReg virtual_address = X[rs1] + $signed(imm);
3434
X[rd] = sext(read_memory<16>(virtual_address, $encoding), 16);

arch_overlay/qc_iu/inst/Xqci/qc.e.lhu.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ access:
3030
vs: always
3131
vu: always
3232
operation(): |
33-
XReg virtual_address = X[rs1] + imm;
33+
XReg virtual_address = X[rs1] + $signed(imm);
3434
X[rd] = read_memory<16>(virtual_address, $encoding);

arch_overlay/qc_iu/inst/Xqci/qc.e.lw.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ access:
3030
vs: always
3131
vu: always
3232
operation(): |
33-
XReg virtual_address = X[rs1] + imm;
33+
XReg virtual_address = X[rs1] + $signed(imm);
3434
X[rd] = read_memory<32>(virtual_address, $encoding);

0 commit comments

Comments
 (0)