Skip to content

Instantly share code, notes, and snippets.

@Lugatod

Lugatod/dell.c Secret

Last active April 4, 2017 14:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lugatod/3d8ddf73d1aedfaea15878b61558143a to your computer and use it in GitHub Desktop.
Save Lugatod/3d8ddf73d1aedfaea15878b61558143a to your computer and use it in GitHub Desktop.
#ifndef TACO_C_HEADERS
#define TACO_C_HEADERS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define TACO_MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))
#endif
int assemble(void** inputPack) {
void** a = &(inputPack[0]);
void** b = &(inputPack[3]);
void** c = &(inputPack[6]);
int a1_ptr;
int* restrict b_L0_idx = (int*)b[1];
int i;
int b1_ptr;
int* restrict c_L0_ptr = (int*)c[0];
int* restrict b_L0_ptr = (int*)b[0];
int ib;
int c1_ptr;
int* restrict a_L0_idx = (int*)a[1];
int* restrict a_L0_ptr = (int*)a[0];
int ic;
int* restrict c_L0_idx = (int*)c[1];
/* a(i) = (b(i) + c(i)) */
a1_ptr = a_L0_ptr[0];
b1_ptr = b_L0_ptr[0];
c1_ptr = c_L0_ptr[0];
while ((b1_ptr < b_L0_ptr[(0 + 1)]) && (c1_ptr < c_L0_ptr[(0 + 1)])) {
ib = b_L0_idx[b1_ptr];
ic = c_L0_idx[c1_ptr];
i = TACO_MIN(ib,ic);
if ((ib == i) && (ic == i)) {
a_L0_idx[a1_ptr] = i;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
}
else if (ib == i) {
a_L0_idx[a1_ptr] = i;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
}
else {
a_L0_idx[a1_ptr] = i;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
}
if (ib == i)
b1_ptr = (b1_ptr + 1);
if (ic == i)
c1_ptr = (c1_ptr + 1);
}
while (b1_ptr < b_L0_ptr[(0 + 1)]) {
ib = b_L0_idx[b1_ptr];
a_L0_idx[a1_ptr] = ib;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
b1_ptr = (b1_ptr + 1);
}
while (c1_ptr < c_L0_ptr[(0 + 1)]) {
ic = c_L0_idx[c1_ptr];
a_L0_idx[a1_ptr] = ic;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
c1_ptr = (c1_ptr + 1);
}
a_L0_ptr[(0 + 1)] = a1_ptr;
((int**)a)[1] = (int*)a_L0_idx;
((int**)a)[0] = (int*)a_L0_ptr;
return 0;
}
int compute(void** inputPack) {
void** a = &(inputPack[0]);
void** b = &(inputPack[3]);
void** c = &(inputPack[6]);
int ib;
int b1_ptr;
int c1_ptr;
int ic;
int a1_ptr;
int i;
int* restrict b_L0_ptr = (int*)b[0];
double* restrict a_vals = a[2];
int* restrict a_L0_ptr = (int*)a[0];
int* restrict c_L0_ptr = (int*)c[0];
int* restrict b_L0_idx = (int*)b[1];
int* restrict c_L0_idx = (int*)c[1];
double* restrict c_vals = c[2];
double* restrict b_vals = b[2];
/* a(i) = (b(i) + c(i)) */
a1_ptr = a_L0_ptr[0];
b1_ptr = b_L0_ptr[0];
c1_ptr = c_L0_ptr[0];
while ((b1_ptr < b_L0_ptr[(0 + 1)]) && (c1_ptr < c_L0_ptr[(0 + 1)])) {
ib = b_L0_idx[b1_ptr];
ic = c_L0_idx[c1_ptr];
i = TACO_MIN(ib,ic);
if ((ib == i) && (ic == i)) {
a_vals[a1_ptr] = (b_vals[b1_ptr] + c_vals[c1_ptr]);
a1_ptr = (a1_ptr + 1);
}
else if (ib == i) {
a_vals[a1_ptr] = b_vals[b1_ptr];
a1_ptr = (a1_ptr + 1);
}
else {
a_vals[a1_ptr] = c_vals[c1_ptr];
a1_ptr = (a1_ptr + 1);
}
if (ib == i)
b1_ptr = (b1_ptr + 1);
if (ic == i)
c1_ptr = (c1_ptr + 1);
}
while (b1_ptr < b_L0_ptr[(0 + 1)]) {
ib = b_L0_idx[b1_ptr];
a_vals[a1_ptr] = b_vals[b1_ptr];
a1_ptr = (a1_ptr + 1);
b1_ptr = (b1_ptr + 1);
}
while (c1_ptr < c_L0_ptr[(0 + 1)]) {
ic = c_L0_idx[c1_ptr];
a_vals[a1_ptr] = c_vals[c1_ptr];
a1_ptr = (a1_ptr + 1);
c1_ptr = (c1_ptr + 1);
}
((int**)a)[0] = (int*)a_L0_ptr;
((double**)a)[2] = a_vals;
return 0;
}
#ifndef TACO_C_HEADERS
#define TACO_C_HEADERS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define TACO_MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))
#endif
int assemble(void** inputPack) {
void** a = &(inputPack[0]);
void** b = &(inputPack[3]);
void** c = &(inputPack[6]);
int* restrict a_L0_ptr = (int*)a[0];
int* restrict c_L0_idx = (int*)c[1];
int* restrict b_L0_idx = (int*)b[1];
int* restrict b_L0_ptr = (int*)b[0];
int* restrict c_L0_ptr = (int*)c[0];
int* restrict a_L0_idx = (int*)a[1];
/* a(i) = (b(i) + c(i)) */
a1_ptr = a_L0_ptr[0];
b1_ptr = b_L0_ptr[0];
c1_ptr = c_L0_ptr[0];
while ((b1_ptr < b_L0_ptr[(0 + 1)]) && (c1_ptr < c_L0_ptr[(0 + 1)])) {
ib = b_L0_idx[b1_ptr];
ic = c_L0_idx[c1_ptr];
i = TACO_MIN(ib,ic);
if ((ib == i) && (ic == i)) {
a_L0_idx[a1_ptr] = i;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
}
else if (ib == i) {
a_L0_idx[a1_ptr] = i;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
}
else {
a_L0_idx[a1_ptr] = i;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
}
if (ib == i)
b1_ptr = (b1_ptr + 1);
if (ic == i)
c1_ptr = (c1_ptr + 1);
}
while (b1_ptr < b_L0_ptr[(0 + 1)]) {
ib = b_L0_idx[b1_ptr];
a_L0_idx[a1_ptr] = ib;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
b1_ptr = (b1_ptr + 1);
}
while (c1_ptr < c_L0_ptr[(0 + 1)]) {
ic = c_L0_idx[c1_ptr];
a_L0_idx[a1_ptr] = ic;
a1_ptr = (a1_ptr + 1);
if ((0 == ((a1_ptr + 1) & a1_ptr)) && (32 <= (a1_ptr + 1)))
a_L0_idx = (int*)realloc(a_L0_idx, sizeof(int) * (2 * (a1_ptr + 1)));
c1_ptr = (c1_ptr + 1);
}
a_L0_ptr[(0 + 1)] = a1_ptr;
((int**)a)[1] = (int*)a_L0_idx;
((int**)a)[0] = (int*)a_L0_ptr;
return 0;
}
int compute(void** inputPack) {
void** a = &(inputPack[0]);
void** b = &(inputPack[3]);
void** c = &(inputPack[6]);
int* restrict a_L0_ptr = (int*)a[0];
double* restrict a_vals = a[2];
int* restrict b_L0_idx = (int*)b[1];
int* restrict c_L0_idx = (int*)c[1];
int* restrict b_L0_ptr = (int*)b[0];
int* restrict c_L0_ptr = (int*)c[0];
double* restrict c_vals = c[2];
double* restrict b_vals = b[2];
/* a(i) = (b(i) + c(i)) */
a1_ptr = a_L0_ptr[0];
b1_ptr = b_L0_ptr[0];
c1_ptr = c_L0_ptr[0];
while ((b1_ptr < b_L0_ptr[(0 + 1)]) && (c1_ptr < c_L0_ptr[(0 + 1)])) {
ib = b_L0_idx[b1_ptr];
ic = c_L0_idx[c1_ptr];
i = TACO_MIN(ib,ic);
if ((ib == i) && (ic == i)) {
a_vals[a1_ptr] = (b_vals[b1_ptr] + c_vals[c1_ptr]);
a1_ptr = (a1_ptr + 1);
}
else if (ib == i) {
a_vals[a1_ptr] = b_vals[b1_ptr];
a1_ptr = (a1_ptr + 1);
}
else {
a_vals[a1_ptr] = c_vals[c1_ptr];
a1_ptr = (a1_ptr + 1);
}
if (ib == i)
b1_ptr = (b1_ptr + 1);
if (ic == i)
c1_ptr = (c1_ptr + 1);
}
while (b1_ptr < b_L0_ptr[(0 + 1)]) {
ib = b_L0_idx[b1_ptr];
a_vals[a1_ptr] = b_vals[b1_ptr];
a_vals[a1_ptr] = b_vals[b1_ptr];
a1_ptr = (a1_ptr + 1);
b1_ptr = (b1_ptr + 1);
}
while (c1_ptr < c_L0_ptr[(0 + 1)]) {
ic = c_L0_idx[c1_ptr];
a_vals[a1_ptr] = c_vals[c1_ptr];
a1_ptr = (a1_ptr + 1);
c1_ptr = (c1_ptr + 1);
}
((int**)a)[0] = (int*)a_L0_ptr;
((double**)a)[2] = a_vals;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment