Encode the name of
a 64-bit shift instruction with the
(encode-op-imms64-funct funct) → (mv funct3 hi6imm)
Function:
(defun encode-op-imms64-funct (funct) (declare (xargs :guard (op-imms-funct-p funct))) (op-imms-funct-case funct :slli (mv 1 0) :srli (mv 5 0) :srai (mv 5 16)))
Theorem:
(defthm ubyte3p-of-encode-op-imms64-funct.funct3 (b* (((mv ?funct3 ?hi6imm) (encode-op-imms64-funct funct))) (ubyte3p funct3)) :rule-classes :rewrite)
Theorem:
(defthm ubyte6p-of-encode-op-imms64-funct.hi6imm (b* (((mv ?funct3 ?hi6imm) (encode-op-imms64-funct funct))) (ubyte6p hi6imm)) :rule-classes :rewrite)
Theorem:
(defthm encode-op-imms64-funct-of-op-imms-funct-fix-funct (equal (encode-op-imms64-funct (op-imms-funct-fix funct)) (encode-op-imms64-funct funct)))
Theorem:
(defthm encode-op-imms64-funct-op-imms-funct-equiv-congruence-on-funct (implies (op-imms-funct-equiv funct funct-equiv) (equal (encode-op-imms64-funct funct) (encode-op-imms64-funct funct-equiv))) :rule-classes :congruence)