aboutsummaryrefslogtreecommitdiff
path: root/ttt.jai
diff options
context:
space:
mode:
Diffstat (limited to 'ttt.jai')
-rw-r--r--ttt.jai120
1 files changed, 2 insertions, 118 deletions
diff --git a/ttt.jai b/ttt.jai
index 503c418..554884a 100644
--- a/ttt.jai
+++ b/ttt.jai
@@ -474,6 +474,7 @@ update_total_times :: (db: *Database) {
totals: []s64 = db.total_times;
memset(totals.data, 0, NUM_WEEK_DAYS * size_of(s64));
for db.tasks {
+ // TODO Try to use local variables instead of total sub...something... the indexes thingy.
times : []s64 = it.times;
totals[0] = add_int64(totals[0], times[0]);
totals[1] = add_int64(totals[1], times[1]);
@@ -1163,121 +1164,6 @@ read_enter_confirmation :: inline (row: int, style: int, message: string) -> boo
}
main :: () {
-
-
- add :: (value_a: s64, value_b: s64) -> s64, bool #dump { // TODO Comparing implementaitons using dump
- result: s64 = ---;
- flag: bool = ---;
- #asm {
- mov d: gpr === d, 9223372036854775807;
- mov a: gpr === a, value_a;
- mov b: gpr === b, value_b;
- add a, b;
- seto flag; // Signal overflow.
- mov result, a;
- mov a, value_a;
- shr a, 63;
- add a, d;
- mov c: gpr, value_a;
- xor c, b;
- xor b, result;
- not b;
- or c, b;
- test c, c;
- cmovns result, a;
- }
- return result, flag;
- }
-
-
- // value_a: s64 = 2;
- // value_b: s64 = S64_MAX-1;
- value_a: s64 = -2;
- value_b: s64 = S64_MIN+1;
- print(">%\n", S64_MAX);
- argx := get_command_line_arguments();
- if argx.count > 1
- value_a = parse_int(*argx[1]);
- if argx.count > 2
- value_b = parse_int(*argx[2]);
-
- result: s64 = ---;
- flags: s64;// = ---;
- #asm LAHF_SAHF { // TODO Remove LAHF_SAHF it not required.
-
- // Code from https://locklessinc.com/articles/sat_arithmetic/
-
-
- // value_a === b;
- // value_b === c;
- // add value_a, value_b;
- // mov result, value_a;
-
- // Version 1
- // mov b: gpr === b, value_a;
- // mov c: gpr === c, value_b;
- // add b, c;
- // mov result, b;
- // seto flags;
- // cmovns b, c;
-
-// s64b sat_adds64b(s64b x, s64b y)
-// {
-// u64b ux = x;
-// u64b uy = y;
-// u64b res = ux + uy;
-//
-// ux = (ux >> 63) + LONG_MAX;
-//
-// /* Force compiler to use cmovns instruction */
-// if ((s64b) ((ux ^ uy) | ~(uy ^ res)) >= 0)
-// {
-// res = ux;
-// }
-//
-// return res;
-// }
- // Version 2 - WORKS
- mov d: gpr === d, 9223372036854775807;
- mov a: gpr === a, value_a;
- mov b: gpr === b, value_b;
- add a, b;
- seto flags; // Signal overflow.
- mov result, a;
- mov a, value_a;
- shr a, 63;
- add a, d;
- mov c: gpr, value_a;
- xor c, b;
- xor b, result;
- not b;
- or c, b;
- test c, c;
- cmovns result, a;
-
-// s64b sat_subs64b(s64b x, s64b y)
-// {
-// u64b ux = x;
-// u64b uy = y;
-// u64b res = ux - uy;
-//
-// ux = (ux >> 63) + LONG_MAX;
-//
-// /* Force compiler to use cmovns instruction */
-// if ((s64b)((ux ^ uy) & (ux ^ res)) < 0)
-// {
-// res = ux;
-// }
-//
-// return res;
-// }
- // TODO Use https://godbolt.org/ to help
-
- }
- print("% + % = %\n", value_a, value_b, result);
- print("flag: %\n", flags);
- return;
-
// TODO Implement signal handling and see modules/Debug.jai for examples.
@@ -1293,9 +1179,7 @@ main :: () {
}
home_path, success_path := get_absolute_path(home_dir); // Returns temporary memory.
-
-
-
+
if success_path == false {
print_error("Failed to find home directory '%'.", home_dir);
exit(1);