Reverse the bytes in an operand of a given byte size.
(movbe-reverse-bytes val size) → rev-val
Function:
(defun movbe-reverse-bytes (val size) (declare (xargs :guard (and (natp size) (unsigned-byte-p (* 8 size) val)))) (let ((__function__ 'movbe-reverse-bytes)) (declare (ignorable __function__)) (cond ((zp size) 0) (t (logapp (* 8 (1- size)) (movbe-reverse-bytes (logtail 8 val) (1- size)) (loghead 8 val))))))
Theorem:
(defthm return-type-of-movbe-reverse-bytes (implies (and (natp size) (unsigned-byte-p (binary-* '8 size) val)) (b* ((rev-val (movbe-reverse-bytes val size))) (unsigned-byte-p (* 8 size) rev-val))) :rule-classes :rewrite)