diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2019-02-08 11:30:51 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2019-02-08 11:30:51 +0100 |
commit | 292db3a22261821b759abdca011ab93ed01f3cce (patch) | |
tree | 3a0d1c682caa609aca4421f391e13bee8d56a9e5 /mppa_k1c/Asmblockgen.v | |
parent | 99d5c85e5595799519e6541947f907a892935e4f (diff) | |
download | compcert-kvx-292db3a22261821b759abdca011ab93ed01f3cce.tar.gz compcert-kvx-292db3a22261821b759abdca011ab93ed01f3cce.zip |
Oshrxlimm
Diffstat (limited to 'mppa_k1c/Asmblockgen.v')
-rw-r--r-- | mppa_k1c/Asmblockgen.v | 8 |
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 |