use crate::*;
const ALIGNED_ADDR: u64 = 0x3000;
#[test]
fn test_fisttp_m16_basic() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_basic() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_basic() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_truncate_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_truncate_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_truncate_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_truncate_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_truncate_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_truncate_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_zero() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_zero() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_zero() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_max() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_min() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_max() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_min() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_max() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_min() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_with_displacement() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&(ALIGNED_ADDR - 0x10).to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x48, 0x10, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_with_displacement() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&(ALIGNED_ADDR - 0x10).to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x48, 0x10, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_with_displacement() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&(ALIGNED_ADDR - 0x10).to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x48, 0x10, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_rbx() {
let mut emu = emu64();
let code = [
0x48, 0xbb, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x0b, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_rcx() {
let mut emu = emu64();
let code = [
0x48, 0xb9, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x09, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_rdx() {
let mut emu = emu64();
let code = [
0x48, 0xba, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x0a, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_rsi() {
let mut emu = emu64();
let code = [
0x48, 0xbe, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x0e, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_rdi() {
let mut emu = emu64();
let code = [
0x48, 0xbf, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x0f, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_r8() {
let mut emu = emu64();
let code = [
0x49, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0x41, 0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_r9() {
let mut emu = emu64();
let code = [
0x49, 0xb9, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0x41, 0xdf, 0x09, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_r10() {
let mut emu = emu64();
let code = [
0x49, 0xba, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0x41, 0xdb, 0x0a, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_r11() {
let mut emu = emu64();
let code = [
0x49, 0xbb, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0x41, 0xdd, 0x0b, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_sequential() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xdf, 0x48, 0x02, 0xdf, 0x48, 0x04, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_sequential() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xdb, 0x48, 0x04, 0xdb, 0x48, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_sequential() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xdd, 0x48, 0x08, 0xdd, 0x48, 0x10, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_mixed_sizes() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xdb, 0x48, 0x04, 0xdd, 0x48, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_fractional_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m16_fractional_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdf, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_fractional_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m32_fractional_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdb, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_fractional_positive() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}
#[test]
fn test_fisttp_m64_fractional_negative() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&ALIGNED_ADDR.to_le_bytes());
full_code.extend_from_slice(&[
0xdd, 0x08, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.run(None).unwrap();
}