Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/intgemm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'interleave.h')
-rw-r--r--interleave.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/interleave.h b/interleave.h
index 231be46..cd5002e 100644
--- a/interleave.h
+++ b/interleave.h
@@ -314,4 +314,17 @@ target static inline void SelectColumnsOfB(const Register *input, Register *outp
} \
}
+#define INTGEMM_SELECT_COL_B_COLUMN_MAJOR(target, Register) \
+target static inline void SelectColumnsOfB_ColumnMajor(const Register *input, Register *output, Index rows_bytes /* number of bytes in a row */, const Index *cols_begin, const Index *cols_end) { \
+ assert(rows_bytes % sizeof(Register) == 0); \
+ assert((cols_end - cols_begin) % 8 == 0); \
+ /* Do columns for multiples of 8.*/ \
+ int register_rows = rows_bytes / sizeof(Register); \
+ for (; cols_begin != cols_end; ++cols_begin) { \
+ const Register *it = input + (*cols_begin & 7) * register_rows; \
+ for (int r = 0; r < register_rows; ++r) \
+ *output++ = *it++; \
+ } \
+}
+
} // namespace intgemm