use crate::*;
const ALIGNED_ADDR: u64 = 0x3000; const UNALIGNED_ADDR: u64 = 0x3001;
#[test]
fn test_vmovdqa_ymm0_to_ymm1() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xc8, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm1_to_ymm2() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xd1, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm2_to_ymm3() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xda, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm3_to_ymm4() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xe3, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm4_to_ymm5() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xec, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm5_to_ymm6() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xf5, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm6_to_ymm7() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xfe, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm7_to_ymm0() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0xc7, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm8_to_ymm9() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x6f, 0xc8, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm12_to_ymm13() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x6f, 0xec, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm14_to_ymm15() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x6f, 0xfe, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_mem_to_ymm0_aligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0x05, 0xf7, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
];
emu.maps.write_bytes_slice(ALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_mem_to_ymm1_aligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x6f, 0x0d, 0xf7, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa];
emu.maps.write_bytes_slice(ALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_mem_to_ymm8_aligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x6f, 0x05, 0xf6, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb];
emu.maps.write_bytes_slice(ALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm0_to_mem_aligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x7f, 0x05, 0xf7, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm1_to_mem_aligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfd, 0x7f, 0x0d, 0xf7, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm8_to_mem_aligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x7f, 0x05, 0xf6, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm15_to_mem_aligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x7f, 0x3d, 0xf6, 0x1f, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm0_to_ymm1() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xc8, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm1_to_ymm2() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xd1, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm2_to_ymm3() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xda, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm3_to_ymm4() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xe3, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm4_to_ymm5() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xec, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm5_to_ymm6() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xf5, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm6_to_ymm7() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xfe, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm7_to_ymm0() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0xc7, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm8_to_ymm9() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0xc8, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm12_to_ymm13() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0xec, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm14_to_ymm15() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0xfe, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_mem_to_ymm0_unaligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0x05, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [
0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22,
0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44,
0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66,
0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88,
];
emu.maps.write_bytes_slice(UNALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_mem_to_ymm1_unaligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x6f, 0x0d, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc];
emu.maps.write_bytes_slice(UNALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_mem_to_ymm8_unaligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0x05, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd];
emu.maps.write_bytes_slice(UNALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_mem_to_ymm15_unaligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0x3d, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
let test_data: [u8; 32] = [0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee];
emu.maps.write_bytes_slice(UNALIGNED_ADDR, &test_data);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm0_to_mem_unaligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x7f, 0x05, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm1_to_mem_unaligned() {
let mut emu = emu64();
let code = [
0xc5, 0xfe, 0x7f, 0x0d, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm8_to_mem_unaligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x7f, 0x05, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm15_to_mem_unaligned() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x7f, 0x3d, 0x01, 0x40, 0x00, 0x00, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm0_to_ymm8() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x6f, 0xc0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqa_ymm8_to_ymm0() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfd, 0x6f, 0xc0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm0_to_ymm8() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0xc0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmovdqu_ymm8_to_ymm0() {
let mut emu = emu64();
let code = [
0xc4, 0xc1, 0xfe, 0x6f, 0xc0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}