(* *********************************************************************)
(*                                                                     *)
(*              The Compcert verified compiler                         *)
(*                                                                     *)
(*          Xavier Leroy, INRIA Paris-Rocquencourt                     *)
(*                                                                     *)
(*  Copyright Institut National de Recherche en Informatique et en     *)
(*  Automatique.  All rights reserved.  This file is distributed       *)
(*  under the terms of the INRIA Non-Commercial License Agreement.     *)
(*                                                                     *)
(* *********************************************************************)
(** Correctness proof for PPC generation: auxiliary results. *)
Local Transparent Archi.ptr64.
(** * Properties of low half/high half decomposition *)

(* Specifications: *)
Lemma low_high_u:
forall n, Int.or (Int.shl (high_u n) (Int.repr 16)) (low_u n) = n.
Lemma low_high_u_xor:
forall n, Int.xor (Int.shl (high_u n) (Int.repr 16)) (low_u n) = n.
Lemma low_high_s:
forall n, Int.add (Int.shl (high_s n) (Int.repr 16)) (low_s n) = n.
Lemma add_zero_symbol_address:
forall (ge: genv) id ofs,
Val.add Vzero (Genv.symbol_address ge id ofs) = Genv.symbol_address ge id ofs.
Lemma low_high_half_zero:
forall (ge: genv) id ofs,
Val.add (Val.add Vzero (high_half ge id ofs)) (low_half ge id ofs) =
Genv.symbol_address ge id ofs.