MCPcopy Create free account
hub / github.com/OFFTKP/felix86 / EmitVectorLoadImpl

Function EmitVectorLoadImpl

external/biscuit/src/assembler_vector.cpp:40–62  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38};
39
40void EmitVectorLoadImpl(CodeBuffer& buffer, uint32_t nf, bool mew, AddressingMode mop,
41 VecMask vm, uint32_t lumop, GPR rs, WidthEncoding width, Vec vd) noexcept {
42 BISCUIT_ASSERT(nf <= 8);
43
44 // Fit to encoding space. Allows for being more explicit about the size in calling functions
45 // (e.g. using 8 for 8 elements instead of 7).
46 if (nf != 0) {
47 nf -= 1;
48 }
49
50 // clang-format off
51 const auto value = (nf << 29) |
52 (static_cast<uint32_t>(mew) << 28) |
53 (static_cast<uint32_t>(mop) << 26) |
54 (static_cast<uint32_t>(vm) << 25) |
55 (lumop << 20) |
56 (rs.Index() << 15) |
57 (static_cast<uint32_t>(width) << 12) |
58 (vd.Index() << 7);
59 // clang-format on
60
61 buffer.Emit32(value | 0b111);
62}
63
64void EmitVectorLoad(CodeBuffer& buffer, uint32_t nf, bool mew, AddressingMode mop,
65 VecMask vm, UnitStrideLoadAddressingMode lumop, GPR rs,

Callers 2

EmitVectorLoadFunction · 0.85
EmitVectorLoadWholeRegFunction · 0.85

Calls 2

IndexMethod · 0.80
Emit32Method · 0.80

Tested by

no test coverage detected