summaryrefslogtreecommitdiff
path: root/rtl/core/decode/ldst
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/core/decode/ldst')
-rw-r--r--rtl/core/decode/ldst/addr.sv15
-rw-r--r--rtl/core/decode/ldst/exclusive.sv27
-rw-r--r--rtl/core/decode/ldst/misc.sv36
-rw-r--r--rtl/core/decode/ldst/multiple.sv34
-rw-r--r--rtl/core/decode/ldst/single.sv31
5 files changed, 0 insertions, 143 deletions
diff --git a/rtl/core/decode/ldst/addr.sv b/rtl/core/decode/ldst/addr.sv
deleted file mode 100644
index 345f0ea..0000000
--- a/rtl/core/decode/ldst/addr.sv
+++ /dev/null
@@ -1,15 +0,0 @@
-`include "core/uarch.sv"
-
-module core_decode_ldst_addr
-(
- input ldst_decode ldst,
-
- output data_decode alu
-);
-
- assign alu.op = ldst.increment ? `ALU_ADD : `ALU_SUB;
- assign alu.rn = ldst.rn;
- assign alu.rd = ldst.rd;
- assign alu.uses_rn = 1;
-
-endmodule
diff --git a/rtl/core/decode/ldst/exclusive.sv b/rtl/core/decode/ldst/exclusive.sv
deleted file mode 100644
index 7942a04..0000000
--- a/rtl/core/decode/ldst/exclusive.sv
+++ /dev/null
@@ -1,27 +0,0 @@
-`include "core/decode/isa.sv"
-`include "core/uarch.sv"
-
-module core_decode_ldst_exclusive
-(
- input word insn,
-
- output ldst_decode decode,
- output reg_num snd_r
-);
-
- assign snd_r = insn `FIELD_LDST_EX_R_OK;
-
- assign decode.rn = insn `FIELD_LDST_EX_RN;
- assign decode.rd = insn `FIELD_LDST_EX_RD;
- assign decode.size = LDST_WORD;
- assign decode.load = insn `FIELD_LDST_EX_LD;
- assign decode.increment = 0;
- assign decode.writeback = 0;
- assign decode.exclusive = 1;
- assign decode.sign_extend = 0;
- assign decode.pre_indexed = 0;
- assign decode.unprivileged = 0;
- assign decode.user_regs = 0;
- assign decode.regs = 16'b0;
-
-endmodule
diff --git a/rtl/core/decode/ldst/misc.sv b/rtl/core/decode/ldst/misc.sv
deleted file mode 100644
index 72d648c..0000000
--- a/rtl/core/decode/ldst/misc.sv
+++ /dev/null
@@ -1,36 +0,0 @@
-`include "core/decode/isa.sv"
-`include "core/uarch.sv"
-
-module core_decode_ldst_misc
-(
- input word insn,
-
- output ldst_decode decode,
- output logic off_is_imm,
- output logic[7:0] off_imm,
- output reg_num off_reg
-);
-
- logic p, w;
-
- assign decode.rn = insn `FIELD_LDST_MISC_RN;
- assign decode.rd = insn `FIELD_LDST_MISC_RD;
- assign decode.size = insn `FIELD_LDST_MISC_H ? LDST_HALF : LDST_BYTE;
- assign decode.load = insn `FIELD_LDST_LD;
- assign decode.increment = insn `FIELD_LDST_MISC_U;
- assign decode.writeback = !p || w;
- assign decode.exclusive = 0;
- assign decode.sign_extend = insn `FIELD_LDST_MISC_S;
- assign decode.pre_indexed = p;
- assign decode.unprivileged = 0;
- assign decode.user_regs = 0;
- assign decode.regs = 16'b0;
-
- assign off_imm = {insn `FIELD_LDST_MISC_IMM_HI, insn `FIELD_LDST_MISC_IMM_LO};
- assign off_reg = insn `FIELD_LDST_MISC_RM;
- assign off_is_imm = insn `FIELD_LDST_MISC_IMM;
-
- assign p = insn `FIELD_LDST_MISC_P;
- assign w = insn `FIELD_LDST_MISC_W;
-
-endmodule
diff --git a/rtl/core/decode/ldst/multiple.sv b/rtl/core/decode/ldst/multiple.sv
deleted file mode 100644
index c822ab0..0000000
--- a/rtl/core/decode/ldst/multiple.sv
+++ /dev/null
@@ -1,34 +0,0 @@
-`include "core/decode/isa.sv"
-`include "core/uarch.sv"
-
-module core_decode_ldst_multiple
-(
- input word insn,
-
- output ldst_decode decode,
- output logic restore_spsr
-);
-
- logic s, l;
- reg_list regs;
-
- assign decode.rn = insn `FIELD_LDST_MULT_RN;
- assign decode.rd = 4'bxxxx;
- assign decode.size = LDST_WORD;
- assign decode.load = l;
- assign decode.increment = insn `FIELD_LDST_MULT_U;
- assign decode.writeback = insn `FIELD_LDST_MULT_W;
- assign decode.exclusive = 0;
- assign decode.sign_extend = 0;
- assign decode.pre_indexed = insn `FIELD_LDST_MULT_P;
- assign decode.unprivileged = 0;
- assign decode.user_regs = s && !(l && regs[`R15]);
- assign decode.regs = regs;
-
- assign s = insn `FIELD_LDST_MULT_S;
- assign l = insn `FIELD_LDST_LD;
-
- assign regs = insn `FIELD_LDST_MULT_LIST;
- assign restore_spsr = s && l && regs[`R15];
-
-endmodule
diff --git a/rtl/core/decode/ldst/single.sv b/rtl/core/decode/ldst/single.sv
deleted file mode 100644
index af096a7..0000000
--- a/rtl/core/decode/ldst/single.sv
+++ /dev/null
@@ -1,31 +0,0 @@
-`include "core/decode/isa.sv"
-`include "core/uarch.sv"
-
-module core_decode_ldst_single
-(
- input word insn,
-
- output ldst_decode decode,
- output logic snd_is_imm
-);
-
- logic p, w;
-
- assign decode.rn = insn `FIELD_LDST_SINGLE_RN;
- assign decode.rd = insn `FIELD_LDST_SINGLE_RD;
- assign decode.size = insn `FIELD_LDST_SINGLE_B ? LDST_BYTE : LDST_WORD;
- assign decode.load = insn `FIELD_LDST_LD;
- assign decode.increment = insn `FIELD_LDST_SINGLE_U;
- assign decode.writeback = !p || w;
- assign decode.exclusive = 0;
- assign decode.sign_extend = 0;
- assign decode.pre_indexed = p;
- assign decode.unprivileged = !p && w;
- assign decode.user_regs = 0;
- assign decode.regs = 16'b0;
-
- assign p = insn `FIELD_LDST_SINGLE_P;
- assign w = insn `FIELD_LDST_SINGLE_W;
- assign snd_is_imm = !insn `FIELD_LDST_SINGLE_REG;
-
-endmodule