Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/cranelift/assembler-x64/meta/src/instructions/round.rs
1693 views
1
use crate::dsl::{Feature::*, Inst, Length::*, Location::*};
2
use crate::dsl::{align, fmt, inst, r, rex, vex, w};
3
4
#[rustfmt::skip] // Keeps instructions on a single line.
5
pub fn list() -> Vec<Inst> {
6
vec![
7
inst("roundpd", fmt("RMI", [w(xmm1), r(align(xmm_m128)), r(imm8)]), rex([0x66, 0x0F, 0x3A, 0x09]).ib(), (_64b | compat) & sse41),
8
inst("roundps", fmt("RMI", [w(xmm1), r(align(xmm_m128)), r(imm8)]), rex([0x66, 0x0F, 0x3A, 0x08]).ib(), (_64b | compat) & sse41),
9
inst("roundsd", fmt("RMI", [w(xmm1), r(xmm_m64), r(imm8)]), rex([0x66, 0x0F, 0x3A, 0x0B]).ib(), (_64b | compat) & sse41),
10
inst("roundss", fmt("RMI", [w(xmm1), r(xmm_m32), r(imm8)]), rex([0x66, 0x0F, 0x3A, 0x0A]).ib(), (_64b | compat) & sse41),
11
12
// AVX versions
13
inst("vroundpd", fmt("RMI", [w(xmm1), r(xmm_m128), r(imm8)]), vex(L128)._66()._0f3a().ib().op(0x09), (_64b | compat) & avx),
14
inst("vroundps", fmt("RMI", [w(xmm1), r(xmm_m128), r(imm8)]), vex(L128)._66()._0f3a().ib().op(0x08), (_64b | compat) & avx),
15
inst("vroundsd", fmt("RVMI", [w(xmm1), r(xmm2), r(xmm_m64), r(imm8)]), vex(LIG)._66()._0f3a().ib().op(0x0b), (_64b | compat) & avx),
16
inst("vroundss", fmt("RVMI", [w(xmm1), r(xmm2), r(xmm_m32), r(imm8)]), vex(LIG)._66()._0f3a().ib().op(0x0a), (_64b | compat) & avx),
17
]
18
}
19
20