libgpuverify

Signature verification on GPUs (WiP)
Log | Files | Refs | README | LICENSE

commit 843c49c578ffa0b7757d574ac87dbddfe795628b
parent efd8fb26951a18508d6a6e4131f655c3cf2dc418
Author: Cedric <cedric.zwahlen@students.bfh.ch>
Date:   Tue,  9 Jan 2024 22:39:11 +0100

Minor Improvements

Diffstat:
Msource/gpuv-montg.c | 73+++++++++++++++++++++++++++++++++++++------------------------------------
Msource/gpuv-montg.h | 6------
Msource/gpuv.c | 46++++++++++++++++++++++++----------------------
Msource/lib-gpu-verify.c | 4++--
Msource/universal.c | 9++++++---
Msource/universal.h | 11+++++++----
Msource/util.c | 2+-
Msource/util.h | 130++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mxcode/.DS_Store | 0
Mxcode/gpuv-montg.cl | 10++++++++++
Mxcode/lib-gpu-generate/msgsig.txt | 36++++++++++++++++++------------------
Mxcode/lib-gpu-generate/publickey.txt | 6+++---
Mxcode/lib-gpu-verify.xcodeproj/project.xcworkspace/xcuserdata/cedriczwahlen.xcuserdatad/UserInterfaceState.xcuserstate | 0
Mxcode/lib-gpu-verify.xcodeproj/xcuserdata/cedriczwahlen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist | 206++++++++++---------------------------------------------------------------------
14 files changed, 202 insertions(+), 337 deletions(-)

