MCPcopy Create free account
hub / github.com/VectorDB-NTU/RaBitQ-Library / helper_float_4

Function helper_float_4

include/rabitqlib/utils/fht_avx.hpp:86–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84}
85inline void helper_float_4(float *buf);
86inline void helper_float_4(float *buf) {
87 for (int j = 0; j < 16; j += 16) {
88 for (int k = 0; k < 8; k += 8) {
89 __asm__ volatile (
90 "vmovups (%0), %%ymm0\n"
91 "vmovups (%1), %%ymm1\n"
92 "vpermilps $160, %%ymm0, %%ymm8\n"
93 "vpermilps $245, %%ymm0, %%ymm9\n"
94 "vxorps %%ymm10, %%ymm10, %%ymm10\n"
95 "vsubps %%ymm9, %%ymm10, %%ymm11\n"
96 "vaddsubps %%ymm11, %%ymm8, %%ymm0\n"
97 "vpermilps $160, %%ymm1, %%ymm8\n"
98 "vpermilps $245, %%ymm1, %%ymm9\n"
99 "vxorps %%ymm10, %%ymm10, %%ymm10\n"
100 "vsubps %%ymm9, %%ymm10, %%ymm11\n"
101 "vaddsubps %%ymm11, %%ymm8, %%ymm1\n"
102 "vpermilps $68, %%ymm0, %%ymm8\n"
103 "vpermilps $238, %%ymm0, %%ymm9\n"
104 "vxorps %%ymm10, %%ymm10, %%ymm10\n"
105 "vsubps %%ymm9, %%ymm10, %%ymm11\n"
106 "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n"
107 "vaddps %%ymm8, %%ymm12, %%ymm0\n"
108 "vpermilps $68, %%ymm1, %%ymm8\n"
109 "vpermilps $238, %%ymm1, %%ymm9\n"
110 "vxorps %%ymm10, %%ymm10, %%ymm10\n"
111 "vsubps %%ymm9, %%ymm10, %%ymm11\n"
112 "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n"
113 "vaddps %%ymm8, %%ymm12, %%ymm1\n"
114 "vxorps %%ymm8, %%ymm8, %%ymm8\n"
115 "vsubps %%ymm0, %%ymm8, %%ymm9\n"
116 "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n"
117 "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n"
118 "vaddps %%ymm10, %%ymm11, %%ymm0\n"
119 "vxorps %%ymm8, %%ymm8, %%ymm8\n"
120 "vsubps %%ymm1, %%ymm8, %%ymm9\n"
121 "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n"
122 "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n"
123 "vaddps %%ymm10, %%ymm11, %%ymm1\n"
124 "vaddps %%ymm1, %%ymm0, %%ymm8\n"
125 "vsubps %%ymm1, %%ymm0, %%ymm9\n"
126 "vmovups %%ymm8, (%0)\n"
127 "vmovups %%ymm9, (%1)\n"
128 :: "r"(buf + j + k + 0), "r"(buf + j + k + 8) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory"
129 );
130 }
131 }
132}
133inline void helper_float_5(float *buf);
134inline void helper_float_5(float *buf) {
135 for (int j = 0; j < 32; j += 32) {

Callers 1

fht_floatFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected