Skip to content
Snippets Groups Projects
Commit a52719dc authored by Griffin, Matt J Dr (PG/R - Comp Sci & Elec Eng)'s avatar Griffin, Matt J Dr (PG/R - Comp Sci & Elec Eng)
Browse files

Add more examples and solutions for kocher

parent 48f99af7
No related branches found
No related tags found
No related merge requests found
Showing
with 111 additions and 11 deletions
File added
void victim_function_nested_ifs(unsigned x) {
unsigned val1, val2;
if (x < array1_size) {
val1 = array1[x];
if (val1 & 1) {
val2 = array2[0];
}
}
}
\ No newline at end of file
void cheang_sol_nested_ifs(unsigned x) {
unsigned val1, val2;
if (x < array1_size) {
val1 = array1[x];
if (val1 & 1) {
_mm_lfence();
val2 = array2[0];
}
}
}
\ No newline at end of file
File moved
File moved
checkpoint()
if x >= array_size:
goto skip_branch
if x < array_size
skip_branch:
result = array[x]
...
if terminate_simulation():
rollback() // to line 4
\ No newline at end of file
File moved
#include "../ex_main.h"
void victim_function_v01(size_t x) { void victim_function_v01(size_t x) {
if (x < array1_size) { if (x < array1_size) {
temp &= array2[array1[x] * 512]; temp &= array2[array1[x] * 512];
} }
} }
\ No newline at end of file
#include "../ex_main.h"
void ms_solution_v01(size_t x) {
if (x < array1_size) {
__mm_lfence();
temp &= array2[array1[x] * 512];
}
}
#include "../ex_main.h"
void optimal_solution_v01(size_t x) {
if (x < array1_size) {
uint8_t v = array1[x] * 512;
__mm_lfence();
temp &= array2[v];
}
}
#include "../ex_main.h"
void victim_function_v10(size_t x, uint8_t k) { void victim_function_v10(size_t x, uint8_t k) {
if (x < array1_size) { if (x < array1_size) {
if (array1[x] == k) if (array1[x] == k)
temp &= array2[0]; temp &= array2[0];
} }
} }
\ No newline at end of file
#include "../ex_main.h"
void cheang_sol_v10(size_t x, uint8_t k) {
if (x < array1_size) {
_mm_lfence();
if (array1[x] == k)
temp &= array2[0];
}
}
\ No newline at end of file
#include "../ex_main.h"
void victim_function_v11(size_t x) { void victim_function_v11(size_t x) {
if (x < array1_size) if (x < array1_size)
temp = memcmp(&temp, array2 + (array1[x] * 512), 1); temp = memcmp(&temp, array2 + (array1[x] * 512), 1);
......
#include "../ex_main.h"
void cheang_sol_v11(size_t x) {
if (x < array1_size) {
_mm_lfence();
temp = memcmp(&temp, array2 + (array1[x] * 512), 1);
}
}
#include "../ex_main.h"
void optimal_sol_v11(size_t x) {
if (x < array1_size) {
uint8_t v = (array1[x] * 512);
_mm_lfence();
temp = memcmp(&temp, array2 + v, 1);
}
}
#include "../ex_main.h"
void victim_function_v12(size_t x, size_t y) { void victim_function_v12(size_t x, size_t y) {
if ((x + y) < array1_size) if ((x + y) < array1_size)
temp &= array2[array1[x + y] * 512]; temp &= array2[array1[x + y] * 512];
} }
\ No newline at end of file
#include "../ex_main.h"
void optimal_sol_v12(size_t x, size_t y) {
if ((x + y) < array1_size)
uint8_t v = array1[x + y] * 512;
_mm_lfence();
temp &= array2[v];
}
#include "../ex_main.h"
__inline int is_x_safe(size_t x) { if (x < array1_size) return 1; return 0; } __inline int is_x_safe(size_t x) { if (x < array1_size) return 1; return 0; }
void victim_function_v13(size_t x) { void victim_function_v13(size_t x) {
if (is_x_safe(x)) if (is_x_safe(x))
temp &= array2[array1[x] * 512]; temp &= array2[array1[x] * 512];
} }
\ No newline at end of file
#include "../ex_main.h"
__inline int is_x_safe(size_t x) { if (x < array1_size) return 1; return 0; }
void victim_function_v13(size_t x) {
if (is_x_safe(x))
uint8_t v = array1[x] * 512;
_mm_lfence();
temp &= array2[v];
}
#include "../ex_main.h"
void victim_function_v14(size_t x) { void victim_function_v14(size_t x) {
if (x < array1_size) if (x < array1_size)
temp &= array2[array1[x ^ 255] * 512]; temp &= array2[array1[x ^ 255] * 512];
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment