aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/Asmblockgen.v
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2019-02-08 11:30:51 +0100
committerCyril SIX <cyril.six@kalray.eu>2019-02-08 11:30:51 +0100
commit292db3a22261821b759abdca011ab93ed01f3cce (patch)
tree3a0d1c682caa609aca4421f391e13bee8d56a9e5 /mppa_k1c/Asmblockgen.v
parent99d5c85e5595799519e6541947f907a892935e4f (diff)
downloadcompcert-kvx-292db3a22261821b759abdca011ab93ed01f3cce.tar.gz
compcert-kvx-292db3a22261821b759abdca011ab93ed01f3cce.zip
Oshrxlimm
Diffstat (limited to 'mppa_k1c/Asmblockgen.v')
-rw-r--r--mppa_k1c/Asmblockgen.v8
1 files changed, 7 insertions, 1 deletions
diff --git a/mppa_k1c/Asmblockgen.v b/mppa_k1c/Asmblockgen.v
index fa5774ef..4c285c8e 100644
--- a/mppa_k1c/Asmblockgen.v
+++ b/mppa_k1c/Asmblockgen.v
@@ -543,7 +543,13 @@ Definition transl_op
| Oshrluimm n, a1 :: nil =>
do rd <- ireg_of res; do rs <- ireg_of a1;
OK (Psrlil rd rs n ::i k)
- | Oshrxlimm _, _ => Error (msg "Asmblockgen.transl_op: Oshrxlimm")
+ | Oshrxlimm n, a1 :: nil =>
+ do rd <- ireg_of res; do rs <- ireg_of a1;
+ OK (if Int.eq n Int.zero then Pmv rd rs ::i k else
+ Psrail RTMP rs (Int.repr 63) ::i
+ Psrlil RTMP RTMP (Int.sub Int64.iwordsize' n) ::i
+ Paddl RTMP rs RTMP ::i
+ Psrail rd RTMP n ::i k)
(*| Oshrxlimm n, a1 :: nil =>
do rd <- ireg_of res; do rs <- ireg_of a1;
OK (if Int.eq n Int.zero then Pmv rd rs :: k else