Theorems about get-funct3 applied to the encoding of different instructions.
Theorem:
(defthm get-funct3-of-encode-of-instr-op-imm (equal (get-funct3 (encode (instr-op-imm funct rd rs1 imm) feat)) (encode-op-imm-funct funct)))
Theorem:
(defthm get-funct3-of-encode-of-instr-op-imms32 (equal (get-funct3 (encode (instr-op-imms32 funct rd rs1 imm) feat)) (mv-nth 0 (encode-op-imms32-funct funct))))
Theorem:
(defthm get-funct3-of-encode-of-instr-op-imms64 (equal (get-funct3 (encode (instr-op-imms64 funct rd rs1 imm) feat)) (mv-nth 0 (encode-op-imms64-funct funct))))
Theorem:
(defthm get-funct3-of-encode-of-instr-op-imm-32 (equal (get-funct3 (encode (instr-op-imm-32 funct rd rs1 imm) feat)) (encode-op-imm-32-funct funct)))
Theorem:
(defthm get-funct3-of-encode-of-instr-op-imms-32 (equal (get-funct3 (encode (instr-op-imms-32 funct rd rs1 imm) feat)) (mv-nth 0 (encode-op-imms-32-funct funct))))
Theorem:
(defthm get-funct3-of-encode-of-instr-op (equal (get-funct3 (encode (instr-op funct rd rs1 rs2) feat)) (mv-nth 0 (encode-op-funct funct))))
Theorem:
(defthm get-funct3-of-encode-of-instr-op-32 (equal (get-funct3 (encode (instr-op-32 funct rd rs1 rs2) feat)) (mv-nth 0 (encode-op-32-funct funct))))
Theorem:
(defthm get-funct3-of-encode-of-instr-jalr (equal (get-funct3 (encode (instr-jalr rd rs1 imm) feat)) 0))
Theorem:
(defthm get-funct3-of-encode-of-instr-branch (equal (get-funct3 (encode (instr-branch funct rs1 rs2 imm) feat)) (encode-branch-funct funct)))
Theorem:
(defthm get-funct3-of-encode-of-instr-load (equal (get-funct3 (encode (instr-load funct rd rs1 imm) feat)) (encode-load-funct funct feat)))
Theorem:
(defthm get-funct3-of-encode-of-instr-store (equal (get-funct3 (encode (instr-store funct rs1 rs2 imm) feat)) (encode-store-funct funct feat)))