1 use crate::dsl::{Customization::*, Feature::*, Inst, Location::*};
2 use crate::dsl::{fmt, inst, r, rex, sxl, w};
3 
4 #[rustfmt::skip] // Keeps instructions on a single line.
list() -> Vec<Inst>5 pub fn list() -> Vec<Inst> {
6     vec![
7         inst("mfence", fmt("ZO", []), rex([0x0f, 0xae, 0xf0]), (_64b | compat) & sse2),
8         inst("sfence", fmt("ZO", []), rex([0x0f, 0xae, 0xf8]), _64b | compat),
9         inst("lfence", fmt("ZO", []), rex([0x0f, 0xae, 0xe8]), (_64b | compat) & sse2),
10 
11         inst("hlt", fmt("ZO", []), rex([0xf4]), _64b | compat),
12         inst("ud2", fmt("ZO", []), rex([0x0f, 0x0b]), _64b | compat).has_trap(),
13         inst("int3", fmt("ZO", []), rex([0xcc]), _64b | compat),
14 
15         inst("retq", fmt("ZO", []), rex([0xC3]), _64b | compat),
16         inst("retq", fmt("I", [r(imm16)]), rex([0xC2]).iw(), _64b | compat),
17 
18         inst("leaw", fmt("RM", [w(r16), r(m16)]), rex([0x66, 0x8D]).r(), _64b | compat),
19         inst("leal", fmt("RM", [w(r32), r(m32)]), rex([0x8D]).r(), _64b | compat),
20         inst("leaq", fmt("RM", [w(r64), r(m64)]), rex([0x8D]).w().r(), _64b),
21 
22         inst("callq", fmt("D", [r(sxl(imm32))]), rex([0xE8]).id(), _64b | compat).custom(Display),
23         inst("callq", fmt("M", [r(rm64)]), rex([0xFF]).digit(2), _64b).custom(Display),
24     ]
25 }
26