diff options
author | Léo Gourdin <leo.gourdin@univ-grenoble-alpes.fr> | 2020-12-02 18:02:23 +0100 |
---|---|---|
committer | Léo Gourdin <leo.gourdin@univ-grenoble-alpes.fr> | 2020-12-02 18:02:23 +0100 |
commit | c48b7c63592e5930f022452ee6c3f1cf3d1ada97 (patch) | |
tree | 8b77e87f9dbc17e67da3c36b7402fae21f033e33 /aarch64/Asmblockgen.v | |
parent | dd299de4b51c561b3a2d8e9f388396381b0e2b85 (diff) | |
download | compcert-kvx-c48b7c63592e5930f022452ee6c3f1cf3d1ada97.tar.gz compcert-kvx-c48b7c63592e5930f022452ee6c3f1cf3d1ada97.zip |
Adding semantics for Pldp
This commit prepare the backend for a peephole optimization in Asmblock.
Diffstat (limited to 'aarch64/Asmblockgen.v')
-rw-r--r-- | aarch64/Asmblockgen.v | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/aarch64/Asmblockgen.v b/aarch64/Asmblockgen.v index b25a95da..abc9162b 100644 --- a/aarch64/Asmblockgen.v +++ b/aarch64/Asmblockgen.v @@ -280,13 +280,13 @@ Definition indexed_memory_access_bc (insn: addressing -> basic) Definition loadind (base: iregsp) (ofs: ptrofs) (ty: typ) (dst: mreg) (k: bcode) := match ty, preg_of dst with - | Tint, IR rd => OK (indexed_memory_access_bc (PLoad Pldrw rd) 4 base ofs k) - | Tlong, IR rd => OK (indexed_memory_access_bc (PLoad Pldrx rd) 8 base ofs k) - | Tsingle, FR rd => OK (indexed_memory_access_bc (PLoad Pldrs rd) 4 base ofs k) - | Tfloat, FR rd => OK (indexed_memory_access_bc (PLoad Pldrd rd) 8 base ofs k) - | Tany32, IR rd => OK (indexed_memory_access_bc (PLoad Pldrw_a rd) 4 base ofs k) - | Tany64, IR rd => OK (indexed_memory_access_bc (PLoad Pldrx_a rd) 8 base ofs k) - | Tany64, FR rd => OK (indexed_memory_access_bc (PLoad Pldrd_a rd) 8 base ofs k) + | Tint, IR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrw rd) 4 base ofs k) + | Tlong, IR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrx rd) 8 base ofs k) + | Tsingle, FR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrs rd) 4 base ofs k) + | Tfloat, FR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrd rd) 8 base ofs k) + | Tany32, IR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrw_a rd) 4 base ofs k) + | Tany64, IR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrx_a rd) 8 base ofs k) + | Tany64, FR rd => OK (indexed_memory_access_bc (PLd_rd_a Pldrd_a rd) 8 base ofs k) | _, _ => Error (msg "Asmgen.loadind") end. @@ -303,7 +303,7 @@ Definition storeind (src: mreg) (base: iregsp) (ofs: ptrofs) (ty: typ) (k: bcode end. Definition loadptr_bc (base: iregsp) (ofs: ptrofs) (dst: ireg) (k: bcode): bcode := - indexed_memory_access_bc (PLoad Pldrx dst) 8 base ofs k. + indexed_memory_access_bc (PLd_rd_a Pldrx dst) 8 base ofs k. Definition storeptr_bc (src: ireg) (base: iregsp) (ofs: ptrofs) (k: bcode): bcode := indexed_memory_access_bc (PStore Pstrx src) 8 base ofs k. @@ -1096,25 +1096,25 @@ Definition transl_load (chunk: memory_chunk) (addr: Op.addressing) (args: list mreg) (dst: mreg) (k: bcode) : res bcode := match chunk with | Mint8unsigned => - do rd <- ireg_of dst; transl_addressing 1 addr args (PLoad (Pldrb W) rd) k + do rd <- ireg_of dst; transl_addressing 1 addr args (PLd_rd_a (Pldrb W) rd) k | Mint8signed => - do rd <- ireg_of dst; transl_addressing 1 addr args (PLoad (Pldrsb W) rd) k + do rd <- ireg_of dst; transl_addressing 1 addr args (PLd_rd_a (Pldrsb W) rd) k | Mint16unsigned => - do rd <- ireg_of dst; transl_addressing 2 addr args (PLoad (Pldrh W) rd) k + do rd <- ireg_of dst; transl_addressing 2 addr args (PLd_rd_a (Pldrh W) rd) k | Mint16signed => - do rd <- ireg_of dst; transl_addressing 2 addr args (PLoad (Pldrsh W) rd) k + do rd <- ireg_of dst; transl_addressing 2 addr args (PLd_rd_a (Pldrsh W) rd) k | Mint32 => - do rd <- ireg_of dst; transl_addressing 4 addr args (PLoad Pldrw rd) k + do rd <- ireg_of dst; transl_addressing 4 addr args (PLd_rd_a Pldrw rd) k | Mint64 => - do rd <- ireg_of dst; transl_addressing 8 addr args (PLoad Pldrx rd) k + do rd <- ireg_of dst; transl_addressing 8 addr args (PLd_rd_a Pldrx rd) k | Mfloat32 => - do rd <- freg_of dst; transl_addressing 4 addr args (PLoad Pldrs rd) k + do rd <- freg_of dst; transl_addressing 4 addr args (PLd_rd_a Pldrs rd) k | Mfloat64 => - do rd <- freg_of dst; transl_addressing 8 addr args (PLoad Pldrd rd) k + do rd <- freg_of dst; transl_addressing 8 addr args (PLd_rd_a Pldrd rd) k | Many32 => - do rd <- ireg_of dst; transl_addressing 4 addr args (PLoad Pldrw_a rd) k + do rd <- ireg_of dst; transl_addressing 4 addr args (PLd_rd_a Pldrw_a rd) k | Many64 => - do rd <- ireg_of dst; transl_addressing 8 addr args (PLoad Pldrx_a rd) k + do rd <- ireg_of dst; transl_addressing 8 addr args (PLd_rd_a Pldrx_a rd) k end. Definition transl_store (chunk: memory_chunk) (addr: Op.addressing) |