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

Function EmitVectorStoreImpl

external/biscuit/src/assembler_vector.cpp:89–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89void EmitVectorStoreImpl(CodeBuffer& buffer, uint32_t nf, bool mew, AddressingMode mop,
90 VecMask vm, uint32_t sumop, GPR rs, WidthEncoding width, Vec vd) noexcept {
91 BISCUIT_ASSERT(nf <= 8);
92
93 // Fit to encoding space. Allows for being more explicit about the size in calling functions
94 // (e.g. using 8 for 8 elements instead of 7).
95 if (nf != 0) {
96 nf -= 1;
97 }
98
99 // clang-format off
100 const auto value = (nf << 29) |
101 (static_cast<uint32_t>(mew) << 28) |
102 (static_cast<uint32_t>(mop) << 26) |
103 (static_cast<uint32_t>(vm) << 25) |
104 (sumop << 20) |
105 (rs.Index() << 15) |
106 (static_cast<uint32_t>(width) << 12) |
107 (vd.Index() << 7);
108 // clang-format on
109
110 buffer.Emit32(value | 0b100111);
111}
112
113void EmitVectorStore(CodeBuffer& buffer, uint32_t nf, bool mew, AddressingMode mop,
114 VecMask vm, UnitStrideStoreAddressingMode lumop, GPR rs,

Callers 2

EmitVectorStoreFunction · 0.85
EmitVectorStoreWholeRegFunction · 0.85

Calls 2

IndexMethod · 0.80
Emit32Method · 0.80

Tested by

no test coverage detected