MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / pow_invoke

Function pow_invoke

dnn/src/fallback/powc/opr_impl.cpp:150–168  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

148
149template <typename T, class ExpFunc>
150void pow_invoke(const T* src, T* dst, size_t size, ExpFunc expfunc) {
151 size_t i;
152 for (i = 0; i + 4 <= size; i += 4) {
153 T a0 = src[i], a1 = src[i + 1], a2 = src[i + 2], a3 = src[i + 3];
154 T b0 = expfunc.apply(a0), b1 = expfunc.apply(a1), b2 = expfunc.apply(a2),
155 b3 = expfunc.apply(a3);
156 dst[i] = b0;
157 dst[i + 1] = b1;
158 dst[i + 2] = b2;
159 dst[i + 3] = b3;
160 }
161#if MEGDNN_FIX_AARCH32_BUG
162// FIXME: as llvm may cause cannot select error if enable vectorize
163#pragma clang loop vectorize(disable)
164#endif
165 for (; i < size; ++i) {
166 dst[i] = expfunc.apply(src[i]);
167 }
168}
169
170bool float_eq(float x, float y) {
171 return std::abs(x - y) < std::numeric_limits<float>::epsilon();

Callers

nothing calls this directly

Calls 1

applyMethod · 0.45

Tested by

no test coverage detected