// SPDX-License-Identifier: MIT
// Copyright (C) 2018-present iced project and contributors

// ⚠️This file was generated by GENERATOR!🦹‍♂️

package com.github.icedland.iced.x86.asm;

import org.junit.jupiter.api.Test;

import com.github.icedland.iced.x86.*;
import static com.github.icedland.iced.x86.asm.AsmRegisters.*;

@SuppressWarnings("cast")
final class CodeAssembler16GenUTests extends CodeAssemblerTestsBase {
	CodeAssembler16GenUTests() {
		super(16);
	}

	@Test
	void ucomisd_xmm_xmm() {
		testAssembler(c -> c.ucomisd(xmm2, xmm3), Instruction.create(Code.UCOMISD_XMM_XMMM64, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void ucomisd_xmm_m() {
		testAssembler(c -> c.ucomisd(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.UCOMISD_XMM_XMMM64, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void ucomiss_xmm_xmm() {
		testAssembler(c -> c.ucomiss(xmm2, xmm3), Instruction.create(Code.UCOMISS_XMM_XMMM32, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void ucomiss_xmm_m() {
		testAssembler(c -> c.ucomiss(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.UCOMISS_XMM_XMMM32, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void ud0() {
		testAssembler(c -> c.ud0(), Instruction.create(Code.UD0), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.AMD);
	}

	@Test
	void ud0_r16_r16() {
		testAssembler(c -> c.ud0(dx, bx), Instruction.create(Code.UD0_R16_RM16, ICRegisters.dx, ICRegisters.bx));
	}

	@Test
	void ud0_r32_r32() {
		testAssembler(c -> c.ud0(edx, ebx), Instruction.create(Code.UD0_R32_RM32, ICRegisters.edx, ICRegisters.ebx));
	}

	@Test
	void ud0_r16_m() {
		testAssembler(c -> c.ud0(dx, word_ptr(0x0L).base(si)), Instruction.create(Code.UD0_R16_RM16, ICRegisters.dx, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void ud0_r32_m() {
		testAssembler(c -> c.ud0(edx, dword_ptr(0x0L).base(si)), Instruction.create(Code.UD0_R32_RM32, ICRegisters.edx, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void ud1_r16_r16() {
		testAssembler(c -> c.ud1(dx, bx), Instruction.create(Code.UD1_R16_RM16, ICRegisters.dx, ICRegisters.bx));
	}

	@Test
	void ud1_r32_r32() {
		testAssembler(c -> c.ud1(edx, ebx), Instruction.create(Code.UD1_R32_RM32, ICRegisters.edx, ICRegisters.ebx));
	}

	@Test
	void ud1_r16_m() {
		testAssembler(c -> c.ud1(dx, word_ptr(0x0L).base(si)), Instruction.create(Code.UD1_R16_RM16, ICRegisters.dx, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void ud1_r32_m() {
		testAssembler(c -> c.ud1(edx, dword_ptr(0x0L).base(si)), Instruction.create(Code.UD1_R32_RM32, ICRegisters.edx, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void ud2() {
		testAssembler(c -> c.ud2(), Instruction.create(Code.UD2));
	}

	@Test
	void umonitor_r16() {
		testAssembler(c -> c.umonitor(dx), Instruction.create(Code.UMONITOR_R16, ICRegisters.dx));
	}

	@Test
	void umonitor_r32() {
		testAssembler(c -> c.umonitor(edx), Instruction.create(Code.UMONITOR_R32, ICRegisters.edx));
	}

	@Test
	void umov_r8_r8() {
		testAssembler(c -> c.umov(dl, bl), Instruction.create(Code.UMOV_RM8_R8, ICRegisters.dl, ICRegisters.bl), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_m_r8() {
		testAssembler(c -> c.umov(byte_ptr(0x0L).base(si), bl), Instruction.create(Code.UMOV_RM8_R8, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE), ICRegisters.bl), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_r16_r16() {
		testAssembler(c -> c.umov(dx, bx), Instruction.create(Code.UMOV_RM16_R16, ICRegisters.dx, ICRegisters.bx), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_m_r16() {
		testAssembler(c -> c.umov(word_ptr(0x0L).base(si), bx), Instruction.create(Code.UMOV_RM16_R16, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE), ICRegisters.bx), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_r32_r32() {
		testAssembler(c -> c.umov(edx, ebx), Instruction.create(Code.UMOV_RM32_R32, ICRegisters.edx, ICRegisters.ebx), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_m_r32() {
		testAssembler(c -> c.umov(dword_ptr(0x0L).base(si), ebx), Instruction.create(Code.UMOV_RM32_R32, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE), ICRegisters.ebx), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_r8_m() {
		testAssembler(c -> c.umov(dl, byte_ptr(0x0L).base(si)), Instruction.create(Code.UMOV_R8_RM8, ICRegisters.dl, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_r16_m() {
		testAssembler(c -> c.umov(dx, word_ptr(0x0L).base(si)), Instruction.create(Code.UMOV_R16_RM16, ICRegisters.dx, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umov_r32_m() {
		testAssembler(c -> c.umov(edx, dword_ptr(0x0L).base(si)), Instruction.create(Code.UMOV_R32_RM32, ICRegisters.edx, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.NONE, com.github.icedland.iced.x86.dec.DecoderOptions.UMOV);
	}

	@Test
	void umwait_r32() {
		testAssembler(c -> c.umwait(edx), Instruction.create(Code.UMWAIT_R32, ICRegisters.edx));
	}

	@Test
	void unpckhpd_xmm_xmm() {
		testAssembler(c -> c.unpckhpd(xmm2, xmm3), Instruction.create(Code.UNPCKHPD_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void unpckhpd_xmm_m() {
		testAssembler(c -> c.unpckhpd(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.UNPCKHPD_XMM_XMMM128, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void unpckhps_xmm_xmm() {
		testAssembler(c -> c.unpckhps(xmm2, xmm3), Instruction.create(Code.UNPCKHPS_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void unpckhps_xmm_m() {
		testAssembler(c -> c.unpckhps(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.UNPCKHPS_XMM_XMMM128, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void unpcklpd_xmm_xmm() {
		testAssembler(c -> c.unpcklpd(xmm2, xmm3), Instruction.create(Code.UNPCKLPD_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void unpcklpd_xmm_m() {
		testAssembler(c -> c.unpcklpd(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.UNPCKLPD_XMM_XMMM128, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void unpcklps_xmm_xmm() {
		testAssembler(c -> c.unpcklps(xmm2, xmm3), Instruction.create(Code.UNPCKLPS_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void unpcklps_xmm_m() {
		testAssembler(c -> c.unpcklps(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.UNPCKLPS_XMM_XMMM128, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void vucomisd_xmm_xmm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vucomisd(xmm2, xmm3), Instruction.create(Code.VEX_VUCOMISD_XMM_XMMM64, ICRegisters.xmm2, ICRegisters.xmm3), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vucomisd(xmm2, xmm3), Instruction.create(Code.EVEX_VUCOMISD_XMM_XMMM64_SAE, ICRegisters.xmm2, ICRegisters.xmm3), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vucomisd_xmm_m() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vucomisd(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUCOMISD_XMM_XMMM64, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vucomisd(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.EVEX_VUCOMISD_XMM_XMMM64_SAE, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vucomish_xmm_xmm() {
		testAssembler(c -> c.vucomish(xmm2, xmm3), Instruction.create(Code.EVEX_VUCOMISH_XMM_XMMM16_SAE, ICRegisters.xmm2, ICRegisters.xmm3));
	}

	@Test
	void vucomish_xmm_m() {
		testAssembler(c -> c.vucomish(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.EVEX_VUCOMISH_XMM_XMMM16_SAE, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)));
	}

	@Test
	void vucomiss_xmm_xmm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vucomiss(xmm2, xmm3), Instruction.create(Code.VEX_VUCOMISS_XMM_XMMM32, ICRegisters.xmm2, ICRegisters.xmm3), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vucomiss(xmm2, xmm3), Instruction.create(Code.EVEX_VUCOMISS_XMM_XMMM32_SAE, ICRegisters.xmm2, ICRegisters.xmm3), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vucomiss_xmm_m() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vucomiss(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUCOMISS_XMM_XMMM32, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vucomiss(xmm2, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.EVEX_VUCOMISS_XMM_XMMM32_SAE, ICRegisters.xmm2, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhpd_xmm_xmm_xmm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhpd(xmm2, xmm3, xmm4), Instruction.create(Code.VEX_VUNPCKHPD_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhpd(xmm2.k1(), xmm3, xmm4), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_XMM_K1Z_XMM_XMMM128B64, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhpd_ymm_ymm_ymm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhpd(ymm2, ymm3, ymm4), Instruction.create(Code.VEX_VUNPCKHPD_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhpd(ymm2.k1(), ymm3, ymm4), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_YMM_K1Z_YMM_YMMM256B64, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhpd_zmm_zmm_zmm() {
		testAssembler(c -> c.vunpckhpd(zmm2.k1(), zmm3, zmm4), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_ZMM_K1Z_ZMM_ZMMM512B64, ICRegisters.zmm2, ICRegisters.zmm3, ICRegisters.zmm4), Register.K1));
	}

	@Test
	void vunpckhpd_xmm_xmm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpckhpd(xmm2.k1(), xmm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_XMM_K1Z_XMM_XMMM128B64, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhpd(xmm2, xmm3, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKHPD_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhpd(xmm2.k1(), xmm3, xmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_XMM_K1Z_XMM_XMMM128B64, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhpd_ymm_ymm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpckhpd(ymm2.k1(), ymm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_YMM_K1Z_YMM_YMMM256B64, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhpd(ymm2, ymm3, ymmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKHPD_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhpd(ymm2.k1(), ymm3, ymmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_YMM_K1Z_YMM_YMMM256B64, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhpd_zmm_zmm_m() {
		testAssembler(c -> c.vunpckhpd(zmm2.k1(), zmm3, zmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKHPD_ZMM_K1Z_ZMM_ZMMM512B64, ICRegisters.zmm2, ICRegisters.zmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1));
	}

	@Test
	void vunpckhps_xmm_xmm_xmm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhps(xmm2, xmm3, xmm4), Instruction.create(Code.VEX_VUNPCKHPS_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhps(xmm2.k1(), xmm3, xmm4), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_XMM_K1Z_XMM_XMMM128B32, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhps_ymm_ymm_ymm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhps(ymm2, ymm3, ymm4), Instruction.create(Code.VEX_VUNPCKHPS_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhps(ymm2.k1(), ymm3, ymm4), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_YMM_K1Z_YMM_YMMM256B32, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhps_zmm_zmm_zmm() {
		testAssembler(c -> c.vunpckhps(zmm2.k1(), zmm3, zmm4), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_ZMM_K1Z_ZMM_ZMMM512B32, ICRegisters.zmm2, ICRegisters.zmm3, ICRegisters.zmm4), Register.K1));
	}

	@Test
	void vunpckhps_xmm_xmm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpckhps(xmm2.k1(), xmm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_XMM_K1Z_XMM_XMMM128B32, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhps(xmm2, xmm3, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKHPS_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhps(xmm2.k1(), xmm3, xmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_XMM_K1Z_XMM_XMMM128B32, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhps_ymm_ymm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpckhps(ymm2.k1(), ymm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_YMM_K1Z_YMM_YMMM256B32, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpckhps(ymm2, ymm3, ymmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKHPS_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpckhps(ymm2.k1(), ymm3, ymmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_YMM_K1Z_YMM_YMMM256B32, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpckhps_zmm_zmm_m() {
		testAssembler(c -> c.vunpckhps(zmm2.k1(), zmm3, zmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKHPS_ZMM_K1Z_ZMM_ZMMM512B32, ICRegisters.zmm2, ICRegisters.zmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1));
	}

	@Test
	void vunpcklpd_xmm_xmm_xmm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklpd(xmm2, xmm3, xmm4), Instruction.create(Code.VEX_VUNPCKLPD_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklpd(xmm2.k1(), xmm3, xmm4), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_XMM_K1Z_XMM_XMMM128B64, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklpd_ymm_ymm_ymm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklpd(ymm2, ymm3, ymm4), Instruction.create(Code.VEX_VUNPCKLPD_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklpd(ymm2.k1(), ymm3, ymm4), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_YMM_K1Z_YMM_YMMM256B64, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklpd_zmm_zmm_zmm() {
		testAssembler(c -> c.vunpcklpd(zmm2.k1(), zmm3, zmm4), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_ZMM_K1Z_ZMM_ZMMM512B64, ICRegisters.zmm2, ICRegisters.zmm3, ICRegisters.zmm4), Register.K1));
	}

	@Test
	void vunpcklpd_xmm_xmm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpcklpd(xmm2.k1(), xmm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_XMM_K1Z_XMM_XMMM128B64, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklpd(xmm2, xmm3, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKLPD_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklpd(xmm2.k1(), xmm3, xmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_XMM_K1Z_XMM_XMMM128B64, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklpd_ymm_ymm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpcklpd(ymm2.k1(), ymm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_YMM_K1Z_YMM_YMMM256B64, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklpd(ymm2, ymm3, ymmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKLPD_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklpd(ymm2.k1(), ymm3, ymmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_YMM_K1Z_YMM_YMMM256B64, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklpd_zmm_zmm_m() {
		testAssembler(c -> c.vunpcklpd(zmm2.k1(), zmm3, zmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKLPD_ZMM_K1Z_ZMM_ZMMM512B64, ICRegisters.zmm2, ICRegisters.zmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1));
	}

	@Test
	void vunpcklps_xmm_xmm_xmm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklps(xmm2, xmm3, xmm4), Instruction.create(Code.VEX_VUNPCKLPS_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklps(xmm2.k1(), xmm3, xmm4), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_XMM_K1Z_XMM_XMMM128B32, ICRegisters.xmm2, ICRegisters.xmm3, ICRegisters.xmm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklps_ymm_ymm_ymm() {
		{ /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklps(ymm2, ymm3, ymm4), Instruction.create(Code.VEX_VUNPCKLPS_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklps(ymm2.k1(), ymm3, ymm4), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_YMM_K1Z_YMM_YMMM256B32, ICRegisters.ymm2, ICRegisters.ymm3, ICRegisters.ymm4), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklps_zmm_zmm_zmm() {
		testAssembler(c -> c.vunpcklps(zmm2.k1(), zmm3, zmm4), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_ZMM_K1Z_ZMM_ZMMM512B32, ICRegisters.zmm2, ICRegisters.zmm3, ICRegisters.zmm4), Register.K1));
	}

	@Test
	void vunpcklps_xmm_xmm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpcklps(xmm2.k1(), xmm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_XMM_K1Z_XMM_XMMM128B32, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklps(xmm2, xmm3, xmmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKLPS_XMM_XMM_XMMM128, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklps(xmm2.k1(), xmm3, xmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_XMM_K1Z_XMM_XMMM128B32, ICRegisters.xmm2, ICRegisters.xmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklps_ymm_ymm_m() {
		{ /* if (src2.isBroadcast()) */
			testAssembler(c -> c.vunpcklps(ymm2.k1(), ymm3, dword_bcst(0x0L).base(di)), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_YMM_K1Z_YMM_YMMM256B32, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.di, ICRegister.NONE, 1, 0x0L, 0, true, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX | TestInstrFlags.BROADCAST);
		} /* else */ { /* if (getInstructionPreferVex()) */
			testAssembler(c -> c.vunpcklps(ymm2, ymm3, ymmword_ptr(0x0L).base(si)), Instruction.create(Code.VEX_VUNPCKLPS_YMM_YMM_YMMM256, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), TestInstrFlags.PREFER_VEX);
		} /* else */ testAssembler(c -> c.vunpcklps(ymm2.k1(), ymm3, ymmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_YMM_K1Z_YMM_YMMM256B32, ICRegisters.ymm2, ICRegisters.ymm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1), TestInstrFlags.PREFER_EVEX);
	}

	@Test
	void vunpcklps_zmm_zmm_m() {
		testAssembler(c -> c.vunpcklps(zmm2.k1(), zmm3, zmmword_ptr(0x0L).base(si)), applyK(Instruction.create(Code.EVEX_VUNPCKLPS_ZMM_K1Z_ZMM_ZMMM512B32, ICRegisters.zmm2, ICRegisters.zmm3, new MemoryOperand(ICRegisters.si, ICRegister.NONE, 1, 0x0L, 0, false, ICRegister.NONE)), Register.K1));
	}

}
