Encode the name of
an instruction with the
(encode-op-32-funct funct) → (mv funct3 funct7)
Function:
(defun encode-op-32-funct (funct) (declare (xargs :guard (op-32-funct-p funct))) (op-32-funct-case funct :addw (mv 0 0) :subw (mv 0 32) :sllw (mv 1 0) :srlw (mv 5 0) :sraw (mv 5 32) :mulw (mv 0 1) :divw (mv 4 1) :divuw (mv 5 1) :remw (mv 6 1) :remuw (mv 7 1)))
Theorem:
(defthm ubyte3p-of-encode-op-32-funct.funct3 (b* (((mv ?funct3 ?funct7) (encode-op-32-funct funct))) (ubyte3p funct3)) :rule-classes :rewrite)
Theorem:
(defthm ubyte7p-of-encode-op-32-funct.funct7 (b* (((mv ?funct3 ?funct7) (encode-op-32-funct funct))) (ubyte7p funct7)) :rule-classes :rewrite)
Theorem:
(defthm encode-op-32-funct-of-op-32-funct-fix-funct (equal (encode-op-32-funct (op-32-funct-fix funct)) (encode-op-32-funct funct)))
Theorem:
(defthm encode-op-32-funct-op-32-funct-equiv-congruence-on-funct (implies (op-32-funct-equiv funct funct-equiv) (equal (encode-op-32-funct funct) (encode-op-32-funct funct-equiv))) :rule-classes :congruence)