mixbytes / zkllvm-doomreplay

zkllvm proving of Doom videogame state transition
GNU General Public License v2.0
0 stars 0 forks source link

Circuitize ```unisgned char * arr; arr = malloc(42); // + loop``` construction in minimal circuit #17

Closed BoogerWooger closed 1 year ago

BoogerWooger commented 1 year ago

To do:

__attribute__((circuit)) int z_main(int n_inputs)
{
    unsigned int *input_codes;
    input_codes = malloc(4*64);
    unsigned int counter = 0;
    for (int i=0; i < 64; i++) { // fill array with keys
        input_codes[i] = 42; //dr_key_up;
    }
    for (int i=0; i < 64; i++) { // sum all array values
        counter += input_codes[i];
    }
    return counter;

works, while

__attribute__((circuit)) int z_main(int n_inputs)
{
    unsigned char *input_codes;
    input_codes = malloc(1*64);
    unsigned int counter = 0;
    for (int i=0; i < 64; i++) { // fill array with keys
        input_codes[i] = 42; //dr_key_up;
    }
    for (int i=0; i < 64; i++) { // sum all array values
        counter += input_codes[i];
    }
    return counter;
}

compilation fails, returning

UNREACHABLE at /home/boogerwooger/zkllvm/libs/assigner/include/nil/blueprint/parser.hpp:308
        Unexpected intrinsic!
BoogerWooger commented 1 year ago

mallocs started to work (maybe previous fixes of https://github.com/mixbytes/zkllvm-doomreplay/issues/18 and https://github.com/mixbytes/zkllvm-doomreplay/issues/20 helped