diff --git a/source/gpuv-montg.c b/source/gpuv-montg.c @@ -140,10 +140,17 @@ struct gpuv_public_key * gpuv_get_pubkey_mont(gpu_register e, unsigned long len_ gpu_register *r_1_buf = malloc(len_n * sizeof(gpu_register)); memset(r_1_buf, 0, len_n * sizeof(gpu_register)); + union buf_ptr *buf_n = malloc(sizeof(union buf_ptr)); + memset(buf_n, 0, sizeof(union buf_ptr)); + + pk->n = buf_n; + pk->e = e; - pk->n = n; + pk->n->montgomery = n; pk->len_n = len_n; + // from here, lazy + // calculate the ni & r_1 from the n values mpz_t mod, r, r_1, ni; @@ -210,6 +217,8 @@ struct gpuv_signature_message * gpuv_get_sigmsg_mont(struct gpuv_public_key *pk, sigmsg->len_m = len_single_m * count; sigmsg->s = s; sigmsg->len_s = len_single_s * count; + + // from here, lazy mpz_t mod, sig; mpz_init(sig); @@ -227,7 +236,7 @@ struct gpuv_signature_message * gpuv_get_sigmsg_mont(struct gpuv_public_key *pk, mpz_set_si(one, 1); mpz_mul_2exp(r,one,GPUV_BIT_LENGTH); // r - mpz_import(mod, pk->len_n, ORDER, sizeof(gpu_register), END, 0, pk->n); + mpz_import(mod, pk->len_n, ORDER, sizeof(gpu_register), END, 0, pk->n->montgomery); for (int i = 0; i < count; i++) { @@ -277,7 +286,12 @@ struct gpuv_signature_message * gpuv_get_sigmsg_mont(struct gpuv_public_key *pk, maybe pass the time it took here as well, it is also in the state object */ -void finally(int valid, struct timespec time, unsigned long len, u_int32_t *res) { + +// pass void * cls als ertses argument + +static volatile bool finished = 0; + +void finally(void *cls, int valid, struct timespec time, unsigned long len, u_int32_t *res) { if (valid) { printf("VERIFICATION RESULT: OK\n\n"); @@ -287,6 +301,7 @@ void finally(int valid, struct timespec time, unsigned long len, u_int32_t *res) printf("GPU verification (MONTGOMERY) took %ld.%06ld s\n",time.tv_sec, time.tv_nsec); + finished = 1; } @@ -333,8 +348,13 @@ int gpuv_test_montg(void) { pubks += 1; + + + + + struct gpuv_batch * batch; - batch = gpuv_prepare_batch(pubks); + batch = gpuv_prepare_batch(); // automatically resize int len = (GPUV_BIT_LENGTH / 8) / sizeof(gpu_register); @@ -342,18 +362,18 @@ int gpuv_test_montg(void) { unsigned long range = (pks[i] + 1) - (i == 0 ? 0 : (pks[i - 1] + 1)); - struct gpuv_public_key * pub_keys = gpuv_get_pubkey_mont(exp_buf[i], len, &n_buf[len * i]); + // inc & dec ref + + //struct gpuv_public_key * pub_keys = gpuv_get_pubkey(MONTGOMERY, exp_buf[i], len, &n_buf[len * i]); + struct gpuv_public_key * pub_key = gpuv_get_pubkey_mont(exp_buf[i], len, &n_buf[len * i]); // lazy preparation - struct gpuv_signature_message * sig_msgs = gpuv_get_sigmsg_mont(pub_keys, len, &msg_buf[len * i * range], len, &s_buf[len * i * range], range); + //struct gpuv_signature_message * sig_msgs = gpuv_get_sigmsg(pub_keys, len, &msg_buf[len * i * range], len, &s_buf[len * i * range], range); + struct gpuv_signature_message * sig_msgs = gpuv_get_sigmsg_mont(pub_key, len, &msg_buf[len * i * range], len, &s_buf[len * i * range], range); // just add a single gpuv_add_to_batch(batch, sig_msgs); } - - - - struct gpuv_info *info; // sets everything up... @@ -361,45 +381,26 @@ int gpuv_test_montg(void) { // every object represents a batch of data that should be processed on the GPU. struct gpuv_state *state; -// struct gpuv_state *state_2; - - // pairs -> how many signatures - // pubkeys -> how many public keys - //state = gpuv_prepare(info, pairs, pubks); - //state_2 = gpuv_prepare(info, pairs, pubkeys); - - // s_buf -> contains signatures - // e_buf -> contains exponents - // n_buf -> contains moduli - // m_buf -> contains messages - // pks says which public keys go with which messages - //gpuv_import(state, s_buf, exp_buf, n_buf, msg_buf, pks); - //gpuv_import(state_2, s_buf, exp_buf, n_buf, msg_buf, pks); state = gpuv_prepare(info, batch); - - // finally is called once we are done - // calling gpu_start consecutively does not do anything, a new job can only started once the old one has finished. - // so far, jobs are not queued either - // A kernel always runs to completion – it can't be cancelled. But it is non-blocking, so the program can be terminated at any time. - gpuv_start(state, finally); + gpuv_start(state, &finally, NULL); + fprintf(stderr, "KERNEL RUNNING...\n"); // wait for the job to finish - sleep(3); + while (!finished) { sleep(1); } - //gpuv_start(state_2, finally); -// sleep(3); - gpuv_finish(info); - gpuv_free_state(state); gpuv_free_batch(batch); - free(info); + gpuv_free_state(state); + + gpuv_finish(info); + free(n_buf); free(msg_buf); diff --git a/source/gpuv-montg.h b/source/gpuv-montg.h @@ -16,12 +16,6 @@ int gpuv_test_montg(void); -void gpuvt_read_files_montg( - void *n_buf, - void *msg_buf, - void *exp_buf, - void *s_buf, - unsigned long *pks, unsigned long *n); #endif /* gpuv_montg_h */ diff --git a/source/gpuv.c b/source/gpuv.c @@ -153,8 +153,8 @@ void gpuvt_read_files_std(void *n_buf, *n = i; } - -int opencl_prepare(struct gpu_info *info, struct gpu_state *state, +/* +int opencl_prepare(struct gpuv_info *info, struct gpuv_state *state, void *signatures, //unsigned long *b_len, void *exponents, //unsigned long *e_len, void *moduli, //unsigned long *m_len, @@ -173,18 +173,18 @@ int opencl_prepare(struct gpu_info *info, struct gpu_state *state, } - state->mod_mem = clCreateBuffer(info->context, CL_MEM_READ_WRITE, sizeof(DIGIT_T) * WORD_COUNT * n, NULL, NULL); + state->n_mem = clCreateBuffer(info->context, CL_MEM_READ_WRITE, sizeof(DIGIT_T) * WORD_COUNT * n, NULL, NULL); state->exp_mem = clCreateBuffer(info->context, CL_MEM_READ_WRITE, sizeof(DIGIT_T) * n, NULL, NULL); state->sig_mem = clCreateBuffer(info->context, CL_MEM_READ_WRITE, sizeof(DIGIT_T) * WORD_COUNT * n, NULL, NULL); - state->comp_mem = clCreateBuffer(info->context, CL_MEM_READ_ONLY, sizeof(DIGIT_T) * WORD_COUNT * n, NULL, NULL); // the base, to compare whether we get the same signature + state->msg_mem = clCreateBuffer(info->context, CL_MEM_READ_ONLY, sizeof(DIGIT_T) * WORD_COUNT * n, NULL, NULL); // the base, to compare whether we get the same signature state->pks_indices = clCreateBuffer(info->context, CL_MEM_READ_WRITE, sizeof(unsigned long) * (pk + 1),NULL, NULL); - if (!state->sig_mem || !state->exp_mem || !state->mod_mem || !state->comp_mem || !state->invalid ) + if (!state->sig_mem || !state->exp_mem || !state->n_mem || !state->msg_mem || !state->pks_indices ) { printf("Error: Failed to allocate device memory!\n"); exit(1); @@ -192,12 +192,12 @@ int opencl_prepare(struct gpu_info *info, struct gpu_state *state, // Write our data set into the input array in device memory // - err = clEnqueueWriteBuffer(info->commands, state->sig_mem, CL_TRUE, 0, sizeof(DIGIT_T) * WORD_COUNT * n, signatures, 0, NULL, NULL); - err |= clEnqueueWriteBuffer(info->commands, state->exp_mem, CL_TRUE, 0,sizeof(DIGIT_T) * n, exponents, 0, NULL, NULL); - err |= clEnqueueWriteBuffer(info->commands, state->mod_mem, CL_TRUE, 0, sizeof(DIGIT_T) * WORD_COUNT * n, moduli, 0, NULL, NULL); - err |= clEnqueueWriteBuffer(info->commands, state->comp_mem, CL_TRUE, 0, sizeof(DIGIT_T) * WORD_COUNT * n, messages, 0, NULL, NULL); + err = clEnqueueWriteBuffer(state->queue, state->sig_mem, CL_TRUE, 0, sizeof(DIGIT_T) * WORD_COUNT * n, signatures, 0, NULL, NULL); + err |= clEnqueueWriteBuffer(state->queue, state->exp_mem, CL_TRUE, 0,sizeof(DIGIT_T) * n, exponents, 0, NULL, NULL); + err |= clEnqueueWriteBuffer(state->queue, state->n_mem, CL_TRUE, 0, sizeof(DIGIT_T) * WORD_COUNT * n, moduli, 0, NULL, NULL); + err |= clEnqueueWriteBuffer(state->queue, state->msg_mem, CL_TRUE, 0, sizeof(DIGIT_T) * WORD_COUNT * n, messages, 0, NULL, NULL); - err |= clEnqueueWriteBuffer(info->commands, state->pks_indices, CL_TRUE, 0, sizeof(unsigned long) * (pk + 1), pks, 0, NULL, NULL); + err |= clEnqueueWriteBuffer(state->queue, state->pks_indices, CL_TRUE, 0, sizeof(unsigned long) * (pk + 1), pks, 0, NULL, NULL); if (err != CL_SUCCESS) { printf("Error: Failed to write to source array!\n"); @@ -209,8 +209,8 @@ int opencl_prepare(struct gpu_info *info, struct gpu_state *state, err = 0; err = clSetKernelArg(info->kernel, 0, sizeof(cl_mem), &state->sig_mem); err |= clSetKernelArg(info->kernel, 1, sizeof(cl_mem), &state->exp_mem); - err |= clSetKernelArg(info->kernel, 2, sizeof(cl_mem), &state->mod_mem); - err |= clSetKernelArg(info->kernel, 3, sizeof(cl_mem), &state->comp_mem); + err |= clSetKernelArg(info->kernel, 2, sizeof(cl_mem), &state->n_mem); + err |= clSetKernelArg(info->kernel, 3, sizeof(cl_mem), &state->msg_mem); err |= clSetKernelArg(info->kernel, 5, sizeof(cl_mem), &state->pks_indices); err |= clSetKernelArg(info->kernel, 6, sizeof(unsigned long), &n); @@ -221,19 +221,19 @@ int opencl_prepare(struct gpu_info *info, struct gpu_state *state, exit(1); } - state->total = n; + //state->total = n; return 0; } -int opencl_exec_kernel(struct gpu_info *info, struct gpu_state *state) { +int opencl_exec_kernel(struct gpuv_info *info, struct gpuv_state *state) { size_t global; int err; - global = state->total; + //global = state->total; // measure from the first call to the kernel... if (state->skip) { @@ -320,9 +320,11 @@ void opencl_release(struct gpu_state *state) { } + + */ // MARK: for library - +/* void gpuv_init_std(struct gpu_info *info, struct gpu_state *state) { info->platform = select_platform(0, false); @@ -356,8 +358,8 @@ void gpuv_init_std(struct gpu_info *info, struct gpu_state *state) { printf("Error: Failed to set kernel arguments! %d\n", err); exit(1); } -} - +}*/ +/* void gpuv_execute_std(struct gpu_info *info, struct gpu_state *state, void *signatures,// unsigned long *b_len, @@ -396,7 +398,7 @@ unsigned long gpuv_finish_std(struct gpu_info *info, struct gpu_state *state) { } - +*/ struct gpuv_public_key * gpuv_get_pubkey_std(DIGIT_T e, unsigned long len_n, DIGIT_T *n) { @@ -405,7 +407,7 @@ struct gpuv_public_key * gpuv_get_pubkey_std(DIGIT_T e, unsigned long len_n, DIG memset(pk, 0, sizeof(struct gpuv_public_key)); pk->e = e; - pk->n = n; + pk->n->regular = n; pk->len_n = len_n; return pk; @@ -557,7 +559,7 @@ struct gpuv_state * gpuv_prepare_std(struct gpuv_info *info, struct gpuv_batch * } -void finally_std(int valid, struct timespec time, unsigned long len, u_int32_t *res) { +void finally_std(void *cls, int valid, struct timespec time, unsigned long len, u_int32_t *res) { if (valid) { printf("VERIFICATION RESULT: OK\n\n"); @@ -643,7 +645,7 @@ int gpuv_test(void) { state = gpuv_prepare(info, batch); - gpuv_start(state, finally_std); + gpuv_start(state, &finally_std, NULL); // wait for the job to finish diff --git a/source/lib-gpu-verify.c b/source/lib-gpu-verify.c @@ -19,9 +19,9 @@ int main(int argc, char** argv) gpuv_prepare_gcry(); - //gpuv_test_montg(); + gpuv_test_montg(); - gpuv_test(); + //gpuv_test(); //gpuv_test_ref(); diff --git a/source/universal.c b/source/universal.c @@ -178,7 +178,7 @@ struct gpuv_state * gpuv_prepare(struct gpuv_info *info, struct gpuv_batch * bat err |= clEnqueueWriteBuffer(state->queue, state->x_mem, CL_TRUE, off_x, b->len_x * l, b->x, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->m_mem, CL_TRUE, off_M, b->len_M * l, b->M, 0, NULL, NULL); - err |= clEnqueueWriteBuffer(state->queue, state->n_mem, CL_TRUE, off_n, b->pubkey->len_n * l, b->pubkey->n, 0, NULL, NULL); + err |= clEnqueueWriteBuffer(state->queue, state->n_mem, CL_TRUE, off_n, b->pubkey->len_n * l, b->pubkey->n->montgomery, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->ni_mem, CL_TRUE, off_ni, b->pubkey->len_ni * l, b->pubkey->ni, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->exp_mem, CL_TRUE, off_e, l, &b->pubkey->e, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->msg_mem, CL_TRUE, off_m, b->len_m * l, b->m, 0, NULL, NULL); @@ -239,7 +239,7 @@ struct gpuv_state * gpuv_prepare(struct gpuv_info *info, struct gpuv_batch * bat // Write our data set into the input array in device memory // - err |= clEnqueueWriteBuffer(state->queue, state->n_mem, CL_TRUE, off_n, b->pubkey->len_n * lr, b->pubkey->n, 0, NULL, NULL); + err |= clEnqueueWriteBuffer(state->queue, state->n_mem, CL_TRUE, off_n, b->pubkey->len_n * lr, b->pubkey->n->montgomery, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->exp_mem, CL_TRUE, off_e, lr, &b->pubkey->e, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->msg_mem, CL_TRUE, off_m, b->len_m * lr, b->m, 0, NULL, NULL); err |= clEnqueueWriteBuffer(state->queue, state->sig_mem, CL_TRUE, off_s, b->len_s * lr, b->s, 0, NULL, NULL); @@ -293,7 +293,7 @@ struct gpuv_state * gpuv_prepare(struct gpuv_info *info, struct gpuv_batch * bat Returns immediately */ -int gpuv_start(struct gpuv_state *state, void (*cls)(int, struct timespec, unsigned long, u_int32_t *) ) { +int gpuv_start(struct gpuv_state *state, void (*cls)(void *, int, struct timespec, unsigned long, u_int32_t *), void * arg) { if (state->stale) { printf("State submitted twice.\n"); @@ -312,6 +312,7 @@ int gpuv_start(struct gpuv_state *state, void (*cls)(int, struct timespec, unsig state->info->in_progress = 1; state->cls = cls; + state->arg = arg; // Set the arguments to our compute kernel // @@ -384,6 +385,8 @@ void gpuv_finish(struct gpuv_info * info) { clReleaseKernel(info->kernel); clReleaseContext(info->context); + free(info); + } diff --git a/source/universal.h b/source/universal.h @@ -11,7 +11,7 @@ #include <stdio.h> #include <time.h> -#define GPUV_BIT_LENGTH 2048 +#define GPUV_BIT_LENGTH 2048 // put in enum typedef u_int64_t gpu_register; typedef u_int32_t DIGIT_T; @@ -33,7 +33,8 @@ struct gpuv_state; enum Variant { REGULAR = 0, - MONTGOMERY = 1 + MONTGOMERY = 1, + CPU = 2 }; @@ -41,12 +42,14 @@ struct gpuv_info * gpuv_init(enum Variant variant); struct gpuv_batch * gpuv_prepare_batch(unsigned long count); int gpuv_add_to_batch(struct gpuv_batch * batch, struct gpuv_signature_message * sigmem); + +//gpuv_get_pubkey(MONTGOMERY, exp_buf[i], len, &n_buf[len * i]); + void gpuv_free_batch(struct gpuv_batch * batch); void gpuv_free_state(struct gpuv_state * state); struct gpuv_state * gpuv_prepare(struct gpuv_info *info, struct gpuv_batch * batch); -int gpuv_start(struct gpuv_state *state, void (*cls)(int, struct timespec, unsigned long, u_int32_t *) ); - +int gpuv_start(struct gpuv_state *state, void (*cls)(void*, int, struct timespec, unsigned long, u_int32_t *), void * arg); void gpuv_finish(struct gpuv_info * info); #endif /* universal_h */ diff --git a/source/util.c b/source/util.c @@ -412,7 +412,7 @@ void CL_CALLBACK callback_result(cl_event event, cl_int event_command_status, vo state->valid = ret; // pass results to user - state->cls(state->valid, state->t, state->results_len, state->results); + state->cls(state->arg, state->valid, state->t, state->results_len, state->results); } diff --git a/source/util.h b/source/util.h @@ -61,72 +61,78 @@ create_kernel (cl_program program, // Implementations of structures, their fields should be private -struct gpu_info { - - cl_platform_id platform; - cl_device_id device_id; - cl_context context; - cl_command_queue commands; - cl_program program; - cl_kernel kernel; - -}; - -struct gpu_state { - - cl_mem invalid; - - cl_mem sig_mem; - cl_mem exp_mem; - cl_mem mod_mem; - cl_mem comp_mem; - - cl_mem sig_len; - cl_mem exp_len; - cl_mem mod_len; - cl_mem comp_len; - - cl_mem pks_indices; - - struct timespec t1, t2; +//struct gpu_info { +// +// cl_platform_id platform; +// cl_device_id device_id; +// cl_context context; +// cl_command_queue commands; +// cl_program program; +// cl_kernel kernel; +// +//}; +// +//struct gpu_state { +// +// cl_mem invalid; +// +// cl_mem sig_mem; +// cl_mem exp_mem; +// cl_mem mod_mem; +// cl_mem comp_mem; +// +// cl_mem sig_len; +// cl_mem exp_len; +// cl_mem mod_len; +// cl_mem comp_len; +// +// cl_mem pks_indices; +// +// struct timespec t1, t2; +// +// unsigned long total; // 0 +// unsigned long result; // 0 +// +// bool skip; +// +//}; +// +//struct gpu_state_alt { +// +// cl_mem x_mem; +// cl_mem m_mem; +// cl_mem res_mem; +// cl_mem n_mem; +// cl_mem ni_mem; +// cl_mem msg_mem; +// cl_mem exp_mem; +// +// cl_mem pks_indices; +// +// struct timespec t1, t2; +// +// struct timespec p; +// +// unsigned long total; // 0 +// u_int32_t *results; +// unsigned long results_len; +// int valid; // 0 +// +// bool skip; +// +//}; - unsigned long total; // 0 - unsigned long result; // 0 - - bool skip; - -}; +// new -struct gpu_state_alt { - - cl_mem x_mem; - cl_mem m_mem; - cl_mem res_mem; - cl_mem n_mem; - cl_mem ni_mem; - cl_mem msg_mem; - cl_mem exp_mem; - - cl_mem pks_indices; - - struct timespec t1, t2; - - struct timespec p; - - unsigned long total; // 0 - u_int32_t *results; - unsigned long results_len; - int valid; // 0 - - bool skip; - +union buf_ptr { + DIGIT_T *regular; + gpu_register *montgomery; }; -// new - struct gpuv_public_key { - gpu_register * n; + + union buf_ptr * n; unsigned long len_n; gpu_register e; @@ -191,8 +197,10 @@ struct gpuv_state { cl_event event_kernel; cl_event event_results; + // the callback the user defines - void (*cls)(int, struct timespec, unsigned long, u_int32_t *); // pointer to the results and how long the array is + void (*cls)(void *, int, struct timespec, unsigned long, u_int32_t *); // pointer to the results and how long the array is + void * arg; int stale; // says if we can enqueue it or not (0 at init) int ready; diff --git a/xcode/.DS_Store b/xcode/.DS_Store Binary files differ. diff --git a/xcode/gpuv-montg.cl b/xcode/gpuv-montg.cl @@ -24,6 +24,7 @@ * governing permissions and limitations under the License. */ + typedef ulong gpu_register; #define BITS_PER_DIGIT (sizeof(gpu_register) * 8) @@ -32,6 +33,15 @@ typedef ulong gpu_register; #define R 32 +/* +typedef uint gpu_register; + +#define BITS_PER_DIGIT (sizeof(gpu_register) * 8) +#define HIBITMASK 0x80000000 +#define MAX_DIGIT 0xFFFFFFFF + +#define R 64 +*/ int mult(gpu_register p[2], gpu_register x, gpu_register y) { diff --git a/xcode/lib-gpu-generate/msgsig.txt b/xcode/lib-gpu-generate/msgsig.txt @@ -1,18 +1,18 @@ -506D2DD95AAF4DC4 -00A2ADA4185841128E066990FE93EB62E959B8FB054CCAD750D296325602F9A1153E5B89DECD014A67D7FA7C0BE0701D3F0EB313A6E66B9B8D72D0905A0CF8964AF09A3AC5C8F15FB0DA748DFCE28B6B8EA0A864CF1F49913320398DB02F03FBCA897FCB68BCCC52725FB3946591112D3E19253ADB5B187C3F13ECFD333E0F3843F63A041DBF8A0EFFC5F8C80C03FBCB80CE80DBC9204DCB6F8CF3262FCEDF6402DC721AF4E7ECDB67984C175272DD6CA8BA502EAA282B393F8C2AB2535F57B6CE39BE86B4BB121DA065B56BFAE5D532923C5B8E4EC044AF520C9F41CCD2187A483FEA5B05B980AD63DF94F1AE9B9D579A1666FBBAEB247EABC8E642F283A4CEAE -2F358E4F65F2588F -00A2414DD3B47E698C75216FD8D2519334F6AE3C9FA5763F54B029EA529924D8025BC2254B198CD9ADE9AF4FD7E451C9569685FAF2940E8FF696EFFC4574D69A6E99DDC56ED638E0C3CBCF778A008EDF4AE4EC586BAC51E37284418F4346C446B5C4E108D3139D2DCA0758A6D453D57026951F653A930F31FF9D0559490A2ED7D611FB2FD92AE17EFA974C7CF769CE7E0458B01EAB64B7732702C12220F5D381A69E75BF3813BA08B88E438B2DBB0ED7A69D0825573E04E9EC1B3EBF8DC09D3C6DFDCB217A631E6E6BA6C2622EEB561ACDC22D38006A429DAFDD648F8A171DB0986D075D632EB7BD295FA738EC45F53AAA4CA75B7D6C1DBD1CF93A1957A1FFB05E -12EDFEE08FDF4819 -2F2E362B3A66057D65BF87CFF9286E0D474E0FA2B363E6378BE2EAFF5AD07BB034A7A52159722D2B56610D1DECE03907739C35311728E5E0CF199602D8E4429710E8D707527D2C63D313C17353B1244EF94E672C18E44D93186E6B62F0A92A89B6BBC6574429C64D6B2B09365A2D2B17FE9C373DDB2B39C776021D0D058CD1234AAC68180ACD147DB302346CB3B4C04D69F50BFDC5361577D4B0EB99D1AB5BCFFFD34E27C845D48970C32F920AC20E02523F8612DFCD25AEDF58E47CFAE297F5B476A8624A7BE8D4514C79DBDB1EEB0610F612E67BBD97A6324D54B2B04064E701247CBB32B6425EFD66A2103E6A450729CE99A6689E05C6C27632915F47FC56 -4C4E1CF2255FF55F -00B4F1F974E5BFD5D9768D16C9AD0A6F5125EB7F7BC9FA9572C5C8F1F9D3974CE705EF1A6E5AE7688DD730E3653360FDDDEFD4EC6D7F35946061CCE8E289008B5CFDB5E3A22C4B95591ACAEF3700C5BDBC5113499C69338E263C57A8DA35FE1FFDB3D70EBB69072EFAC5A4CA4E35EDF78962C9F6EB03DD48E7AF9F5E306016F0A7DFFC327AD55475206A2CCA75784D6CEA6730EFE5341B518DD5EE440C0C83F83F6190BC32DF5EEA2AC51D197EFC9BAFBFF1EE6CD7AC1B3E63BB08951103E3F1EA8AB17D7A57E5BA07A4D27CF274374B8E567D2DF2F4C88AD48542F05876A2A679E813C17B37A9F6548B8FD433BFF017653B7E8ECC5D4626D2241CD866E45C963C -3B5962ADEE8B51D6 -00C706C90EC86F9E4879B71D9DFADF41260F9AA20183E314BE5B98F9CD0F829D6BA3579D6B9DFB596450563AEC1EEFCB16EDFFE56D0CA9F2A6A5D2B0C459BD1A96E6B6EB7C07C63DA2AE45D53AE1AB84DFCB05064852655521A89758E0CF1774DA973AEF88B298B9C72D238CC7FBE5CFA043A592F2AE478392C388A0F6A67D32F7BF971CD4062D453E05AA8DB686DF36DFE7EEC8E596076152A646A820D6A0A366078E33503ACA58D57D54ADE3CB4D176F8FDB500CE62C7BF2755C7BDD616EF9E12DB17DD034C4D24081F9D229325CBBA6E689F56ADA4EFB7943F78D1641AA2E3F435203F623B4965140639F1E4F6D91254102ED03668AD11C504D546044721955 -596A118C64D7472A -1C1DB0C215F2D19963FD4C2CDF67941B7D19E63B428719613A469BD174583B94067B8238CCE9855DDF90C5D8C0A06C72EA3934019B400158FB2973EAD3B8559D9B6D28D9E8CDA60076D8A8A7DB9E6EED7B2B6AA7E2053D4E450333642C11A8235BD2E7C981C70CDB84409B66089A590927508293E2E31BFB15D4E5E3DC0807B7020D1444BB4CC8E01680D7A7269E6D111BF6475DFB94AF78D3FDD6B4EE42C3EE9E1CD9B41E6BE1A94C4EC25E132D53ED0D461E2B3A898E392C715477997BC45D3563B7E4B4C035247E220CAF7E55DE1F1E6625A9DC3408EF2FF5516176209DE995402669628CEF5E7A17194D4D90E3DA11C688A73E1648D9B66A2E4058ED6AED -6C12DA96FA4FFC3C -2634B94132F5AA45BD345DB96829ADDC1C775F29A02FEDF882F53082C5BEDEFF713BC65293CB843804CA2426156C3BF3A9845960F8D033E98E0F9A499E221DC7242089EB36320189EBC505DE2D599DE2AFF228D69E11AC3633AA88A13488695DEA709E58ECE824353F2589CE12EEA2C469EC070386E8986C436B82C36B9D1FCC000451B1351E0AA78F2903A302A20D9D59EE0AE41BA9093C079B3DBE46CD613AD158351AF4218847C2D5FDA2D0378F028083294D9BDB09F86904B8FAB6E6846AD31D1FBA0F5C9EB734E8F3A52A054F2D3D54F37639EED1A0EB6EBDE0638EA7D868A0C2B5E7D4B54716B7D141876AFC525FA2AB2889FC3BD1A2093662C9B5A771 -714A7CC810B826C9 -1280F6F2C128FB14E9900C811948AD8D5EA516A6BACB708365E2B3C5D7F491923A9797531449EB0A9639FEA370708563F1449F3DF93B8156215A584643C0220702B3F1D2481602B2A7FD13BD8CA1B2144520B2146974AA1524959EB970CCC86AAA4CE123A4752516F2A685A218C62816439ED4136DA59A175C362C7FF80AE24A0C00190A26E18769D21F9F9F6F66AAE95E4B9823397C3AFAD2056E44534BDF6925A3375CCDAAD1CBFE4E5F689BE08F91F8679113D77A81CAD007ACB7E4D04B1ED978E4FA7D92B947C0692F66A3B062319EAC7DBB67138CEDAECC87E71F1218DBAD61FEECBFE5467388A275CF800446F5B6C78953603BA086E6917348E97621DC -10D18B91EB6717DE -00BADC3A1001874F7BDB3EA90BCAFA272D39351FBBFA9F6F3CDEFECD567B31500EB6F8F70A646BAC20C3CAC27490EF4A90C7BC7EBE590EF2823AE4423A365495BD169667E233A04AF4EA6DDE4EAE9AA6F793EFA79EED52FD9EE618BD2DC77B05C13D8ECFA564E42253A80034868B2D70A6D5B6FFB24837EC23314B8F382F2E181F10CA9501E7CBD50C8B987C0590CC9A0587DBA243586631B73B8DA07F0AA294EF627CF46479CB1D09079E5A4D0C7CF8A8CDC7542E568203A469515119F232DB3688B6A9DD9C2F42616CA7942405E7AFFD926C32E37B9EB3FB760376C50BD0652D2AFAED0522AF42C791B2547C7C55B09D2A88B18B90A8C87B31753F8FD04B4837 +521D796D5BA041E1 +28BB878E51BEF49D4CA367703D4CE0D2B1A7D3A2C90719D6D94960CEAFC06608D7AD03023328B6600C0CE694CDF514D7D352C7D265996B5C7E4B34B88E74C630BA27DD30D9D5A85E261CB0E15E872B7AEFDFAB77078D4F0B872A6EDA39A9B02FC20A24F4501172FFC72DDAA9AFC0015D1B7FA9109BA49D14022D465C255BC8B6021C477430587D9AFDAC725BB895226D239EDC11CF20541FAB1736075D49D783A802CEBD5A3C9546124AFE97CDC534FCE41C53832A2B70D3C0DED3B17D01D25AF0BD0208742E9747EFFB808E9DB6132C206EAAC18C455A2435C1FED45AB9B1E3ABE0C739BEFF80EAD0DDBB934B4AFA15E8ABC155D5F7A7BA45208ED126E02D0F +3FDB7554077F45B0 +621A99770B02C28AD32CD260FB259D15048D1F820B09CC618C803BD9A90D3A0D4EA251D61C143E48E166D5E249D276DD6250414BD70AE8E5DC0EC8F7A50CB0DDB3799CCA68E8BAD2842DD33287C3FD163692FDFA32F4E9AA82735D45261706D9C3AE2675D5B8CF495FD6E4CA717ED610851FCEA22A9EAF9A7510FE6EFB2F309D58C4EF9FD1D0BC4A246D41CF1B02949FBE36AD2FD11FE6B95FB795946EE5ED5C5B958BCAE289356578E717302385E518153F962707662E0333A35009C7499EACE475403072D44520401E1CFD8A88BADB2DF3C79D123B3B2AA9D58BFE50CE82937E8510A4C1E7727DC66DD01DE9A36B2BAD6276750E36396BF349A78B63992783 +2A3800A828FEB97E +7071607B78CFB6366AF308EA9755928AD548B6BB4A7B070B7B61235E4B9481F86440540FD26E7AECA488470855B8CFF5D382031EB958A201EB2BFA280CFE64CE9C498B95C554AB427D8D19D56611802E94AE398534498E5E50167FB5C2E3F8E75ADCB436D49432555255D47D4351E92F9BF63EA2F27456EF13B5F4E0D41A83909485688FBBBB4463988CCA52A76D171902A0A5496F5BF8C22B23AB11ECBC93767FE29671E038D154BE2C66B900909BB13B011B55C9111CE9407168F49F639DB5AAA74DB3C65807A024DF7C601F52EA391D38F992A9E0D84ECDA5940EB7142E4242EF168FC9DF021C31418B8329011CF78B077D3FF2AD8B16EA4FE5068588281B +14249A87F7D43E72 +4B08A107E7E370C8C292971DAEC253EBF35E850C74BE2519D95FD338834882E2875B76E191B84B21BED799F848A8517D193447BC5A4345423D23B4EDD6748789AD9F58EFE2DA104DD66087B27E7A810AAA73A6FC46AFC4C1B73AFDBD3F38009190B49E18741FE0E2956D21C6E98640F8C3C8A7218212EE300418AB017A1D08A8D1D2AAFB3CB872B00C294E0F06BB50D566F19FFBBA9FA6EB06E830626C6076DCC3F82C90EA825BAD6611FD42DB7E3AE7E1B5A2F943F18B7D4FF40E67411F7D19C9BEE9D90B8A804DFE59304CA734B53FD7021D1D1E3FF4F291E131E5C99A4A85DB35DDF77C01E17560BD64EEEBAD69DBEA695D1965BAB92C64182ACA3F8A7BA3 +30047A5C52408492 +008D12200C60C59552B3B4FA328E82ED690A2588D3D209AF6E56721C0602EA3EBCE81C751B3A6D7155BDB53B5C8BA7B7F75F4975EDF873603C61252BC04259BD5C445792227090C8EA55EEE2A1DD84C80AA49599C022B7DF56715673F5672E1B321432AB68D012B5E7B84AE75A0440B6D056CD5531353062CE9E4E7719B3C93A692ED6AF4E6E77C8F47CBEDFC3E262968C6310889F2A9247EF96C9CF817BD0AB3C8A030F4242A8E3D9091299F77F5FCFA6E124460894A88BEE7E4455CFF670A7ED6AD8DFA799CEDA3D483709331D4909447263D7250E1E21A3C300AA33CB277BD3329A1A9D363FA1FD9782D2B2C740266CC4950B0BB08CC508CEE955C13A824825 +0DA4DF5AAAB1CE01 +00AFDA22CB46A6DB56F731988FD365A69702A4AED08FE5D5AC4EF315D59BE02A1C089E787069BA155134115C898AFC1C41E4345532AA4AF5D95BE0C1F085DD5811B7FF26C1DDE59FB2A2D1D4593CCEC3E452B63C61CED64CAAE23DAA435DEE7ACC28BFC211E9386942D0DE87E7F3C8EBFECD73E51ADBD0016501D35F3DFF1BBB561FEBC2D361E48F5C75AF8656B070B53CB592438BF07FEF5E889D54766D7564625AAAA89B38B1CFD2C33F1091903648481A9BD05507E7F2F4918824F0A658D091DBF0D112B0648759601D1167BD3698139865ED5AA51C73DC7B0AE3433135397C526E8E2B0E3008FF3FE720AC672E534FE12D2D8F5943EDFB7FE1C6F55B7B602D +2D56C310967D9349 +009718309EEB680CEEF1FDB354C68AB504DDF1C0CF2720146234269A699AA0FEB069C51B8ACF33C62026C3A06EC267B23F7E2167D19E03142C68804953D48A4027CCBB9928415B58183C7176E1F8CD4988713C04E30E5B7FAFBAD11057A6726E32449F0FC2E2C55779086BAFAFAB7C336AA1956B5A498B5F9DAB676A0B5C18AEDBAB386016891BF7AC96B62932A67C69E0E87B9FDB42626DCE36485025586B057EE85E8250D936C9B0FF49ACDE868CFD3C68EA962AD80708035311F2EC0DB79BE8D6F5E6BD8F656F8625D1BFE5A334D3F5127B1F624BC7B00E4066758CED4759102BD51CF52B39032C9E1EB6911F10C134AE7D9EC5CBFA1226E7AB3F146532ECE3 +0A07AAA1BE6DD57C +00907384A5781377564B462C9F6C5F00A37584EA7DBFCBFCE3DE76D8A85CCD7EE6E5445E37E066B2117C63095CD9B6AA44B6E6AC71B043EB8782B8232B04D9116546E399BE8A340E4F4680B597AB245F4250C97E0A4A8DBFE17715A5CEB725158D533B589D00C6C6159128B190F0D4DE2BB7F915DE8A2C1F0C5434996D4AF32640FDAB90F3121208D5882FBFF7D7E31813CE859819EB2E6F75872B62D205567E496365DC6AD996AD3D3E64F056788BAF181AE699651915448DF13D5377E991A3EB2DD475EFDD1F22819E0EC4EC06C190616397D8EFC764A7AFE4EF5EC210A0A52CB9B7944AEB98F1054128A96E573E9361A12D410A93B6536448A0584D35B3666E +14B9FB37240F612F +726A1805A847E25ECB1E4835479F02840869DB975E394499C8FE7573A5F2FA7BCC74E42C2F93C3E18934A4E2F7C2F2261E747D63EBAC16F44AFDC8D86FEE544E73E37B41927936025078C71D4635C59E09F431407D3D5DD30947DFF5E9E2DA4F2088DDD31D1C3109934BA68CFCB6D012DE12004830CCF251400C34EC3A8722CAAA41E520697EAD1E216A9F4684237A8DFF1CE7E17E0E15817775F25CF80348B5013E6D24ED754EC514747526D773E2CB34139EE7E85501912DF8E31282BC9A924C6B3962670B4D5EDA8F3A558A87747EA1E8A4B5C0BD65950AB927FD28064C99CBAA09EC7C9F5A8D95AC99332CE2CE5A8BE970E286E62F8D0089CFA9F7D73940 diff --git a/xcode/lib-gpu-generate/publickey.txt b/xcode/lib-gpu-generate/publickey.txt @@ -1,9 +1,9 @@ -00E349CBDB53056256239D0B70E88BEB146128AAB688D7577AC5B722C598F62C31187A1B57D1E051D002115E6F71AACBCD99D397A4A2F7F795146D529CA58E1737523C32EB253F448C12971CE50A52813AC54AA2EF6D3A9F94B53A33E624D538B45E279AE1F01E736F6C73889857D3AD1F94D5D6D330ED595AE4721F6CF5E68BE83E232359194138CCE131132F7A1E274ABF45406A40B74323F7F5BCEE8A4E736CF09869C8D22A4AEE1712906CD2E9624CB5D2D268270EB7CE3B23485383FAE0978A2E9CEE7799071B0E4B9DB45CE7B8AF45C8E80ECDD72301047578F39D86699F6FE68F09BD2FA9AEF52BA3847972120B175DC78053FC0F2C96102A2DBE99C5FD +00A758792553FA55FB7992A407E42873F68CB3DA2379D1D9EED1050555121036586B1CAC68F19440CC5B0FB800116534ABF3B4F8BC7D92DB1B1F3880089F1CC4ABFDA0F9C8A43A8A546AFD7ADD2DF1871153478262AB8590D857DFD3BFD58AEEDF3D3A69EEFC89BB824617F32DDF67367198E34D711CE8186F6552124DB8B25D8415DB492D857A115B8F9964EF0C0800D703D90C3E7B86E5B1A247ECD520ED4046125DE91CCD9BB5F1A5CD484679854EB6039E9DB6C3B6D60541AD8190725979E2B281AC43AE00476875B50ABEB7AA735C30ECCD018D31A2C690E709AEA7E9444514D0F2D126FFD0903F430B12D2BBBE059A7A8278FBBDB830549B173D5BFBAB29 010001 2 -00CF90F6FABB7019514E1351AB1151F1AFE777EC6316B2939BD52C42D674FAFF6F9D06C9DC147239F3963820F056C9A16F5004F90A849014C1A9ED7D8AAE8C8E9218C4E356EB5760DC694A0D9F859490EEA689D18679C30257C4904629D53FB70977B56E88DC4CBD67B4F446D3B3618CDB8FC9E6AF1DED609029E4E91F8EF7BD11227AE9AA83ABD91924F31EFEBB18500931258AAAD0843507879F7BD84629BE88E8F763F009BF9C25966595C63A9A3E391C61CB51498C4A86008B36BA96B2F18324C1A29EC9756E049DBB0487335D56DE3C6547E2BC6927A0C0A1A670BCA86EF0A2D4ACC6EDCCE704ED11CA23480B1A6A7E2BBBF611E43017A6771F8D3F8C56E1 +00B4255F9C0F8E7D9022507AC5B20386922AEE45E6729CBB7DA3B1611338CF2A5DFD14C65818F8D5B581E8AF0045E72BCCCF6E3C916023FF42734EE107343D42B2CAD82103E583E6352382C9967F485F11258B911FA6F2AEA3E0149C55A6FFA3C2F65F96CE619F99C02CBAFF743BF55982E92569FF28DE0711D9097EAD58DF227288E93DE55858AAD9822E35868BCDAA72D129CA36F853EA8C2042F866D97DCFC0C400162E6856B6ACB5F002BD3D5842B6FF056F567388BCCD90B61E634DC03239976BBFAA8FE7B5C2814593F0E59099AF92DE617FB36BC1578DF4AC0C1BD862E14580519A699F2D48C6CF9320D25725EC25A792A2EAEFC9697DB18E180DAB6585 010001 5 -00DA37B5D2785C9A999F413662497D33BA2D693437BAC2CB27A54DEE73F21982C7859118FC6E8DB6D100EB861709FEABE2B1C0ECF8A99852F60CB56FBA3887693ED9BBCD494D12DE1E126C7F9D9210C60AD981159C4F70654625F04019569CD0A6931FE981CDC941E609A7833BDAB47103A7DA4FA9F43A845A5205C9A0A5CF5F4BF305FCE954231D30A57A605D231323A41D9402FAC8D98CEDA0754ACC2FAEE4489B7FD5BFD22EF389D64985A40F370A97280492679F0CD96E4E5B91C368D567A783CC21350A08FE3404247B376BE120168011276631A320F07B8F16E5D6F3F0BAC41677BEC1E5F726CCE2887498D5C163AA193A2B1D2B7EDB2658DEC7B15F515F +00BA8566981C1DCEC9686B5B959BF7F82159AD2A3EC9FBA20446C66C0B72E94C5C884056066A8172CE7772561FBEE455835F75893A29F7846871442A276F287FE94F11E386FD3627852774B1853F07515DF63F1AAEEC84A3ECE42E848552948AE0FFE21F70E82B7DD007F3932282AC2336181B2DD737C78EC406E4B27A6707CDC8B0B2FD560ADD1184EBF541043F244D6866E0CB28A956BB8FCA6EFF9CFFDC45B46006ACDD8B9F480BC3FBCC03F53646BFE40BC04F49EF1D0368EE88CA677DAE73561C1AFE42126544837396CDA2CF82DCB70A918AAF62BC10E04AF75D03D9989FFC163E69622A99988F7BA051E86030EB7EB32186259A2BC6D5C30E0D4C752995 010001 8 diff --git a/xcode/lib-gpu-verify.xcodeproj/project.xcworkspace/xcuserdata/cedriczwahlen.xcuserdatad/UserInterfaceState.xcuserstate b/xcode/lib-gpu-verify.xcodeproj/project.xcworkspace/xcuserdata/cedriczwahlen.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ. diff --git a/xcode/lib-gpu-verify.xcodeproj/xcuserdata/cedriczwahlen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/xcode/lib-gpu-verify.xcodeproj/xcuserdata/cedriczwahlen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -4624,8 +4624,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "333" - endingLineNumber = "333" + startingLineNumber = "348" + endingLineNumber = "348" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -4717,8 +4717,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "387" - endingLineNumber = "387" + startingLineNumber = "388" + endingLineNumber = "388" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -4795,8 +4795,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "411" - endingLineNumber = "411" + startingLineNumber = "412" + endingLineNumber = "412" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -4873,8 +4873,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "363" - endingLineNumber = "363" + startingLineNumber = "383" + endingLineNumber = "383" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -4944,84 +4944,6 @@ <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent - uuid = "822B4F97-A556-4B45-98BA-FF79290FA456" - shouldBeEnabled = "No" - ignoreCount = "0" - continueAfterRunningActions = "No" - filePath = "../source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "368" - endingLineNumber = "368" - landmarkName = "gpuv_test_montg()" - landmarkType = "9"> - <Locations> - <Location - uuid = "822B4F97-A556-4B45-98BA-FF79290FA456 - 8470a8d1381f02db" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1005" - endingLineNumber = "1005" - offsetFromSymbolStart = "367"> - </Location> - <Location - uuid = "822B4F97-A556-4B45-98BA-FF79290FA456 - 8470a8d1381f0266" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1008" - endingLineNumber = "1008" - offsetFromSymbolStart = "367"> - </Location> - <Location - uuid = "822B4F97-A556-4B45-98BA-FF79290FA456 - 8470a8d1381f07d2" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1028" - endingLineNumber = "1028" - offsetFromSymbolStart = "367"> - </Location> - <Location - uuid = "822B4F97-A556-4B45-98BA-FF79290FA456 - 8470a8d1381f00cb" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1021" - endingLineNumber = "1021" - offsetFromSymbolStart = "367"> - </Location> - </Locations> - </BreakpointContent> - </BreakpointProxy> - <BreakpointProxy - BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> - <BreakpointContent uuid = "4BD64E66-E73C-4DC5-8819-0C67F8A27CCB" shouldBeEnabled = "Yes" ignoreCount = "0" @@ -5029,8 +4951,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "360" - endingLineNumber = "360" + startingLineNumber = "380" + endingLineNumber = "380" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -5250,84 +5172,6 @@ <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent - uuid = "80648074-0B5F-439C-AFEB-95A36177A86B" - shouldBeEnabled = "No" - ignoreCount = "0" - continueAfterRunningActions = "No" - filePath = "../source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "376" - endingLineNumber = "376" - landmarkName = "gpuv_test_montg()" - landmarkType = "9"> - <Locations> - <Location - uuid = "80648074-0B5F-439C-AFEB-95A36177A86B - 8470a8d1381f01c3" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1013" - endingLineNumber = "1013" - offsetFromSymbolStart = "388"> - </Location> - <Location - uuid = "80648074-0B5F-439C-AFEB-95A36177A86B - 8470a8d1381f016e" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1016" - endingLineNumber = "1016" - offsetFromSymbolStart = "388"> - </Location> - <Location - uuid = "80648074-0B5F-439C-AFEB-95A36177A86B - 8470a8d1381f06da" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1036" - endingLineNumber = "1036" - offsetFromSymbolStart = "388"> - </Location> - <Location - uuid = "80648074-0B5F-439C-AFEB-95A36177A86B - 8470a8d1381f07b3" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - symbolName = "gpuv_test_montg" - moduleName = "lib-gpu-verify" - usesParentBreakpointCondition = "Yes" - urlString = "file:///Users/cedriczwahlen/libgpuverify/source/gpuv-montg.c" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "1029" - endingLineNumber = "1029" - offsetFromSymbolStart = "388"> - </Location> - </Locations> - </BreakpointContent> - </BreakpointProxy> - <BreakpointProxy - BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> - <BreakpointContent uuid = "3ABB73B4-8A1A-4320-9629-FCC9139F5271" shouldBeEnabled = "No" ignoreCount = "0" @@ -5335,8 +5179,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "295" - endingLineNumber = "295" + startingLineNumber = "310" + endingLineNumber = "310" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -5413,8 +5257,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "341" - endingLineNumber = "341" + startingLineNumber = "361" + endingLineNumber = "361" landmarkName = "gpuv_test_montg()" landmarkType = "9"> <Locations> @@ -5476,9 +5320,9 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "282" - endingLineNumber = "282" - landmarkName = "finally(valid, time, len, res)" + startingLineNumber = "296" + endingLineNumber = "296" + landmarkName = "finally(cls, valid, time, len, res)" landmarkType = "9"> <Locations> <Location @@ -5554,8 +5398,8 @@ filePath = "../source/gpuv-montg.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "343" - endingLineNumber = "343" + startingLineNumber = "363" + endingLineNumber = "363" landmarkName = "gpuv_test_montg()" landmarkType = "9"> </BreakpointContent> @@ -5588,8 +5432,8 @@ endingColumnNumber = "9223372036854775807" startingLineNumber = "279" endingLineNumber = "279" - landmarkName = "opencl_results(info, state, timed)" - landmarkType = "9"> + landmarkName = "unknown" + landmarkType = "0"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy @@ -5604,8 +5448,8 @@ endingColumnNumber = "9223372036854775807" startingLineNumber = "182" endingLineNumber = "182" - landmarkName = "opencl_prepare(info, state, signatures, exponents, moduli, messages, pks, n)" - landmarkType = "9"> + landmarkName = "unknown" + landmarkType = "0"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy @@ -5650,8 +5494,8 @@ filePath = "../source/gpuv.c" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "562" - endingLineNumber = "562" + startingLineNumber = "564" + endingLineNumber = "564" landmarkName = "finally_std(valid, time, len, res)" landmarkType = "9"> </BreakpointContent>