From b2ece54864fc535f60e93d66561149d966374618 Mon Sep 17 00:00:00 2001 From: deesix Date: Sat, 8 Feb 2020 00:16:54 +0100 Subject: [PATCH] aarch64: do not generate a wasteful stack anymore Until now, each element on the compiled program stack was 128 bits long, half of them unused because only one 64 bits value was stored. Now it's 64 bits long, so we don't waste all that memory. We workaround the architectural alignment restriction of the SP register by using a free regular register. X18 is for platform use so it seems a good candidate for this task. At _start we copy the value of SP into X18. SP is not used anymore. When a definition refers to SP it doesn't mean it literaly now, because here we redefine (without renaming) the involved M1 macro definitions to operate on X18 (easier transition; abstraction). INIT_SP is introduced. The function arguments are passed via stack, so the offset from the Base Pointer ("depth") to each of them is different now. Changes both to compiler code (cc_core.c) and libc reflect that the arguments are 8 bytes (instead of 16 bytes) apart now. Note that SUB_X0_32 and SUB_X0_48 are removed, because we only need 8, 16 and 24 bytes subtraction to reach the arguments from asm libc functions. SUB_X0_8 and SUB_X0_24 are introduced. --- CHANGELOG.org | 1 + HACKING | 20 +++++--- cc_core.c | 12 ++--- test/common_aarch64/aarch64_defs.M1 | 38 +++++++------- test/common_aarch64/functions/access.c | 4 +- test/common_aarch64/functions/chdir.c | 4 +- test/common_aarch64/functions/execve.c | 12 ++--- test/common_aarch64/functions/exit.c | 2 +- test/common_aarch64/functions/file.c | 14 ++--- test/common_aarch64/functions/getcwd.c | 4 +- test/common_aarch64/functions/malloc.c | 2 +- test/common_aarch64/functions/putchar.c | 2 +- test/common_aarch64/functions/stat.c | 4 +- test/common_aarch64/functions/uname.c | 2 +- test/common_aarch64/libc-core.M1 | 1 + test/test.answers | 68 ++++++++++++------------- test/test100/proof.answer | 2 +- 17 files changed, 100 insertions(+), 92 deletions(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index 86c3134..93f9a55 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -21,6 +21,7 @@ Added test for chdir and getcwd family of posix primitives ** Changed ** Fixed +AArch64 wasteful stack ** Removed diff --git a/HACKING b/HACKING index 7c2efc3..bfa59a0 100644 --- a/HACKING +++ b/HACKING @@ -273,12 +273,16 @@ tmp, oLR and oBP again) leaving everything as it was before this journey. Well... one important thing changed: following M2-Planet conventions the value returned from the function, if any, is on X0. -*** Wasted stack space +*** Stack pointer -Due to alignment (128 bits) restriction for "push" and "pop" we waste -half of the stack space in the running generated binaries, as the -values are only 64 bits. Using another register as stack pointer would -work around the architectural restriction but this solution is not -implemented yet. Adjustment to several definitions and functions is -required, to reflect the new "depth" of the elements and the change of -register. +Due to alignment (128 bits) restriction for "push" and "pop" based on +the architectural register, we initialize and use X18 as stack pointer +instead. + +The M1 definitions referring to SP use X18; stack operations too. + +For example: + +DEFINE LDR_X0_[SP] 400240f9 is ldr x0, [x18] +DEFINE PUSH_LR 5e8e1ff8 is str x30, [x18, #-8]! +DEFINE INIT_SP f2030091 is mov x18, sp diff --git a/cc_core.c b/cc_core.c index f265372..84805ab 100644 --- a/cc_core.c +++ b/cc_core.c @@ -1100,7 +1100,7 @@ void collect_local() else if(X86 == Architecture) a->depth = -20; else if(AMD64 == Architecture) a->depth = -40; else if(ARMV7L == Architecture) a->depth = 16; - else if(AARCH64 == Architecture) a->depth = 64; /* argc, argv, envp and the local (16 bytes each) */ + else if(AARCH64 == Architecture) a->depth = 32; /* argc, argv, envp and the local (8 bytes each) */ } else if((NULL == function->arguments) && (NULL == function->locals)) { @@ -1108,7 +1108,7 @@ void collect_local() else if(X86 == Architecture) a->depth = -8; else if(AMD64 == Architecture) a->depth = -16; else if(ARMV7L == Architecture) a->depth = 8; - else if(AARCH64 == Architecture) a->depth = 16; + else if(AARCH64 == Architecture) a->depth = register_size; } else if(NULL == function->locals) { @@ -1116,7 +1116,7 @@ void collect_local() else if(X86 == Architecture) a->depth = function->arguments->depth - 8; else if(AMD64 == Architecture) a->depth = function->arguments->depth - 16; else if(ARMV7L == Architecture) a->depth = function->arguments->depth + 8; - else if(AARCH64 == Architecture) a->depth = function->arguments->depth + 16; + else if(AARCH64 == Architecture) a->depth = function->arguments->depth + register_size; } else { @@ -1124,7 +1124,7 @@ void collect_local() else if(X86 == Architecture) a->depth = function->locals->depth - register_size; else if(AMD64 == Architecture) a->depth = function->locals->depth - register_size; else if(ARMV7L == Architecture) a->depth = function->locals->depth + register_size; - else if(AARCH64 == Architecture) a->depth = function->locals->depth + 16; + else if(AARCH64 == Architecture) a->depth = function->locals->depth + register_size; } function->locals = a; @@ -1631,7 +1631,7 @@ void collect_arguments() else if(X86 == Architecture) a->depth = -4; else if(AMD64 == Architecture) a->depth = -8; else if(ARMV7L == Architecture) a->depth = 4; - else if(AARCH64 == Architecture) a->depth = 16; + else if(AARCH64 == Architecture) a->depth = register_size; } else { @@ -1639,7 +1639,7 @@ void collect_arguments() else if(X86 == Architecture) a->depth = function->arguments->depth - register_size; else if(AMD64 == Architecture) a->depth = function->arguments->depth - register_size; else if(ARMV7L == Architecture) a->depth = function->arguments->depth + register_size; - else if(AARCH64 == Architecture) a->depth = function->arguments->depth + 16; + else if(AARCH64 == Architecture) a->depth = function->arguments->depth + register_size; } global_token = global_token->next; diff --git a/test/common_aarch64/aarch64_defs.M1 b/test/common_aarch64/aarch64_defs.M1 index edd181c..dacb594 100644 --- a/test/common_aarch64/aarch64_defs.M1 +++ b/test/common_aarch64/aarch64_defs.M1 @@ -16,18 +16,20 @@ DEFINE NULL 0000000000000000 -# Stack (SP-based, 128 bits per element) -DEFINE PUSH_X0 e00f1ff8 -DEFINE PUSH_X1 e10f1ff8 -DEFINE PUSH_X16 f00f1ff8 -DEFINE PUSH_BP f10f1ff8 -DEFINE PUSH_LR fe0f1ff8 +# Stack (x18 as SP, 64 bits per element) +DEFINE PUSH_X0 408e1ff8 +DEFINE PUSH_X1 418e1ff8 +DEFINE PUSH_X16 508e1ff8 +DEFINE PUSH_BP 518e1ff8 +DEFINE PUSH_LR 5e8e1ff8 -DEFINE POP_X0 e00741f8 -DEFINE POP_X1 e10741f8 -DEFINE POP_X16 f00741f8 -DEFINE POP_BP f10741f8 -DEFINE POP_LR fe0741f8 +DEFINE POP_X0 408640f8 +DEFINE POP_X1 418640f8 +DEFINE POP_X16 508640f8 +DEFINE POP_BP 518640f8 +DEFINE POP_LR 5e8640f8 + +DEFINE INIT_SP f2030091 # mov x18, sp # Jump/branch/call/return @@ -56,7 +58,7 @@ DEFINE LOAD_W16_AHEAD 50000018 # Load/store/dereference -DEFINE LDR_X0_[SP] e00340f9 +DEFINE LDR_X0_[SP] 400240f9 DEFINE STR_X0_[X1] 200000f9 DEFINE STR_BYTE_W0_[X1] 20000039 DEFINE DEREF_X0 000040f9 @@ -66,16 +68,16 @@ DEFINE DEREF_X0_BYTE 00004039 # Move data between registers DEFINE SET_X0_FROM_BP e00311aa DEFINE SET_X1_FROM_X0 e10300aa -DEFINE SET_X1_FROM_SP e1030091 +DEFINE SET_X1_FROM_SP e10312aa DEFINE SET_X2_FROM_X0 e20300aa DEFINE SET_X3_FROM_X0 e30300aa DEFINE SET_X4_FROM_X0 e40300aa DEFINE SET_X5_FROM_X0 e50300aa DEFINE SET_X6_FROM_X0 e60300aa DEFINE SET_X16_FROM_X0 f00300aa -DEFINE SET_X16_FROM_SP f0030091 +DEFINE SET_X16_FROM_SP f00312aa DEFINE SET_BP_FROM_X16 f10310aa -DEFINE SET_BP_FROM_SP f1030091 +DEFINE SET_BP_FROM_SP f10312aa # Move constant to register @@ -94,13 +96,13 @@ DEFINE SET_X0_TO_FCNTL_H_AT_FDCWD 600c8092 # Arith/logic/relational DEFINE ADD_X0_X1_X0 2000008b DEFINE ADD_X0_BP_X0 2002008b -DEFINE ADD_X1_SP_8 e1230091 +DEFINE ADD_X1_SP_8 41220091 DEFINE SUB_X0_X1_X0 200000cb DEFINE SUB_X0_X0_X1 000001cb +DEFINE SUB_X0_8 002000d1 DEFINE SUB_X0_16 004000d1 -DEFINE SUB_X0_32 008000d1 -DEFINE SUB_X0_48 00c000d1 +DEFINE SUB_X0_24 006000d1 DEFINE MSUB_X0_X0_X2_X1 0084029b DEFINE MUL_X0_X1_X0 207c009b diff --git a/test/common_aarch64/functions/access.c b/test/common_aarch64/functions/access.c index 3d7718a..fb3d3fc 100644 --- a/test/common_aarch64/functions/access.c +++ b/test/common_aarch64/functions/access.c @@ -17,9 +17,9 @@ int access(char* pathname, int mode) { - asm("SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" "SET_X2_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + "SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X1_FROM_X0" "SET_X0_TO_0" "SET_X3_FROM_X0" diff --git a/test/common_aarch64/functions/chdir.c b/test/common_aarch64/functions/chdir.c index 2ff0357..3c29b6c 100644 --- a/test/common_aarch64/functions/chdir.c +++ b/test/common_aarch64/functions/chdir.c @@ -17,14 +17,14 @@ int chdir(char* path) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_CHDIR" "SYSCALL"); } int fchdir(int fd) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_FCHDIR" "SYSCALL"); } diff --git a/test/common_aarch64/functions/execve.c b/test/common_aarch64/functions/execve.c index 402e880..e606164 100644 --- a/test/common_aarch64/functions/execve.c +++ b/test/common_aarch64/functions/execve.c @@ -26,11 +26,11 @@ int waitpid(int pid, int* status_ptr, int options) { asm("SET_X0_TO_MINUS_1" "SET_X3_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_48" "DEREF_X0" + "SET_X0_FROM_BP" "SUB_X0_24" "DEREF_X0" "SET_X2_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" - "SET_X1_FROM_X0" "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + "SET_X1_FROM_X0" + "SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_WAIT4" "SYSCALL"); } @@ -38,11 +38,11 @@ int waitpid(int pid, int* status_ptr, int options) int execve(char* file_name, char** argv, char** envp) { asm( - "SET_X0_FROM_BP" "SUB_X0_48" "DEREF_X0" + "SET_X0_FROM_BP" "SUB_X0_24" "DEREF_X0" "SET_X2_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" - "SET_X1_FROM_X0" "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + "SET_X1_FROM_X0" + "SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_EXECVE" "SYSCALL"); } diff --git a/test/common_aarch64/functions/exit.c b/test/common_aarch64/functions/exit.c index efc0a52..a66d45c 100644 --- a/test/common_aarch64/functions/exit.c +++ b/test/common_aarch64/functions/exit.c @@ -20,7 +20,7 @@ void exit(int value) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_EXIT" "SYSCALL"); } diff --git a/test/common_aarch64/functions/file.c b/test/common_aarch64/functions/file.c index 4006d7b..4e6dd35 100644 --- a/test/common_aarch64/functions/file.c +++ b/test/common_aarch64/functions/file.c @@ -23,7 +23,7 @@ int fgetc(FILE* f) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "PUSH_X0" "SET_X1_FROM_SP" "SET_X2_TO_1" @@ -39,9 +39,9 @@ int fgetc(FILE* f) void fputc(char s, FILE* f) { - asm("SET_X0_FROM_BP" "SUB_X0_16" + asm("SET_X0_FROM_BP" "SUB_X0_8" "SET_X1_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" + "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" "SET_X2_TO_1" "SET_X8_TO_SYS_WRITE" "SYSCALL"); @@ -61,11 +61,11 @@ void fputc(char s, FILE* f) FILE* open(char* name, int flag, int mode) { - asm("SET_X0_FROM_BP" "SUB_X0_48" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_24" "DEREF_X0" "SET_X3_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" - "SET_X2_FROM_X0" "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + "SET_X2_FROM_X0" + "SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X1_FROM_X0" "SET_X0_TO_FCNTL_H_AT_FDCWD" "SET_X8_TO_SYS_OPENAT" @@ -93,7 +93,7 @@ FILE* fopen(char* filename, char* mode) int close(int fd) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_CLOSE" "SYSCALL"); } diff --git a/test/common_aarch64/functions/getcwd.c b/test/common_aarch64/functions/getcwd.c index b2a989b..ddc8003 100644 --- a/test/common_aarch64/functions/getcwd.c +++ b/test/common_aarch64/functions/getcwd.c @@ -22,9 +22,9 @@ int _getcwd(char* buf, size_t size) { - asm("SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" "SET_X1_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + "SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_GETCWD" "SYSCALL"); } diff --git a/test/common_aarch64/functions/malloc.c b/test/common_aarch64/functions/malloc.c index 1c06e6d..76c55ed 100644 --- a/test/common_aarch64/functions/malloc.c +++ b/test/common_aarch64/functions/malloc.c @@ -19,7 +19,7 @@ void* malloc(int size) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X1_FROM_X0" "SET_X0_TO_0" "SET_X8_TO_SYS_BRK" "SYSCALL" "PUSH_X0" diff --git a/test/common_aarch64/functions/putchar.c b/test/common_aarch64/functions/putchar.c index 1bba3f8..a45de8d 100644 --- a/test/common_aarch64/functions/putchar.c +++ b/test/common_aarch64/functions/putchar.c @@ -17,7 +17,7 @@ void putchar(int c) { - asm("SET_X0_FROM_BP" "SUB_X0_16" + asm("SET_X0_FROM_BP" "SUB_X0_8" "SET_X1_FROM_X0" "SET_X0_TO_1" "SET_X2_TO_1" diff --git a/test/common_aarch64/functions/stat.c b/test/common_aarch64/functions/stat.c index ae8a6d3..b3275b0 100644 --- a/test/common_aarch64/functions/stat.c +++ b/test/common_aarch64/functions/stat.c @@ -43,9 +43,9 @@ int chmod(char *pathname, int mode) { - asm("SET_X0_FROM_BP" "SUB_X0_32" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" "SET_X2_FROM_X0" - "SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + "SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X1_FROM_X0" "SET_X0_TO_0" "SET_X3_FROM_X0" diff --git a/test/common_aarch64/functions/uname.c b/test/common_aarch64/functions/uname.c index 919b130..8a24421 100644 --- a/test/common_aarch64/functions/uname.c +++ b/test/common_aarch64/functions/uname.c @@ -27,7 +27,7 @@ struct utsname int uname(struct utsname* unameData) { - asm("SET_X0_FROM_BP" "SUB_X0_16" "DEREF_X0" + asm("SET_X0_FROM_BP" "SUB_X0_8" "DEREF_X0" "SET_X8_TO_SYS_UNAME" "SYSCALL"); } diff --git a/test/common_aarch64/libc-core.M1 b/test/common_aarch64/libc-core.M1 index 0e95854..012fc6c 100644 --- a/test/common_aarch64/libc-core.M1 +++ b/test/common_aarch64/libc-core.M1 @@ -15,6 +15,7 @@ ## along with M2-Planet. If not, see . :_start + INIT_SP LDR_X0_[SP] ADD_X1_SP_8 SET_BP_FROM_SP diff --git a/test/test.answers b/test/test.answers index 44c27e3..0846684 100644 --- a/test/test.answers +++ b/test/test.answers @@ -1,164 +1,164 @@ -3f35cb352bf0de4f69542a09c37913e0da6ed9422dc3a3bfd403fed6093d05d0 test/results/test00-aarch64-binary +4d8af4fe5f7a5c95e34e7fb9e5fea11b3a7903874640a40c4f2f2ec5caf1902f test/results/test00-aarch64-binary e4482d2133772d1d9a00d30a8f46fee405a20b2354414fc735cbed077be7b61b test/results/test00-amd64-binary 25b38a3f5ad81ed4618a3d60fe00e0eb1bf88366f4eb031c02a9f880440ae207 test/results/test00-armv7l-binary 0c93110e4cf2f8f69eb3a308162478e644ee63fd4881762161be5de50fbe9f06 test/results/test00-knight-native-binary 64879eebceb475f21e54cb1f2e872996ca80e8c1fbb8b5895fb5fb6bac0c4384 test/results/test00-knight-posix-binary c52562bd0aabb86ce8ca177f22f8d0455769b444df2d4d62894faab63b7151d8 test/results/test00-x86-binary -c3334a519c8d08046b35fd8960231bb90f0435139bbdff57cc64dd462d947818 test/results/test01-aarch64-binary +7f3189f1b5c7cc239c687cf7e5485e2ead162601a1dd6a6dc0853ab5f6200a87 test/results/test01-aarch64-binary 2c968b3736b6f2828982bad905018bfc4f159d7871e825f86a8f50b55b90b143 test/results/test01-amd64-binary c04bda3cf219832b37e945e416fff106b927703a23af0da2bbfa07fc812a0d92 test/results/test01-armv7l-binary bff3ae5a240cd319570ef0c81c499cea51c821bc1369456c23a4206e6072865e test/results/test01-knight-native-binary 486ee05ccea796a9cfa9bfb23189b8e014b7ce8d14fea03b27d679d410fe17dd test/results/test01-knight-posix-binary eae96857f2b6d8e8ba86ac06e72345ea572622b358b23978bb5f2db1baadf41c test/results/test01-x86-binary -5343c5646e162e5f4091db4a67ad6040cf25d24ed7db4ee70cb1ff0ed1b11f05 test/results/test02-aarch64-binary +5263cc17ed5e7e481f0a5080c98eabda3ba66d84c439a4ee5819963b0280a924 test/results/test02-aarch64-binary c742a827684287cb82b4a3526eb996eda941bf284e11aab431816a3ef1e0804c test/results/test02-amd64-binary ef25f00027ebb22cccb9a321e6c89c380090e365c6ad691617378a1d89009d89 test/results/test02-armv7l-binary 7631c0f224100786a4b002b4353da4ea56ecb0d6f3ac1a7bc5827b6e257d0748 test/results/test02-knight-native-binary e6493845b9e94a617649638252f23502f9212de583fd00cba6cc07fffd296e32 test/results/test02-knight-posix-binary 8ead336d2f3f72d5874230492e0472edec61d355905e8636e3dfb2731695037c test/results/test02-x86-binary -8690f1844e6312623b7adccba3b7bef2251ceb867bc06ece9dbc4667dfe45fbd test/results/test03-aarch64-binary +4b69ce72be338359f0cd886050e66eda7e2375c356de0e317d794cae3c1a76af test/results/test03-aarch64-binary c611b3cab0a736e7176dac21aa04555039b28362d0cfd3a5c56cf29ca3e48616 test/results/test03-amd64-binary a80264844e0d16e53c0853a5a59452343fd9504408f37ae02f7063bbd15f0220 test/results/test03-armv7l-binary f4affc4dd2112ecf8ec3c40ea5e575d579fc60ff9df8b244dddc1a495e9529d6 test/results/test03-knight-native-binary 96849d5a9294799a9648c24db21b2dab1555dd5ba69d172d77df800622347226 test/results/test03-knight-posix-binary 2313cb3f1a2b9eb6bf15f8d43418e15d6c16f7f1b5c22700fdfc2b38beb59192 test/results/test03-x86-binary -6ea7f177bff8e09e1fe9edaa85abd32013358aa36e8fb853e58da0398c5b4fe1 test/results/test04-aarch64-binary +6d6115a029cbcc86fa643377b2693c08d3c3b9158f767e04ccedc1b194940c8d test/results/test04-aarch64-binary b773d7ec7c550b71997ce451af7e1ee59fe6597b32adc455b271b7d173d5eae9 test/results/test04-amd64-binary fc9de9b27e154643e221f9d8281956809db5ee9f85a56d990f8a7de66d47f10a test/results/test04-armv7l-binary 343306548109a79f599b64f8ad63331cf6a4328eb5ddb2a1f19f6eebec6b254a test/results/test04-knight-native-binary df9ba08dfa69ac6cbb4483146dbbe079ef575d7de8318e2e52283151ebf24bd3 test/results/test04-knight-posix-binary b7ddb37063c541c6a315809c4438aa235d6702f54bb64f4ffc88dbe78617de81 test/results/test04-x86-binary -706283ab5dfefb4c60241baade0d9ed708834a1f839b641a89c99a1df13476a9 test/results/test05-aarch64-binary +3aff4a809c9b753e2864b5c3319ed9380856265deafd1e3e8d3aabaa6254285c test/results/test05-aarch64-binary c4e5e2ffc3a2c3d4116589fa1369d45e5af91cc69b5d342ef5552dfca992c64b test/results/test05-amd64-binary 748f6b9825bf9b72908dfee1ea674eaf1c3c63b0100a3e3195efefabe5048280 test/results/test05-armv7l-binary ac909d377dad4961c3df5bb780b1562015e79f8f866d07b4fefaa19f5521f32a test/results/test05-knight-native-binary 290a68de66c3a83ef5bd75aa1d3b9057d0d6740b310072d11f9daacb184e9100 test/results/test05-knight-posix-binary 90321c43b2384050e5f03e5af67d345b55dd8a43e96d1f3b7f29d3c5dae3f077 test/results/test05-x86-binary -612a3b7c5a4593d7d498683198bbe328d837a442c7cde7179bb098bc6841a74a test/results/test06-aarch64-binary +5b4198c7e7a52f38f5b626efd121a86f47d68fad80d00c6011271bb62af00cb8 test/results/test06-aarch64-binary 98fab6d12630465d4e3cb72102b541c818e75b034e1ca1823c26ad6dabc4a910 test/results/test06-amd64-binary bb913bdbfb77b855d416a6051e0d5646275fe6eed7a89cf3373be14d83bef1c5 test/results/test06-armv7l-binary 169d83f5dd34a1d764716342149f56db492b1f790ce323c5e93b4d577f772e7b test/results/test06-knight-native-binary b177d769ae44c3509d9a08d0ee631ec69654dc5d723408bf0decdc67c42aae27 test/results/test06-knight-posix-binary 663fc6eefe965f237b6bf5a211398c8ae1210f97ff39b59603677e92462c68c7 test/results/test06-x86-binary -3a294ea084925a16d4df22d17f1b7ae5599b1227c081a4b3238389010e760658 test/results/test07-aarch64-binary +d4089b614e0156cad2655247f536e775e48cb012b9db7435e452dd6f2b960d5f test/results/test07-aarch64-binary 58af02adcf5a1bfa21dae4992ed3fe0a1f708c67bb5bf1f842a51b3b8eeddf05 test/results/test07-amd64-binary 5ce09fce0c670056284cf18586151060dc56e2b3b87c816939b66d351e70ccf6 test/results/test07-armv7l-binary 525ba92027d697564cd7d7611aa32c33486e55e2e60ecf19d700bf2884571975 test/results/test07-knight-native-binary 9159c4ba8196b24ec78bc9ebfbc7066d510ddbf03461736e7795a48634134dc5 test/results/test07-knight-posix-binary a9a3e332d13ded5f80d7431f8717f26527b3722b33ea57760a9a5723dffc099c test/results/test07-x86-binary -0aaf0645c367876a711aa33266939f20fd03bc8c4fbf75d008c0e0709fa6a146 test/results/test08-aarch64-binary +095af0ebc63ff3843aa27d4eef40fff29a675e36bb3c6e00a1e24af2ae6c2a32 test/results/test08-aarch64-binary 3a9a7815ad19bbdd9ea6921ecae8521089df27ac08bc207df11a2a0080f5acbb test/results/test08-amd64-binary 28b9834ef90a721c6cba5ca818547d607d0e1a63c60ddd684b6aff885cd21fc2 test/results/test08-armv7l-binary 16c6a5a8f3723fd464d8bded94ceaeef96e95a83e38caa380bd2d5cc375415c4 test/results/test08-knight-native-binary b824859fd0e39f1417742a1b9a1cec18ade78afdd80ce2c64cb54cdf7683f53a test/results/test08-knight-posix-binary 3a099298d2235ad00518bb6e2f2f9e25d429c4fe576dfc9cf083e3e0053bdcc2 test/results/test08-x86-binary -d4094a55cba28c257f13e2405606dce7294a4cd161a5ab9b4d21253074d85c0a test/results/test09-aarch64-binary +915f2b6bb8a0f9cc78d1108b856072aaed1804d05f0ff1e00191673ff0ea2398 test/results/test09-aarch64-binary b1251d03f35474f9c5cec84d067d97295a47ae34dbd9f12e72a3630127cc1e07 test/results/test09-amd64-binary 4fd3351f92149ccfb103a2d09a28a90939fb828d56f14c1b39fa4507c32a8f1a test/results/test09-armv7l-binary e046d0be9ebb80c6053682f37af5ed18fece5afb089f67ecf98556700d7e85f0 test/results/test09-knight-native-binary 990e82bccca98e6393f72b659abc2eb6069f272202286ce2ca51e9d8a941f3cd test/results/test09-knight-posix-binary 9e4a0a6216bb4fde5dcefac91fd7c623e9e00b3e762946e5a47a1b50b4656103 test/results/test09-x86-binary -3d710d53b95d0f090ee0ef2ed55d51a91601cdc0547299527fe16863adabbd8c test/results/test10-aarch64-binary +280ab596580b8e1c771e690b9864a5a693c8bcf89f831de6d0897ca982e5ea6e test/results/test10-aarch64-binary a9cf4422e05075395ad75bbfe4b2659aec4541edd46d8c6b5064d3496b06a0b6 test/results/test10-amd64-binary a0ae067746e7a2b01d33950da1cf640e12c3a70a045ab331ea2025af59dec9af test/results/test10-armv7l-binary e01b615db5df31392bd1054c45141dcff936b11dfb1cad270edc0aa67653f5a1 test/results/test10-knight-native-binary c1b5a2a3cd46c5e95e5540e871c2a916e028684ca80f51c001ef489342e27625 test/results/test10-knight-posix-binary b3e13d54aab689137628fb9c4487bfd8288f9bd18bef8fe756577c8d2dce1f1f test/results/test10-x86-binary -3d13476cf2047280bedc98670b920c0c2a8fe1f429968ef48738e9b16f0fe161 test/results/test100-aarch64-binary -1ebb54cdb12212a9753822e04d45f2a51f7852a44fb27d54b3b1f2c762c11e63 test/results/test100-amd64-binary -9c3457a8702a9b56a1afa658aaaac68c808d8d17439fac4aaea3714d0c657562 test/results/test100-armv7l-binary -837642751f284dc694dbb9386ef781f656b6c0c2df0579d223eda09b7514836b test/results/test100-knight-posix-binary -3087ce4ef019b9f5475e4ee33d31b0013621296038c0c357f0238621a740b95d test/results/test100-x86-binary -d5ac894e7131976d45952e2d2b1792be2a0b1091fa1930fa8a3ba87248debc78 test/results/test11-aarch64-binary +0e91b69e168d74f2c8378aed9d776a0d8d44cc865b70588b87e4b8591522d303 test/results/test100-aarch64-binary +0b609603bd48afa670b5997a295aa12c2d545c44b902322ce1e92a908963c5f3 test/results/test100-amd64-binary +c5e746e26de28c734d06406e50ac362fed3b34adba260b91ca857db1a071a9e9 test/results/test100-armv7l-binary +aa0fade4804235b9279831a32542f38846928548e710cb7e5990925ccd5d92e2 test/results/test100-knight-posix-binary +71876f59e0bd01d29b70ff6f81ecb9c4d27ff457230cf04c5c19da8d8ec25678 test/results/test100-x86-binary +d0034c3d48652bf52dc716ba81088132794c3085df3d42bffc9dce30943d4a8c test/results/test11-aarch64-binary 34e6d535e30ef8826a4ad1a4d08b76cfa370c54595599ad3be784b64c9cd8ec5 test/results/test11-amd64-binary 893695e6f300a0fe055fad935a56abd549bba70d1d39c535a680f41bbb73f117 test/results/test11-armv7l-binary 7115c4a552eb4b2c1a868ac3dca43be7d040c8e89b7b66851d0522d298429af9 test/results/test11-knight-native-binary 63fd5fbf389d1b19031026df193ec55e98d923b8568007125b80bc246c094496 test/results/test11-knight-posix-binary 3fd11bad4a426ce1ff8fd9c6d7d2b943effae9f3f5740b7376e426e9b0555851 test/results/test11-x86-binary -d592bac6cb95d66475c01d619b57860a74d8904b121fa4da9b260f2edebf3384 test/results/test12-aarch64-binary +de41ca6df213581126ef624177d768c23dbc6eca77140d44c09a5e043ca1d407 test/results/test12-aarch64-binary dc88f6de5ae892774760843079eab57306bf0f6f683d4999bdec0d43e4e762b2 test/results/test12-amd64-binary 08b9c0110bd2fa0a6653b3064ad194e7dc2f333f57068845a0abab7f5a13499f test/results/test12-armv7l-binary 61d043a6b25c34d470b01e8b8458427c32350574ba9f69eeed01ad1cde444167 test/results/test12-knight-native-binary 313536f9209d29d4c3b40f6ada898f81c1fb3b650ca1a84754f90b1db3b9e001 test/results/test12-knight-posix-binary f98ab8e4bb35580e0dde96126d7a56aff66bda208d02c8d89390b40d6cff591c test/results/test12-x86-binary -8e00bb23decba7848202bde3e0362a08ea6515b5ec717a531f5eb12d2403761d test/results/test13-aarch64-binary +656109a17d7a76e7cd21fbdc4550ed23db5f04056f923ad5792d59a3a433b900 test/results/test13-aarch64-binary 5095e23b0d6680de3e28c1898b66c352761522f42313acb96f6f39bf0707f4bb test/results/test13-amd64-binary b72e3ad2a245af1ea94de50faec05d56dfe031e75dff4cdde75e1c92c3d617a6 test/results/test13-armv7l-binary 291900015203744afc992273d19517e5c1aa9babca7d6d04a2f31b502b163414 test/results/test13-knight-native-binary e50c97ba330823cb5cbe938bb9d1575340b083e60fc42db8edefcfd95851daa2 test/results/test13-knight-posix-binary 5051ffca2615144419f8ec1a5d4999486ae81e7781428f59e47e866af97cef92 test/results/test13-x86-binary -ca8c0ec6cdab8cda58e1d5c01a7f8335d47147d90ef6b4a221997925a9334108 test/results/test14-aarch64-binary +bc2465bbde70111a66ea62a4a305820e42fbe54805cc208f63272193a232bf6c test/results/test14-aarch64-binary bcc5f70b76fd7ff1a8ccbc1d13e41044b3a6f2b7158194fc0a669b0ba07d0969 test/results/test14-amd64-binary 2df8a834bfabc03f04214bc330870c075367f32dd40a31e9028927dafac1f091 test/results/test14-armv7l-binary 38c83f8d176c3cd70fcb82658b7376487402f550b2e32181dfcd5b942ae949a0 test/results/test14-knight-posix-binary a8218958b628066e2fda63d3933f1bf607c358d7bdfe84fc02596393698ea5f6 test/results/test14-x86-binary -1780e5ca32bc70bf568499571db219f16f1488e9dfeacdb48b998a15d2c520d0 test/results/test15-aarch64-binary +7e6d98d8f27d65462c5bcb4ef8734e36eebf41205b86eede3c849c9f95eefa64 test/results/test15-aarch64-binary 0526b33e314a881746bb108d0ec68a3f11b96d1b92b287816235f825210bff2a test/results/test15-amd64-binary 58d7d1ac0470fbbb7681cea0f377c22d54a9453dcc86d68e2f93fdb7e4f960cf test/results/test15-armv7l-binary 9f7c81e278248a3160d80a3f5ca0c39a5505ca9b45adc002e9b527db3e5f084a test/results/test15-knight-posix-binary f24c62fb54b9ab510ce1b3a36d119e3b5d2ed56e33564c83782d828eac6a6773 test/results/test15-x86-binary -5fbde5127c635f381f493ff232fd66e73b89f1221f51337f72eede1072e18ad5 test/results/test16-aarch64-binary +8fc4e2e70b61a662deb716fcde3b12a1293ffd3a8216bcd47c3fbc0b708f0e5d test/results/test16-aarch64-binary d8dbd22939091d04ccc969d848b4e4e2a6b5c9a8c91779923830fd6aa1a0f779 test/results/test16-amd64-binary cc0213dd7b1c368c1245c30a5c7fb520f8e1beded3acf136c48f2a015f29df0b test/results/test16-armv7l-binary 84f5472ce5711b9cad28fcd4c177eea673047c2561ea010ccb6bf5f50d89c713 test/results/test16-knight-posix-binary aeb94a4142633f20d7be4f8e74f0d5edc9050afb76f49cb504a1c264bf1ef96b test/results/test16-x86-binary -486b98f898acad34abfa2a1db34a855eed21fc926bb1d8eec8e6e1fb9b36ef1f test/results/test17-aarch64-binary +c2117c61b6713075f2b663135dd35a7de1420986ee9ee3b543ab93c8995c9e2d test/results/test17-aarch64-binary 826be2799b14be83652ee28ae18e45728987205346eaba5fbffd4c6894dbec33 test/results/test17-amd64-binary 1e630c50633011aa2e78f05be2bf71f90e288117008d53b7c673255e74c4cac2 test/results/test17-armv7l-binary 47e3fe786d27493a94c1f8aac0394e7726f85268cf0d7cfa02295f0d1629cb4a test/results/test17-knight-native-binary cf67b71d4010910ccf2264c52d7253b092afa88be14890f36927fe595d71cf7f test/results/test17-knight-posix-binary a29899250b4ee3c722045a8feedaec2e0f537b9a148f23d10d1979e135f14038 test/results/test17-x86-binary -7c0eb777792e68f33e1197d0decd031147d5aa8bcabcbff76d592271957a02f2 test/results/test18-aarch64-binary +c6bc8111e9a0c8e2acccacc9a63dd40c6da752fe49c0cb3258af5525b3edc88b test/results/test18-aarch64-binary b5835e920eef10e0e0772d51354f1a7d5c34534f7ec287570283a5e8d5c201f3 test/results/test18-amd64-binary b2b679f715351406abefa43531d9374b118d77abdb1c5edd38f65a7b586461f4 test/results/test18-armv7l-binary aee694dc1e2e98d69e21f6f4f95120989e8b928379f3b290fee60fd5e32882ef test/results/test18-knight-native-binary d69b92c0fa774dfcdbfdf836d753caed64f99f7a3d9b73187c3e2aea53b30085 test/results/test18-knight-posix-binary b70966d2d772c95c3a555dac582137a7a7dfdc97fc9edaced5107313233dd7f8 test/results/test18-x86-binary -6ca3d94cbbe4ed3ee4d534562c9b7a1d110e8d9fd723b819a35cce07291c089f test/results/test19-aarch64-binary +ab1a16fba5a5df8bd70339c6f78d9c18028bd1f98e9a462c41c5a456eb811dc1 test/results/test19-aarch64-binary b29dadde5f218707a5c574b0097e1d84091baae0df28d79645b517d7bc4dffda test/results/test19-amd64-binary 1d579a8ada5d3a2b3bc17dd9a4e5f0d65bd5e7fc173df47548afc8e09fbc30ce test/results/test19-armv7l-binary 364ed9dcff06fe54ea4d96c6b3b99a9456fd4dd95ea726f98fdf7cfb8eb3825b test/results/test19-knight-posix-binary 8b28cb3303fa119378294acb2592fe4eec2ac5346932596e3f8570dc50af6cf9 test/results/test19-x86-binary -c05fc115f549a77d1b6d846d1c6021b81ae6d12e3b55d7a3747e3c1ee2996b25 test/results/test20-aarch64-binary +e759aeb73d575fc23e7b71684be8547e6fbd93a2db42e4cf6c987215793e3dbc test/results/test20-aarch64-binary 15950e38bab2603bfcb369b9a4941abfc2e37b7cbbd2cf9b22ebfc9aab46d5ad test/results/test20-amd64-binary 80612ce05a2e43fceb34139577be98794505cd324ff5bc84ba004a21828b5f86 test/results/test20-armv7l-binary d9d40f64041a02b6a403fd3c07550cf53f9383e0ec7f7208c9c263d06ea3ce8f test/results/test20-knight-native-binary 6a59795dbb4397d0efaf1ad613d646ec435eec62db30eb758bcf2499d651520e test/results/test20-knight-posix-binary 0d1a43723d0482a21028164e33ff116d66302d6042a88eacf08436a351494530 test/results/test20-x86-binary -9ce139e36baf0ee64a55bf69a7140db547fb20f9a5a7372bbe7cc17ddad04979 test/results/test21-aarch64-binary +8e88e82b6955239bada4aaea4cc16ccc45a0ae70b0faddbb0b020c196751d6d6 test/results/test21-aarch64-binary 0fab8f708839019a8dcda693acf0542c585b00b464a700cdcb64dd0cdfb0b6a0 test/results/test21-amd64-binary 644b5a7f6f40828cebbca5e6537ce1aaaf9fa4f1451671a40e1cfd4516a30a2d test/results/test21-armv7l-binary 80d49242c8eec979b576c3455a57d46efa75014cf607fc777b59dc1943259a6e test/results/test21-knight-posix-binary 1fa52023ea0f9e18bc6fab2a62fc8383ff1a9d97a6f0e3da9698268bf7565b99 test/results/test21-x86-binary -afb0d2c45ca8190ece1df2b98ccc1abc2ee204f593c716cb684f20d6b4c709d9 test/results/test22-aarch64-binary +a5bbd78dfb6325ce1f89d0cdfc7fb5f7feb51682af6fccaa0df0f61d3bcfea14 test/results/test22-aarch64-binary 8b3fc360938fe30c6b1a8c1fd368cd990761c35d8d0a3b5499cdca23127f36cf test/results/test22-amd64-binary ef1c7437223311d13429b43f59aafe5b9cd3c01939b59a935aa1dd55f417ebcf test/results/test22-armv7l-binary 387ae179f593ad27a1ae96f9f20b7cf69bf201a74d2a69fc9b60faeeec9fa811 test/results/test22-knight-posix-binary 46f4645cf23a415fe96f73826595a2dc29661fd2365978f387c256e0469bf51c test/results/test22-x86-binary -d93dd366f0bbff6740e89b2d82a8a6d894ecffbea31f698231355e68bb999161 test/results/test23-aarch64-binary +758092d7ad9d18fc72cc4291c786f0fffd42f18e0987f6d5cdb18ff1506d8dac test/results/test23-aarch64-binary 13a8033841a8805b13621e305755d0885154615fe1d126a3db4969854cfb8b40 test/results/test23-amd64-binary 9ef467b01c5af7f5c966671c5249ff8cb88f62e6c48fcd824254e0616d8d915c test/results/test23-armv7l-binary 897a5bc96a007a6eaf4337b630fb05d576fd42d35682c96a1f3c319f85f2b1ba test/results/test23-knight-posix-binary f53e041af9ec8bc34f6b7accedafe0c3bc40e09edfee3ad18144e7bb04e274e6 test/results/test23-x86-binary -2a6d910a08d150ae6ef985716389c02b25fa41526002ff8e235bc72e71bc4f2b test/results/test24-aarch64-binary +e0fdfb0ca2fe269514e3d8e2f8eb35c35430d4231674fea9d42a3cfa613c3af1 test/results/test24-aarch64-binary ed1eb588d8b14a370729d1426f8c1b1cc9cbfeaffe80012558ab74dadd82fbf8 test/results/test24-amd64-binary 91f8415a8358a26aa99706d990a35761cd5e4f313a32ef45ab5bc49a47435249 test/results/test24-armv7l-binary 44b37b8d45d8c0a6e983168e5646ef652deab2fcd327cb255bc2a71289f471ff test/results/test24-knight-posix-binary 29216c9761435396912cb03a414ac74cde165a522cf19a7cccac212b06d3a597 test/results/test24-x86-binary -4daca656e721fbc7f0ce040b9ed7c86f6183122ed6ae8b83f2c359a43cdf6196 test/results/test25-aarch64-binary +69a48cdae667be5324ceca8548b8de065ddc09cad3d294e3f81131646da3754e test/results/test25-aarch64-binary 0506117d8b028c1e5e23ecd0493116278e94ec32a55ff314dee1a2f4e2b243a5 test/results/test25-amd64-binary 8af23bb361cce0d7031d78a3f1f88a51d6786df4cc2f5dc0bf09ff67947d30ea test/results/test25-armv7l-binary e1fca774a067de5edb7eb1165619573993d2a5e5647c05568a68f3a53a7990cd test/results/test25-x86-binary -19316443ba9fd25fa7079902aa4fc6261628cc0600f2b94dbf436e3848102370 test/results/test26-aarch64-binary +eb24eb355bde5356672db4358a6aa37fdfeff0ddf9da5a676ee8aab00423ce56 test/results/test26-aarch64-binary 60206125928d77a758cd73ec8e85f8592423ce678570ebbe7876b71dc38aaeaf test/results/test26-amd64-binary 649349e01a90ce93ba72ba1b9bb81a9bd9d79b580ddff366173c98835c10b976 test/results/test26-armv7l-binary 576511f1f6699e7798bcab2f36bf8eb86825fd13748770b17f46c3a691200b01 test/results/test26-x86-binary -cc06a78803cd458d5c76561410fe019ec24bf115475d3a7401685a2fba4240b6 test/results/test27-aarch64-binary +bfc228f7cb9356f861ab094446bd597cd1e33c9d34069b5e325300bc61a49560 test/results/test27-aarch64-binary e265ee574e7277f81dbecde7d0941f18704379898299c47b24e55cd6ca1b362a test/results/test27-amd64-binary 4d7a84b6f861807c629bf26bba759ce45c5f3f093b28bcd050dd93f449e2bf47 test/results/test27-armv7l-binary d83e0aae5b335f34a528bbb6c213bbef9d993abae335e0f909183bc6debfd37b test/results/test27-knight-posix-binary 9d0ea091b1ac5fa5a9882ce93c816f2047a6751dc6edb7fef808a545ce3261f2 test/results/test27-x86-binary -fd72ce6ebbf8263ef9fdff9ca7d789a55ba399ab222c2f5f93b138c61830376d test/results/test99-aarch64-binary +c287f7c662cd29bdeb7258300de83c6b0895e002a18c9f46dac31ecd5476b69c test/results/test99-aarch64-binary 717c42e1a1a91ef5b67ce298bc92a148418a5dec6761a358a52b22a01f16c928 test/results/test99-amd64-binary 4e759b212b087824f7b0f14c5147272c9984c4a4d00074b2fd771c3d004c9aec test/results/test99-armv7l-binary 45116095f72aa1a4bf09aeff9f9ddc11e0c7ca3b0c380be930ad8db762088770 test/results/test99-knight-native-binary diff --git a/test/test100/proof.answer b/test/test100/proof.answer index e721dba..1fd3a57 100644 --- a/test/test100/proof.answer +++ b/test/test100/proof.answer @@ -1 +1 @@ -788e2532f144dade67485f4fa167142f202158c62b0b1fe8d50ddb2a5224156a test/test100/proof +8db43aa7c23a6c479c21695d572ce6a20510669d69ba5a9a20557eb6e2e8d161 test/test100/proof