WIP: currently the hosts are not generic and don't support different targets
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
#include "../lib.h"
|
|
#include "../lib_cored.h"
|
|
|
|
static enc_t cored_res;
|
|
static enc_t filter_out[FILTER_COUNT];
|
|
|
|
void init_outputs(plain_t x_c, plain_t y_c, plain_t z_c) {
|
|
/* Replicated Filtersteps */
|
|
XC = encode(x_c, THE_A, SIG_X);
|
|
YC = encode(y_c, THE_A, SIG_Y);
|
|
ZC = encode(z_c, THE_A, SIG_Z);
|
|
}
|
|
|
|
enc_t INLINE apply(enc_t vc, sign_t bdyn) {
|
|
if (bdyn > SIG_MAX) {
|
|
fail_marker_detected();
|
|
}
|
|
return vc + bdyn;
|
|
}
|
|
|
|
sign_t wasm_module(void) {
|
|
if (equals(XC, YC, SIG_X, SIG_Y)) {
|
|
if (equals(XC, ZC, SIG_X, SIG_Z)) {
|
|
cored_res = apply(XC, (XC - YC) + (XC - ZC));
|
|
return SIG_s_XYZ;
|
|
} else {
|
|
cored_res = apply(XC, (XC - YC));
|
|
return SIG_s_XY;
|
|
}
|
|
} else if (equals(YC, ZC, SIG_Y, SIG_Z)) {
|
|
cored_res = apply(YC, (YC - ZC));
|
|
return SIG_s_YZ;
|
|
} else if (equals(XC, ZC, SIG_X, SIG_Z)) {
|
|
cored_res = apply(XC, (XC - ZC));
|
|
return SIG_s_XZ;
|
|
} else {
|
|
fail_marker_detected();
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
enc_t get_cored_res() { return cored_res; }
|
|
// enc_t get_xc() { return XC; }
|
|
// enc_t get_yc() { return YC; }
|
|
// enc_t get_zc() { return ZC; }
|