(** Translation of arguments and results to builtins. *)
Remark builtin_arg_match:
forall ge (rs: regset) sp m a v,
eval_builtin_arg ge (fun r => rs (preg_of r)) sp m a v ->
eval_builtin_arg ge rs sp m (map_builtin_arg preg_of a) v.

(* Specifications: *)
Lemma builtin_args_match:
forall ge ms sp rs m m', agree ms sp rs -> Mem.extends m m' ->
forall al vl, eval_builtin_args ge ms sp m al vl ->
exists vl', eval_builtin_args ge rs sp m' (map (map_builtin_arg preg_of) al) vl'
/\ Val.lessdef_list vl vl'.
Lemma agree_set_res:
forall res ms sp rs v v',
agree ms sp rs ->
Val.lessdef v v' ->
agree (Mach.set_res res v ms) sp (Asm.set_res (map_builtin_res preg_of res) v' rs).
Lemma set_res_other:
forall r res v rs,
data_preg r = false ->
set_res (map_builtin_res preg_of res) v rs r = rs r.