| 87 | } |
| 88 | |
| 89 | void 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 | |
| 113 | void EmitVectorStore(CodeBuffer& buffer, uint32_t nf, bool mew, AddressingMode mop, |
| 114 | VecMask vm, UnitStrideStoreAddressingMode lumop, GPR rs, |
no test coverage detected