aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2019-03-08 11:34:29 +0100
committerCyril SIX <cyril.six@kalray.eu>2019-03-08 11:34:29 +0100
commitbaf349346968b79c37f9eeb71f11a3d42f86bf86 (patch)
tree29fa9937a650a32a7ae8b4182d56e1ce168bfc43 /mppa_k1c
parentf88eb3311e606c1d8de616c3c231f95144ff4825 (diff)
downloadcompcert-kvx-baf349346968b79c37f9eeb71f11a3d42f86bf86.tar.gz
compcert-kvx-baf349346968b79c37f9eeb71f11a3d42f86bf86.zip
Reverting the hack introduces on Pcompw etc..
Diffstat (limited to 'mppa_k1c')
-rw-r--r--mppa_k1c/PostpassSchedulingOracle.ml17
1 files changed, 3 insertions, 14 deletions
diff --git a/mppa_k1c/PostpassSchedulingOracle.ml b/mppa_k1c/PostpassSchedulingOracle.ml
index b4b87031..89ec34e2 100644
--- a/mppa_k1c/PostpassSchedulingOracle.ml
+++ b/mppa_k1c/PostpassSchedulingOracle.ml
@@ -135,26 +135,15 @@ let load_str = function
let set_str = "Pset"
let get_str = "Pget"
-let arith_rri32_rec i rd rs imm32 =
- match i with
- | Pcompiw _ -> { inst = arith_rri32_str i; write_locs = [Reg rd]; read_locs = [Reg rs; Mem]; imm = imm32; is_control = false }
- | _ -> { inst = arith_rri32_str i; write_locs = [Reg rd]; read_locs = [Reg rs]; imm = imm32; is_control = false }
+let arith_rri32_rec i rd rs imm32 = { inst = arith_rri32_str i; write_locs = [Reg rd]; read_locs = [Reg rs]; imm = imm32; is_control = false }
-let arith_rri64_rec i rd rs imm64 =
- match i with
- | Pcompil _ -> { inst = arith_rri64_str i; write_locs = [Reg rd]; read_locs = [Reg rs; Mem]; imm = imm64; is_control = false }
- | _ -> { inst = arith_rri64_str i; write_locs = [Reg rd]; read_locs = [Reg rs]; imm = imm64; is_control = false }
+let arith_rri64_rec i rd rs imm64 = { inst = arith_rri64_str i; write_locs = [Reg rd]; read_locs = [Reg rs]; imm = imm64; is_control = false }
-let arith_rrr_rec i rd rs1 rs2 = (* FIXME - hack for memory problem with Pcompw and Pcompl, performance decreased *)
- match i with
- | Pcompw _ | Pcompl _ -> { inst = arith_rrr_str i; write_locs = [Reg rd]; read_locs = [Reg rs1; Reg rs2; Mem]; imm = None; is_control = false}
- | _ -> { inst = arith_rrr_str i; write_locs = [Reg rd]; read_locs = [Reg rs1; Reg rs2]; imm = None; is_control = false}
+let arith_rrr_rec i rd rs1 rs2 = { inst = arith_rrr_str i; write_locs = [Reg rd]; read_locs = [Reg rs1; Reg rs2]; imm = None; is_control = false}
let arith_rr_rec i rd rs = { inst = arith_rr_str i; write_locs = [Reg rd]; read_locs = [Reg rs]; imm = None; is_control = false}
let arith_r_rec i rd = match i with
- (* FIXME - this instruction is expanded to nothing, yet it still has a semantic in Asmblock.v.
- * It will introduce unneeded dependencies.. *)
(* For Ploadsymbol, writing the highest integer since we do not know how many bits does a symbol have *)
| Ploadsymbol (id, ofs) -> { inst = "Ploadsymbol"; write_locs = [Reg rd]; read_locs = []; imm = Some (I64 Integers.Int64.max_signed); is_control = false}