use crate::color;
use crate::emu::Emu;
use iced_x86::Instruction;
pub fn execute(emu: &mut Emu, ins: &Instruction, instruction_sz: usize, _rep_step: bool) -> bool {
emu.show_instruction(color!("Green"), ins);
let st0: f64 = emu.fpu_mut().get_st(0);
if st0.is_nan() {
emu.fpu_mut().set_status_c0(true);
emu.fpu_mut().set_status_c1(true);
emu.fpu_mut().set_status_c2(true);
} else if st0 == 0.0 {
emu.fpu_mut().set_status_c1(true);
emu.fpu_mut().set_status_c2(false);
emu.fpu_mut().set_status_c0(st0.is_sign_negative());
} else if st0.is_infinite() {
emu.fpu_mut().set_status_c1(false);
emu.fpu_mut().set_status_c2(true);
emu.fpu_mut().set_status_c0(st0.is_sign_negative());
} else if st0.abs() < std::f64::MIN_POSITIVE {
emu.fpu_mut().set_status_c0(true);
emu.fpu_mut().set_status_c1(true);
emu.fpu_mut().set_status_c2(false);
} else {
emu.fpu_mut().set_status_c0(st0.is_sign_negative());
emu.fpu_mut().set_status_c1(false);
emu.fpu_mut().set_status_c2(false);
}
true
}