diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-06-21 15:53:05 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-06-21 15:53:05 +0000 |
commit | 58c7f5045c9cf1b64311fd7a168ed3b496666bb0 (patch) | |
tree | b71dc7537a473b26a2109339e6ee21dc69581655 /powerpc/Asmgen.v | |
parent | b39791601bb128c37db82eb66a8bc1991047818f (diff) | |
download | compcert-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.v | 7 |
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 => |