use crate::*;
const ALIGNED_ADDR: u64 = 0x3000;
#[test]
fn test_vmulps_zmm0_zmm1_zmm2() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x74, 0x48, 0x59, 0xc2, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm1_zmm2_zmm3() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x6c, 0x48, 0x59, 0xcb, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm2_zmm3_zmm4() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x64, 0x48, 0x59, 0xd4, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm3_zmm4_zmm5() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x5c, 0x48, 0x59, 0xdd, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm4_zmm5_zmm6() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x54, 0x48, 0x59, 0xe6, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm5_zmm6_zmm7() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x4c, 0x48, 0x59, 0xef, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm6_zmm7_zmm0() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x44, 0x48, 0x59, 0xf0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm7_zmm0_zmm1() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x7c, 0x48, 0x59, 0xf9, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm8_zmm9_zmm10() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x34, 0x48, 0x59, 0xc2, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm9_zmm10_zmm11() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x2c, 0x48, 0x59, 0xcb, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm10_zmm11_zmm12() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x24, 0x48, 0x59, 0xd4, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm11_zmm12_zmm13() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x1c, 0x48, 0x59, 0xdd, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm12_zmm13_zmm14() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x14, 0x48, 0x59, 0xe6, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm13_zmm14_zmm15() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x0c, 0x48, 0x59, 0xef, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm14_zmm15_zmm8() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x04, 0x48, 0x59, 0xf0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm15_zmm8_zmm9() {
let mut emu = emu64();
let code = [
0x62, 0x51, 0x3c, 0x48, 0x59, 0xf9, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm16_zmm17_zmm18() {
let mut emu = emu64();
let code = [
0x62, 0xd1, 0x74, 0x48, 0x59, 0xc2, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm17_zmm18_zmm19() {
let mut emu = emu64();
let code = [
0x62, 0xd1, 0x6c, 0x48, 0x59, 0xcb, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm20_zmm21_zmm22() {
let mut emu = emu64();
let code = [
0x62, 0xd1, 0x54, 0x48, 0x59, 0xe6, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm21_zmm22_zmm23() {
let mut emu = emu64();
let code = [
0x62, 0xd1, 0x4c, 0x48, 0x59, 0xef, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm24_zmm25_zmm26() {
let mut emu = emu64();
let code = [
0x62, 0x91, 0x34, 0x48, 0x59, 0xc2, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm25_zmm26_zmm27() {
let mut emu = emu64();
let code = [
0x62, 0x91, 0x2c, 0x48, 0x59, 0xcb, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm28_zmm29_zmm30() {
let mut emu = emu64();
let code = [
0x62, 0x91, 0x14, 0x48, 0x59, 0xe6, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm29_zmm30_zmm31() {
let mut emu = emu64();
let code = [
0x62, 0x91, 0x0c, 0x48, 0x59, 0xef, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm30_zmm31_zmm24() {
let mut emu = emu64();
let code = [
0x62, 0x91, 0x04, 0x48, 0x59, 0xf0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm31_zmm24_zmm25() {
let mut emu = emu64();
let code = [
0x62, 0x91, 0x5c, 0x48, 0x59, 0xf9, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm0_zmm15_zmm31() {
let mut emu = emu64();
let code = [
0x62, 0x71, 0x04, 0x48, 0x59, 0xc7, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm31_zmm0_zmm15() {
let mut emu = emu64();
let code = [
0x62, 0x71, 0x7c, 0x48, 0x59, 0xff, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm7_zmm16_zmm24() {
let mut emu = emu64();
let code = [
0x62, 0xb1, 0x7c, 0x48, 0x59, 0xf8, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm0_zmm1_mem() {
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(&[
0x62, 0xf1, 0x74, 0x48, 0x59, 0x00, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm7_zmm6_mem() {
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(&[
0x62, 0xf1, 0x4c, 0x48, 0x59, 0x38, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm15_zmm14_mem() {
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(&[
0x62, 0x71, 0x0c, 0x48, 0x59, 0x38, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm31_zmm30_mem() {
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(&[
0x62, 0x61, 0x0c, 0x48, 0x59, 0x38, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm0_zmm0_zmm0() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x7c, 0x48, 0x59, 0xc0, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm15_zmm15_zmm15() {
let mut emu = emu64();
let code = [
0x62, 0x71, 0x04, 0x48, 0x59, 0xff, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_zmm31_zmm31_zmm31() {
let mut emu = emu64();
let code = [
0x62, 0x61, 0x04, 0x48, 0x59, 0xff, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_commutative_zmm1_zmm2_zmm3() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x6c, 0x48, 0x59, 0xcb, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_commutative_zmm1_zmm3_zmm2() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x64, 0x48, 0x59, 0xca, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_chain_3_ops() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x7c, 0x48, 0x59, 0xd9, 0x62, 0xf1, 0x64, 0x48, 0x59, 0xda, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_chain_4_ops() {
let mut emu = emu64();
let code = [
0x62, 0xf1, 0x7c, 0x48, 0x59, 0xe1, 0x62, 0xf1, 0x6c, 0x48, 0x59, 0xeb, 0x62, 0xf1, 0x5c, 0x48, 0x59, 0xf5, 0xf4, ];
emu.load_code_bytes(&code);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_mem_base_displacement() {
let mut emu = emu64();
let code = [
0x48, 0xb8, ];
let mut full_code = code.to_vec();
full_code.extend_from_slice(&(ALIGNED_ADDR - 0x40).to_le_bytes());
full_code.extend_from_slice(&[
0x62, 0xf1, 0x74, 0x48, 0x59, 0x40, 0x01, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_mem_with_rbx_base() {
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(&[
0x62, 0xf1, 0x64, 0x48, 0x59, 0x13, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_mem_with_rcx_base() {
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(&[
0x62, 0xf1, 0x54, 0x48, 0x59, 0x21, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}
#[test]
fn test_vmulps_mem_with_rdx_base() {
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(&[
0x62, 0xf1, 0x44, 0x48, 0x59, 0x32, 0xf4, ]);
emu.load_code_bytes(&full_code);
emu.maps.write_bytes_slice(ALIGNED_ADDR, &[0x00u8; 64]);
emu.run(None).unwrap();
}