moonlight-linalg-0.1.0.0: cbits/moonlight_linalg_native.c
#include <stddef.h>
extern void dgemm_(char *transa, char *transb, int *m, int *n, int *k,
double *alpha, const double *a, int *lda,
const double *b, int *ldb, double *beta,
double *c, int *ldc);
void moonlight_dgemm_row_major(int left_rows,
int right_columns,
int inner_dimension,
const double *left_row_major,
const double *right_row_major,
double *output_row_major) {
char no_transpose = 'N';
int m = right_columns;
int n = left_rows;
int k = inner_dimension;
int left_as_column_major_leading_dimension = right_columns;
int right_as_column_major_leading_dimension = inner_dimension;
int output_leading_dimension = right_columns;
double alpha = 1.0;
double beta = 0.0;
dgemm_(&no_transpose,
&no_transpose,
&m,
&n,
&k,
&alpha,
right_row_major,
&left_as_column_major_leading_dimension,
left_row_major,
&right_as_column_major_leading_dimension,
&beta,
output_row_major,
&output_leading_dimension);
}