(wm-low-32 addr val x86) → x86
Function:
(defun wm-low-32$inline (addr val x86) (declare (xargs :stobjs (x86))) (declare (type (unsigned-byte 52) addr) (type (unsigned-byte 32) val)) (declare (xargs :guard (and (not (app-view x86)) (< (+ 3 addr) *mem-size-in-bytes*)))) (if (mbt (not (app-view x86))) (let ((addr (mbe :logic (ifix addr) :exec addr))) (b* (((the (unsigned-byte 8) byte0) (mbe :logic (part-select val :low 0 :width 8) :exec (logand 255 val))) ((the (unsigned-byte 8) byte1) (mbe :logic (part-select val :low 8 :width 8) :exec (logand 255 (ash val -8)))) ((the (unsigned-byte 8) byte2) (mbe :logic (part-select val :low 16 :width 8) :exec (logand 255 (ash val -16)))) ((the (unsigned-byte 8) byte3) (mbe :logic (part-select val :low 24 :width 8) :exec (logand 255 (ash val -24)))) (x86 (!memi addr byte0 x86)) (x86 (!memi (+ 1 addr) byte1 x86)) (x86 (!memi (+ 2 addr) byte2 x86)) (x86 (!memi (+ 3 addr) byte3 x86))) x86)) x86))
Theorem:
(defthm x86p-wm-low-32 (implies (x86p x86) (x86p (wm-low-32 addr val x86))) :rule-classes (:rewrite :type-prescription))
Theorem:
(defthm xr-wm-low-32 (implies (not (equal fld :mem)) (equal (xr fld index (wm-low-32 addr val x86)) (xr fld index x86))))
Theorem:
(defthm wm-low-32-xw (implies (and (not (equal fld :mem)) (not (equal fld :app-view))) (equal (wm-low-32 addr val (xw fld index value x86)) (xw fld index value (wm-low-32 addr val x86)))))