Path: blob/main/cranelift/assembler-x64/meta/src/instructions/unpack.rs
1693 views
use crate::dsl::{Feature::*, Inst, Length::*, Location::*};1use crate::dsl::{align, fmt, inst, r, rex, rw, vex, w};23#[rustfmt::skip] // Keeps instructions on a single line.4pub fn list() -> Vec<Inst> {5vec![6// Unpack floating-point.7inst("unpcklps", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x0F, 0x14]).r(), (_64b | compat) & sse).alt(avx, "vunpcklps_b"),8inst("unpcklpd", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x14]).r(), (_64b | compat) & sse2).alt(avx, "vunpcklpd_b"),9inst("unpckhps", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x0F, 0x15]).r(), (_64b | compat) & sse).alt(avx, "vunpckhps_b"),10inst("vunpcklps", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._0f().op(0x14).r(), (_64b | compat) & avx),11inst("vunpcklpd", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x14).r(), (_64b | compat) & avx),12inst("vunpckhps", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._0f().op(0x15).r(), (_64b | compat) & avx),13// Unpack packed integers.14inst("punpckhbw", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x68]).r(), (_64b | compat) & sse2).alt(avx, "vpunpckhbw_b"),15inst("punpckhwd", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x69]).r(), (_64b | compat) & sse2).alt(avx, "vpunpckhwd_b"),16inst("punpckhdq", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x6A]).r(), (_64b | compat) & sse2).alt(avx, "vpunpckhdq_b"),17inst("punpckhqdq", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x6D]).r(), (_64b | compat) & sse2).alt(avx, "vpunpckhqdq_b"),18inst("punpcklwd", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x61]).r(), (_64b | compat) & sse2).alt(avx, "vpunpcklwd_b"),19inst("punpcklbw", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x60]).r(), (_64b | compat) & sse2).alt(avx, "vpunpcklbw_b"),20inst("punpckldq", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x62]).r(), (_64b | compat) & sse2).alt(avx, "vpunpckldq_b"),21inst("punpcklqdq", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x6C]).r(), (_64b | compat) & sse2).alt(avx, "vpunpcklqdq_b"),22inst("vpunpckhbw", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x68).r(), (_64b | compat) & avx),23inst("vpunpckhwd", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x69).r(), (_64b | compat) & avx),24inst("vpunpckhdq", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x6A).r(), (_64b | compat) & avx),25inst("vpunpckhqdq", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x6D).r(), (_64b | compat) & avx),26inst("vpunpcklwd", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x61).r(), (_64b | compat) & avx),27inst("vpunpcklbw", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x60).r(), (_64b | compat) & avx),28inst("vpunpckldq", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x62).r(), (_64b | compat) & avx),29inst("vpunpcklqdq", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(L128)._66()._0f().op(0x6C).r(), (_64b | compat) & avx),30]31}323334