aboutsummaryrefslogtreecommitdiffstats
path: root/powerpc/Asmgen.v
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-06-21 15:53:05 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-06-21 15:53:05 +0000
commit58c7f5045c9cf1b64311fd7a168ed3b496666bb0 (patch)
treeb71dc7537a473b26a2109339e6ee21dc69581655 /powerpc/Asmgen.v
parentb39791601bb128c37db82eb66a8bc1991047818f (diff)
downloadcompcert-kvx-58c7f5045c9cf1b64311fd7a168ed3b496666bb0.tar.gz
compcert-kvx-58c7f5045c9cf1b64311fd7a168ed3b496666bb0.zip
Recognition of rlwimi instruction (useful for bitfield assignment)
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1676 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'powerpc/Asmgen.v')
-rw-r--r--powerpc/Asmgen.v7
1 files changed, 7 insertions, 0 deletions
diff --git a/powerpc/Asmgen.v b/powerpc/Asmgen.v
index 4370753b..cecc13e9 100644
--- a/powerpc/Asmgen.v
+++ b/powerpc/Asmgen.v
@@ -320,6 +320,13 @@ Definition transl_op
Psrw (ireg_of r) (ireg_of a1) (ireg_of a2) :: k
| Orolm amount mask, a1 :: nil =>
Prlwinm (ireg_of r) (ireg_of a1) amount mask :: k
+ | Oroli amount mask, a1 :: a2 :: nil =>
+ if mreg_eq a1 r then (**r should always be true *)
+ Prlwimi (ireg_of r) (ireg_of a2) amount mask :: k
+ else
+ Pmr GPR0 (ireg_of a1) ::
+ Prlwimi GPR0 (ireg_of a2) amount mask ::
+ Pmr (ireg_of r) GPR0 :: k
| Onegf, a1 :: nil =>
Pfneg (freg_of r) (freg_of a1) :: k
| Oabsf, a1 :: nil =>