diff --git a/crates/cpu/src/instruction.rs b/crates/cpu/src/instruction.rs index 98d9393..3c7431f 100644 --- a/crates/cpu/src/instruction.rs +++ b/crates/cpu/src/instruction.rs @@ -1473,14 +1473,19 @@ impl LogicalFlagsMOp { src: impl ToExpr>, ) -> Expr { let this = this.to_expr(); + let flags = LogicalFlagsMOpImm::flags_operation( + Self::imm(this), + this.lut, + src.to_expr().map(|v| v.flags), + ); #[hdl] PRegValue { - int_fp: 0u64, - flags: LogicalFlagsMOpImm::flags_operation( - Self::imm(this), - this.lut, - src.to_expr().map(|v| v.flags), - ), + int_fp: PRegFlags::fields(flags) + .iter() + .as_slice() + .cast_to_bits() + .cast_to_static::>(), + flags, } } #[hdl] @@ -1489,14 +1494,19 @@ impl LogicalFlagsMOp { src: impl ToSimValue>, ) -> SimValue { let this = this.into_sim_value(); + let flags = LogicalFlagsMOpImm::flags_operation_sim( + Self::imm(&this), + SimValue::into_value(this).lut, + SimValue::into_value(src.into_sim_value()).map(|v| SimValue::into_value(v).flags), + ); #[hdl(sim)] PRegValue { - int_fp: 0u64, - flags: LogicalFlagsMOpImm::flags_operation_sim( - Self::imm(&this), - SimValue::into_value(this).lut, - SimValue::into_value(src.into_sim_value()).map(|v| SimValue::into_value(v).flags), - ), + int_fp: PRegFlags::fields_sim_ref(&flags) + .iter() + .as_slice() + .cast_to_bits() + .cast_to_static::>(), + flags, } } #[hdl] diff --git a/scripts/check-copyright.sh b/scripts/check-copyright.sh index 0b90d9f..dcebf6d 100755 --- a/scripts/check-copyright.sh +++ b/scripts/check-copyright.sh @@ -46,7 +46,7 @@ function main() */LICENSE.md|*/Notices.txt) # copyright file ;; - /crates/cpu/tests/expected/*.vcd|/crates/cpu/tests/expected/*.txt) + /crates/cpu/tests*/expected/*.vcd|/crates/cpu/tests*/expected/*.txt) # file that can't contain copyright header ;; /.forgejo/workflows/*.yml|*/.gitignore|*/.gitattributes|*.toml) @@ -71,4 +71,4 @@ function main() done } -main \ No newline at end of file +main