Improve handling of compound assignment operators.

Previously, compound assignment operators were replaced in preprocessor.
This only worked for simple cases where we only had 1-token variable.

This commit switches to proper implementation in the parser.
This commit is contained in:
Andrius Štikonas 2021-11-14 00:52:10 +00:00
parent 511601bcd9
commit 185ef7a7c2
10 changed files with 480 additions and 109 deletions

2
M2libc

@ -1 +1 @@
Subproject commit ff549d1424ad0061a177b3826497ce71d415c005
Subproject commit 818fcfb333d73fbe0293b97b769718f0945e22dc

2
cc.c
View File

@ -237,8 +237,6 @@ int main(int argc, char** argv)
preprocess();
}
global_token = process_assignment_operators(global_token);
if (PREPROCESSOR_MODE)
{
fputs("\n/* Preprocessed source */\n", destination_file);

306
cc_core.c
View File

@ -410,6 +410,21 @@ void emit_dereference(int load_byte) {
}
}
int is_compound_assignment(char* token)
{
if(match("+=", token)) return TRUE;
else if(match("-=", token)) return TRUE;
else if(match("*=", token)) return TRUE;
else if(match("/=", token)) return TRUE;
else if(match("%=", token)) return TRUE;
else if(match("<<=", token)) return TRUE;
else if(match(">>=", token)) return TRUE;
else if(match("&=", token)) return TRUE;
else if(match("^=", token)) return TRUE;
else if(match("|=", token)) return TRUE;
return FALSE;
}
void variable_load(struct token_list* a, int num_dereference)
{
require(NULL != global_token, "incomplete variable load received\n");
@ -434,7 +449,7 @@ void variable_load(struct token_list* a, int num_dereference)
emit_out("\n");
if(TRUE == Address_of) return;
if(!match("=", global_token->s))
if(!match("=", global_token->s) && !is_compound_assignment(global_token->s))
{
emit_dereference(FALSE);
}
@ -499,7 +514,7 @@ void global_load(struct token_list* a)
require(NULL != global_token, "unterminated global load\n");
if(TRUE == Address_of) return;
if(match("=", global_token->s)) return;
if(match("=", global_token->s) || is_compound_assignment(global_token->s)) return;
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) emit_out("LOAD R0 R0 0\n");
else if(X86 == Architecture) emit_out("LOAD_INTEGER\n");
@ -926,7 +941,7 @@ void postfix_expr_arrow()
}
}
if((!match("=", global_token->s) && (register_size >= i->size)))
if((!match("=", global_token->s) && !is_compound_assignment(global_token->s) && (register_size >= i->size)))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) emit_out("LOAD R0 R0 0\n");
else if(X86 == Architecture) emit_out("LOAD_INTEGER\n");
@ -988,7 +1003,7 @@ void postfix_expr_array()
require_match("ERROR in postfix_expr\nMissing ]\n", "]");
require(NULL != global_token, "truncated array expression\n");
if(match("=", global_token->s))
if(match("=", global_token->s) || is_compound_assignment(global_token->s))
{
assign = "";
}
@ -1353,6 +1368,213 @@ void primary_expr()
else primary_expr_failure();
}
char* compound_operation(char* operator, int is_signed)
{
char* operation = "";
if(match("+=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "ADD R0 R1 R0\n";
else operation = "ADDU R0 R1 R0\n";
}
else if(X86 == Architecture) operation = "ADD_ebx_to_eax\n";
else if(AMD64 == Architecture) operation = "ADD_rbx_to_rax\n";
else if(ARMV7L == Architecture) operation = "'0' R0 R0 ADD R1 ARITH2_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "ADD_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 ADD\n";
}
else if(match("-=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "SUB R0 R1 R0\n";
else operation = "SUBU R0 R1 R0\n";
}
else if(X86 == Architecture) operation = "SUBTRACT_eax_from_ebx_into_ebx\nMOVE_ebx_to_eax\n";
else if(AMD64 == Architecture) operation = "SUBTRACT_rax_from_rbx_into_rbx\nMOVE_rbx_to_rax\n";
else if(ARMV7L == Architecture) operation = "'0' R0 R0 SUB R1 ARITH2_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "SUB_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 SUB\n";
}
else if(match("*=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "MUL R0 R1 R0\n";
else operation = "MULU R0 R1 R0\n";
}
else if(X86 == Architecture)
{
if(is_signed) operation = "MULTIPLYS_eax_by_ebx_into_eax\n";
else operation = "MULTIPLY_eax_by_ebx_into_eax\n";
}
else if(AMD64 == Architecture)
{
if(is_signed) operation = "MULTIPLYS_rax_by_rbx_into_rax\n";
else operation = "MULTIPLY_rax_by_rbx_into_rax\n";
}
else if(ARMV7L == Architecture) operation = "'9' R0 '0' R1 MULS R0 ARITH2_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "MUL_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 MUL\n";
}
else if(match("/=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "DIV R0 R1 R0\n";
else operation = "DIVU R0 R1 R0\n";
}
else if(X86 == Architecture)
{
if (is_signed) operation = "XCHG_eax_ebx\nCDTQ\nDIVIDES_eax_by_ebx_into_eax\n";
else operation = "XCHG_eax_ebx\nLOAD_IMMEDIATE_edx %0\nDIVIDE_eax_by_ebx_into_eax\n";
}
else if(AMD64 == Architecture)
{
if(is_signed) operation = "XCHG_rax_rbx\nCQTO\nDIVIDES_rax_by_rbx_into_rax\n";
else operation = "XCHG_rax_rbx\nLOAD_IMMEDIATE_rdx %0\nDIVIDE_rax_by_rbx_into_rax\n";
}
else if(ARMV7L == Architecture)
{
if(is_signed) operation = "{LR} PUSH_ALWAYS\n^~divides CALL_ALWAYS\n{LR} POP_ALWAYS\n";
else operation = "{LR} PUSH_ALWAYS\n^~divide CALL_ALWAYS\n{LR} POP_ALWAYS\n";
}
else if(AARCH64 == Architecture)
{
if(is_signed) operation = "SDIV_X0_X1_X0\n";
else operation = "UDIV_X0_X1_X0\n";
}
else if(RISCV64 == Architecture)
{
if(is_signed) operation = "RD_A0 RS1_A1 RS2_A0 DIV\n";
else operation = "RD_A0 RS1_A1 RS2_A0 DIVU\n";
}
}
else if(match("%=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "MOD R0 R1 R0\n";
else operation = "MODU R0 R1 R0\n";
}
else if(X86 == Architecture)
{
if(is_signed) operation = "XCHG_eax_ebx\nCDTQ\nMODULUSS_eax_from_ebx_into_ebx\nMOVE_edx_to_eax\n";
else operation = "XCHG_eax_ebx\nLOAD_IMMEDIATE_edx %0\nMODULUS_eax_from_ebx_into_ebx\nMOVE_edx_to_eax\n";
}
else if(AMD64 == Architecture)
{
if(is_signed) operation = "XCHG_rax_rbx\nCQTO\nMODULUSS_rax_from_rbx_into_rbx\nMOVE_rdx_to_rax\n";
else operation = "XCHG_rax_rbx\nLOAD_IMMEDIATE_rdx %0\nMODULUS_rax_from_rbx_into_rbx\nMOVE_rdx_to_rax\n";
}
else if(ARMV7L == Architecture)
{
if(is_signed) operation = "{LR} PUSH_ALWAYS\n^~moduluss CALL_ALWAYS\n{LR} POP_ALWAYS\n";
else operation = "{LR} PUSH_ALWAYS\n^~modulus CALL_ALWAYS\n{LR} POP_ALWAYS\n";
}
else if(AARCH64 == Architecture)
{
if(is_signed) operation = "SDIV_X2_X1_X0\nMSUB_X0_X0_X2_X1\n";
else operation = "UDIV_X2_X1_X0\nMSUB_X0_X0_X2_X1\n";
}
else if(RISCV64 == Architecture)
{
if(is_signed) operation = "RD_A0 RS1_A1 RS2_A0 REM\n";
else operation = "RD_A0 RS1_A1 RS2_A0 REMU\n";
}
}
else if(match("<<=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "SAL R0 R1 R0\n";
else operation = "SL0 R0 R1 R0\n";
}
else if(X86 == Architecture)
{
if(is_signed) operation = "COPY_eax_to_ecx\nCOPY_ebx_to_eax\nSAL_eax_cl\n";
else operation = "COPY_eax_to_ecx\nCOPY_ebx_to_eax\nSHL_eax_cl\n";
}
else if(AMD64 == Architecture)
{
if(is_signed) operation = "COPY_rax_to_rcx\nCOPY_rbx_to_rax\nSAL_rax_cl\n";
else operation = "COPY_rax_to_rcx\nCOPY_rbx_to_rax\nSHL_rax_cl\n";
}
else if(ARMV7L == Architecture) operation = "LEFT R1 R0 R0 SHIFT AUX_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "LSHIFT_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 SLL\n";
}
else if(match(">>=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture))
{
if(is_signed) operation = "SAR R0 R1 R0\n";
else operation = "SR0 R0 R1 R0\n";
}
else if(X86 == Architecture)
{
if(is_signed) operation = "COPY_eax_to_ecx\nCOPY_ebx_to_eax\nSAR_eax_cl\n";
else operation = "COPY_eax_to_ecx\nCOPY_ebx_to_eax\nSHR_eax_cl\n";
}
else if(AMD64 == Architecture)
{
if(is_signed) operation = "COPY_rax_to_rcx\nCOPY_rbx_to_rax\nSAR_rax_cl\n";
else operation = "COPY_rax_to_rcx\nCOPY_rbx_to_rax\nSHR_rax_cl\n";
}
else if(ARMV7L == Architecture)
{
if(is_signed) operation = "ARITH_RIGHT R1 R0 R0 SHIFT AUX_ALWAYS\n";
else operation = "RIGHT R1 R0 R0 SHIFT AUX_ALWAYS\n";
}
else if(AARCH64 == Architecture)
{
if(is_signed) operation = "ARITH_RSHIFT_X0_X1_X0\n";
else operation = "LOGICAL_RSHIFT_X0_X1_X0\n";
}
else if(RISCV64 == Architecture)
{
if(is_signed) operation = "RD_A0 RS1_A1 RS2_A0 SRA\n";
else operation = "RD_A0 RS1_A1 RS2_A0 SRL\n";
}
}
else if(match("&=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) operation = "AND R0 R0 R1\n";
else if(X86 == Architecture) operation = "AND_eax_ebx\n";
else if(AMD64 == Architecture) operation = "AND_rax_rbx\n";
else if(ARMV7L == Architecture) operation = "NO_SHIFT R0 R0 AND R1 ARITH2_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "AND_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 AND\n";
}
else if(match("^=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) operation = "XOR R0 R0 R1\n";
else if(X86 == Architecture) operation = "XOR_ebx_eax_into_eax\n";
else if(AMD64 == Architecture) operation = "XOR_rbx_rax_into_rax\n";
else if(ARMV7L == Architecture) operation = "'0' R0 R0 XOR R1 ARITH2_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "XOR_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 XOR\n";
}
else if(match("|=", operator))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) operation = "OR R0 R0 R1\n";
else if(X86 == Architecture) operation = "OR_eax_ebx\n";
else if(AMD64 == Architecture) operation = "OR_rax_rbx\n";
else if(ARMV7L == Architecture) operation = "NO_SHIFT R0 R0 OR R1 AUX_ALWAYS\n";
else if(AARCH64 == Architecture) operation = "OR_X0_X1_X0\n";
else if(RISCV64 == Architecture) operation = "RD_A0 RS1_A1 RS2_A0 OR\n";
}
else
{
fputs("Found illegal compound assignment operator: ", stderr);
fputs(operator, stderr);
fputc('\n', stderr);
exit(EXIT_FAILURE);
}
return operation;
}
void expression()
{
bitwise_expr();
@ -1382,6 +1604,80 @@ void expression()
emit_out(store);
current_target = integer;
}
else if(is_compound_assignment(global_token->s))
{
maybe_bootstrap_error("compound operator");
char* push = "";
char* load = "";
char* operation = "";
char* pop = "";
char* store = "";
struct type* last_type = current_target;
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) push = "PUSHR R1 R15\n";
else if(X86 == Architecture) push = "PUSH_ebx\n";
else if(AMD64 == Architecture) push = "PUSH_RBX\n";
else if(ARMV7L == Architecture) push = "{R1} PUSH_ALWAYS\n";
else if(AARCH64 == Architecture) push = "PUSH_X1\n";
else if(RISCV64 == Architecture) push = "RS1_SP RS2_A1 @-8 SD\n";
if(!match("]", global_token->prev->s) || !match("char*", current_target->name))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) load = "LOAD R1 R1 0\n";
else if(X86 == Architecture) load = "LOAD_INTEGER_ebx\n";
else if(AMD64 == Architecture) load = "LOAD_INTEGER_rbx\n";
else if(ARMV7L == Architecture) load = "!0 R1 LOAD32 R1 MEMORY\n";
else if(AARCH64 == Architecture) load = "DEREF_X1\n";
else if(RISCV64 == Architecture) load = "RD_A1 RS1_A1 LD\n";
}
else
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) load = "LOAD8 R1 R1 0\n";
else if(X86 == Architecture) load = "LOAD_BYTE_ebx\n";
else if(AMD64 == Architecture) load = "LOAD_BYTE_rbx\n";
else if(ARMV7L == Architecture) load = "!0 R1 LOAD8 R1 MEMORY\n";
else if(AARCH64 == Architecture) load = "DEREF_X1_BYTE\n";
else if(RISCV64 == Architecture) load = "RD_A1 RS1_A1 LBU\n";
}
char *operator = global_token->s;
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) pop = "POPR R1 R15\n";
else if(X86 == Architecture) pop = "POP_ebx\n";
else if(AMD64 == Architecture) pop = "POP_RBX\n";
else if(ARMV7L == Architecture) pop = "{R1} POP_ALWAYS\n";
else if(AARCH64 == Architecture) pop = "POP_X1\n";
else if(RISCV64 == Architecture) pop = "RD_A1 RS1_SP !-8 LD\n";
if(!match("]", global_token->prev->s) || !match("char*", current_target->name))
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) store = "STORE R0 R1 0\n";
else if(X86 == Architecture) store = "STORE_INTEGER\n";
else if(AMD64 == Architecture) store = "STORE_INTEGER\n";
else if(ARMV7L == Architecture) store = "!0 R0 STORE32 R1 MEMORY\n";
else if(AARCH64 == Architecture) store = "STR_X0_[X1]\n";
else if(RISCV64 == Architecture) store = "RS1_A1 RS2_A0 SD\n";
}
else
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) store = "STORE8 R0 R1 0\n";
else if(X86 == Architecture) store = "STORE_CHAR\n";
else if(AMD64 == Architecture) store = "STORE_CHAR\n";
else if(ARMV7L == Architecture) store = "!0 R0 STORE8 R1 MEMORY\n";
else if(AARCH64 == Architecture) store = "STR_BYTE_W0_[X1]\n";
else if(RISCV64 == Architecture) store = "RS1_A1 RS2_A0 SB\n";
}
common_recursion(expression);
current_target = promote_type(current_target, last_type);
emit_out(push);
emit_out(load);
operation = compound_operation(operator, current_target->is_signed);
emit_out(operation);
emit_out(pop);
emit_out(store);
current_target = integer;
}
}
@ -2284,7 +2580,7 @@ new_type:
}
/* Deal with assignment to a global variable */
if(match("=",global_token->s))
if(match("=", global_token->s))
{
global_assignment();
goto new_type;

View File

@ -122,21 +122,6 @@ struct token_list* eat_token(struct token_list* token)
return token->next;
}
struct token_list* insert_token(struct token_list* token, char* new_token)
{
struct token_list* current = calloc(1, sizeof(struct token_list));
require(NULL != current, "Exhausted memory while getting token\n");
current->s = new_token;
current->prev = token;
current->next = token->next;
current->filename = file;
current->linenumber = line;
token->next->prev = current;
token->next = current;
return current;
}
struct token_list* eat_until_newline(struct token_list* head)
{
while (NULL != head)
@ -372,42 +357,3 @@ struct token_list* read_all_tokens(FILE* a, struct token_list* current, char* fi
return token;
}
struct token_list* replace_assignment(struct token_list* head, char* c)
{
line = head->linenumber;
file = head->filename;
require(NULL != head->prev, "Expecting identifier before assignment\n");
head = eat_token(head)->prev;
head = insert_token(head, "=");
head = insert_token(head, head->prev->s);
head = insert_token(head, c);
}
struct token_list* process_assignment_operators(struct token_list* head)
{
struct token_list* first = NULL;
while (NULL != head)
{
if(match("+=", head->s)) head = replace_assignment(head, "+");
else if(match("-=", head->s)) head = replace_assignment(head, "-");
else if(match("*=", head->s)) head = replace_assignment(head, "*");
else if(match("/=", head->s)) head = replace_assignment(head, "/");
else if(match("%=", head->s)) head = replace_assignment(head, "%");
else if(match("<<=", head->s)) head = replace_assignment(head, "<<");
else if(match(">>=", head->s)) head = replace_assignment(head, ">>");
else if(match("&=", head->s)) head = replace_assignment(head, "&");
else if(match("^=", head->s)) head = replace_assignment(head, "^");
else if(match("|=", head->s)) head = replace_assignment(head, "|");
else
{
if(NULL == first)
{
first = head;
}
head = head->next;
}
}
return first;
}

View File

@ -127,6 +127,7 @@ knight-posix-tests: \
test0022-knight-posix-binary \
test0023-knight-posix-binary \
test0024-knight-posix-binary \
test0028-knight-posix-binary \
test0100-knight-posix-binary \
test0101-knight-posix-binary \
test0102-knight-posix-binary \
@ -153,6 +154,7 @@ knight-native-tests: \
test0018-knight-native-binary\
test0020-knight-native-binary\
test0024-knight-native-binary\
test0028-knight-native-binary\
test0106-knight-native-binary | results
armv7l-tests: \
@ -682,6 +684,9 @@ test0023-knight-posix-binary: M2-Planet | results
test0024-knight-posix-binary: M2-Planet | results
test/test0024/hello-knight-posix.sh
test0028-knight-posix-binary: M2-Planet | results
test/test0028/hello-knight-posix.sh
test0100-knight-posix-binary: M2-Planet | results
test/test0100/hello-knight-posix.sh
@ -754,6 +759,9 @@ test0020-knight-native-binary: M2-Planet | results
test0024-knight-native-binary: M2-Planet | results
test/test0024/hello-knight-native.sh
test0028-knight-native-binary: M2-Planet | results
test/test0028/hello-knight-native.sh
test0106-knight-native-binary: M2-Planet | results
test/test0106/hello-knight-native.sh

View File

@ -6,155 +6,155 @@ b4dfdb3f7cef6571968fadd3e586a19226a546b3d470cafb8b7c556e1d2d3bfd test/results/t
734dd8ba723a9ed1655824e6158406c0164dd180335ee7f725ea07994b3d5cc7 test/results/test0000-riscv64-binary
be8111d178501a86934f10de64f815e6812c5ee31ca31eb5a0e51cdabae5ad14 test/results/test0000-x86-binary
1b0778472de89d20f9676573198128d7e5965a53c6f6c04c4944401f1fd084aa test/results/test0001-aarch64-binary
58f22593c18e8a81229c509b32d61def5b00796555391ce67deaddf503f97e91 test/results/test0001-amd64-binary
611dc9d948c3050bd2b8c62457b5ee1befed5eb3a56a3509d0371d406a3baada test/results/test0001-amd64-binary
8e576c4a78d0cd6b274f4888fbaa5eb56b1559cadd2f307da4bf08a61bf20b2e test/results/test0001-armv7l-binary
c682b92792ea1de3904cae7b766c7dc89126a4248cd74e87172b3c522e7c5d54 test/results/test0001-knight-native-binary
eb5d77883f5bfc396cd904dd65b9f74956a14a5a8caf6ea3183f580aa911d9b5 test/results/test0001-knight-posix-binary
2904641b917856f3fe8d59d9a86071dceaf9c2e68224bd7f2d4b751ac7ecccb6 test/results/test0001-riscv64-binary
70e722c285f54661ed955edf7ad6efe7a4260f0088485c63d7eefbbba16fa61a test/results/test0001-x86-binary
f8ea2874493fd5f9c32776933189931244d99a9142d356bfcc0d513af127ac27 test/results/test0002-aarch64-binary
940203f4c5f365277d6756b6213fc074a21fe15042cbec245d000033714da5bd test/results/test0002-amd64-binary
179389e4ba18ed9f8b9426e51e2cef2cca82a57a17b51ffad963dbce15bb50a7 test/results/test0002-amd64-binary
0d61d816ccde35c856fd6f4d68d069306afec14ee85536ca74dceb9b7ebc970b test/results/test0002-armv7l-binary
60d019b250de2c79cbf9e00dc16334af10cbcecb0f03707e8a941d1782b6b172 test/results/test0002-knight-native-binary
115e807e57a2bb0dfcee9e7caadc18a5757b324dfc8e10f403da67dad8aedfc5 test/results/test0002-knight-posix-binary
519bb5c50d70567562e1cf75ee2e32f21cd9ff885669e18f867aaae315835e41 test/results/test0002-riscv64-binary
b721e3d49cc3240bf1cc842b5ef7b66f3f232a66c25f2578b7015bbbbb87c882 test/results/test0002-x86-binary
6f797406596837d105689981959016aab734fe843c689c54463ae895dcda8a5a test/results/test0003-aarch64-binary
477e8e48889a1d51e4a02ac92aa2379eb4e6257898bbc39635e05851a65ff8c9 test/results/test0003-amd64-binary
e823de15f9552a091897085deb00f3f85f718d229effdf2538842f097e60214a test/results/test0003-amd64-binary
feed42b431231290f4a542728cec1ce09ca40265d25f100efb8ee1ae600a6fcd test/results/test0003-armv7l-binary
d6d358a6669de5253fb3db19b9e54d4fe787b0e921f44794e5ba8bb7138fda5a test/results/test0003-knight-native-binary
700def52f229eec7d528e6475d57a8c0b63c0f506b0c3660cdeb2fc61b82c26a test/results/test0003-knight-posix-binary
2e4d21636421fed2e4ad1e8b985fde57f4421dcb57f5144d95a780072abfb716 test/results/test0003-riscv64-binary
a56aa004f9ee964a6209286287096d611306a4c576f2d661ad4a3624af586087 test/results/test0003-x86-binary
35255ab8de43fcfe7111c140f4af6c6f4b04657469181826fbda31562205963e test/results/test0004-aarch64-binary
57005429f09e5045f92ad2805d4be4282230d48ce9cbee347f27abde7f72f85d test/results/test0004-amd64-binary
229a40529c0e60b1c43b21ee3e7d094a97a1fb16218c543e6f81af6ec2b0dc6e test/results/test0004-amd64-binary
71433b3c1b6120d71efa17123ce3e47037f0227cce045616651ca397690636f4 test/results/test0004-armv7l-binary
edb1989309249cfea055c6fc99e3eb9f9b548c17325040d1ccffe4aa068de63e test/results/test0004-knight-native-binary
ebb6eec7952a47c96b85cf99efe6938c3f76db1bf75e60414340811e6c018398 test/results/test0004-knight-posix-binary
b2cf59f78c85af48eb87459b482cb220ad3d39e22c4485b5b4186eaa44c27f5e test/results/test0004-riscv64-binary
a98456efe44683493c686d3f96ac5fbf7afca096dd202ab584e88a431016fcef test/results/test0004-x86-binary
9216135390b7e9502c27fe43571315281cc4b5313bd473788c5f1f12f23a91ad test/results/test0005-aarch64-binary
c10cefe7a3ac6b8c7f6155d6b791f2d503e91bd0cb5f6b2effb6a64b6ecb3565 test/results/test0005-amd64-binary
2849f2c70bd6722372c53adaf69e9e6f905c50091057f661f09a79164ac97dfe test/results/test0005-amd64-binary
8f7107595948a52a1bb45b28bd003772d0748eb7b95046e1ffa4bd41995d37c7 test/results/test0005-armv7l-binary
2176f2dbca7d078fb1adaafd7fd3bbe4189e3c83cac015e3d8d44ed6ea4de4df test/results/test0005-knight-native-binary
9d0f951d493ffc703468f39586f92307f950b6486eda6e5f3a962579acf87407 test/results/test0005-knight-posix-binary
f51f94e5a804721826b4c14a02831a824e0944c535c7e550bf6805c94158468a test/results/test0005-riscv64-binary
0a8298a6322575d5210b0ebb25a1fd5dbaf4e51920c8ff2b0ab901dc585fcdeb test/results/test0005-x86-binary
421ec5918d95a20d20796e34bbda2b078119932ab4bc5d174e766f2c738dca86 test/results/test0006-aarch64-binary
0d9c6b224d3bf65468b1d19b9689d96effda6d6c60d7644a844c74a235df115d test/results/test0006-amd64-binary
4f8d56cd63751edd24903a79e8b5e6d1c285178bdafc041f2ce77b6c5b5eb529 test/results/test0006-amd64-binary
b74d22ca67354fbe1e42a8778268550569667848368b73a3f6ee0645e85865f1 test/results/test0006-armv7l-binary
cc620efd904543242c6f24dc788852dec45435eb537b11f8790bd5c45ae1a606 test/results/test0006-knight-native-binary
3fefb5cc02d83eba6704e549d7b2db6adb9ebb06549b3be92954a23689ab3e5a test/results/test0006-knight-posix-binary
d6fa5200f9460dada0749992d33ca722c7c50b577de8b6596bfb545a3b232139 test/results/test0006-riscv64-binary
f35d9ea659905c13746a7ed8a8aaf3b45cceb702dd347f52c6f280bbfde8acc7 test/results/test0006-x86-binary
b60ec52f17fe67ae8fe152b83f4177bb733a806a8be3c6088aad7bbee5624cb1 test/results/test0007-aarch64-binary
08cec93d8a74e305eb1c426c22bc65e019438e16051f10938ad48e8b4b12b1ae test/results/test0007-amd64-binary
2cbcc8929962d92d9143a275dd277d652edffbbf12f210085c5068c67f606843 test/results/test0007-amd64-binary
31c4ec73e819e57fde425c9eab8561eb6eac35750fe7aae8de89ad1ac29e019c test/results/test0007-armv7l-binary
795fa53c7ba5c83c7c6ca4ae036c5bfe919847e96a7393e2755919e74cd6d06a test/results/test0007-knight-native-binary
cabedf81faac920388ae1bb7d9eadee067a582aff77860ded6e2ced8c662d7da test/results/test0007-knight-posix-binary
c6375d39a36abc2d6f2a804dc62c2c9c18f469f248367394fc410cf775dfd644 test/results/test0007-riscv64-binary
421b1cba08b1f6d016525161b69eec9b22c247c2e57cc46251cdec8955de0b72 test/results/test0007-x86-binary
c5ee99709aae9902b9f3e1c964c6f032aa1fcb6ffde22a0f70a39817f1d3e6d1 test/results/test0008-aarch64-binary
86715d23c55fd833205418120adab91dea851909a514f495795a2919cc2e51eb test/results/test0008-amd64-binary
c8057ed2b31ec2537b11f37434aad9174bcc85949c96b3308fa850db027bdfd5 test/results/test0008-amd64-binary
ee0af07393d392e4bf327dd98c256481830cdf5ebd22542c39ff0c56849d8db8 test/results/test0008-armv7l-binary
0bfda5393996b2b7fd8231eabc3bba43727f10a489bebbb56bf763223e462fd7 test/results/test0008-knight-native-binary
f5c0f8860daf86d1327c321de9647dd7acab478c500826c87fbad7af06999c27 test/results/test0008-knight-posix-binary
c1a4d1647a99cc4f34d8ab0fcc998aac6b0900a802b6dea9638cf11653276985 test/results/test0008-riscv64-binary
cdc49e5c50b72858ef3910e796ca30a6def56a87a0c51d61808d615c7d0a71a3 test/results/test0008-x86-binary
9b64d8a96e9cc8cc6d45e1a66455c12bb7aaff524b6f28534b90cc88f45daf76 test/results/test0009-aarch64-binary
df2ca3e2ecea73a1ad571b3bb20dabba4981cd37fe24b02fa4e953216405f1bb test/results/test0009-amd64-binary
9a83c3a8dea72becc29b346b825c11a9e3c1133df73c542871a0a1d69797a829 test/results/test0009-amd64-binary
b47c90ff6e3ca3f124d37b92af6c2afd98b6e59d09d9d08a1793d31e17c52911 test/results/test0009-armv7l-binary
5197b1899c54d61dcc55ee647ba399f9731c4df8abbdbf5de3e18763921e7f56 test/results/test0009-knight-native-binary
d0061811bc3406c3aa4964274bf8734d66a16200025b25ab5b8544203a264026 test/results/test0009-knight-posix-binary
079806a1bb48e3cc33151ff2076bf753e837a8f09f24fc68382c8bdd41374a13 test/results/test0009-riscv64-binary
c59d5998e625679976d69df628f4e17152cb006c3904c5398a1e4b62365dd81a test/results/test0009-x86-binary
cbbc0a92b5345ba1ec9551ffa5b8ddd406b63578ccfa36bbba6dce5897a5cabb test/results/test0010-aarch64-binary
46a94a80c25d15fb08d0ed107d05c298e4164ec39b6ab3c0ff05b248f14ad4b6 test/results/test0010-amd64-binary
3228705979f56b428f74757543267f59431228027265815559b4a3baa4d0453e test/results/test0010-amd64-binary
5cf6b1a4f65687ad7c1691a8492c6bbbd0bdfc84bab060bcedab200ae651e9a9 test/results/test0010-armv7l-binary
b69b69e26372d008a5c6696f3e4e8dd26fa97b197cf5a87a36c9daa6c3c768d4 test/results/test0010-knight-native-binary
c75c25d9003a0e5660f52324262b2b69ea8cedeeda0120304f73b84d2979cc42 test/results/test0010-knight-posix-binary
355ef99e6d7c16a8da72679fbae98cabc399d934266aeb7181c3724faf030d8e test/results/test0010-riscv64-binary
43caeff474ae1f337bcef0aa83330121a4290e8bb9d54133391b8eecdba0d84a test/results/test0010-x86-binary
84ff3cff178c655af99354166b8511c2cb754ee90d1d6fe1732cc78ebf472d31 test/results/test0011-aarch64-binary
4749482e5fa5fbc0951a2084afb46815130862f0fb044358edd6da80de41fafe test/results/test0011-amd64-binary
ee2bfc2b42553d230bfe0c1f625aeec57f02a9d4bd139da2fa7f4ad909400806 test/results/test0011-amd64-binary
be8e608616dd6873e41ae71a1961da30675bf3c8dac4112e581f32fb0f04a427 test/results/test0011-armv7l-binary
3da409ac1d5a75ca1f6f45eaa0288c99f864e509f31d78591fb8abc6b37f8c8e test/results/test0011-knight-native-binary
aeaf7dd87298d759f783ea824a66c299d5f42fb7871f8fb7bf4dfa30a4daf25e test/results/test0011-knight-posix-binary
3c8dcaa9be94c809ecba735e38ee759633e9c2e5351158b033072278ea9fdd11 test/results/test0011-riscv64-binary
e13fde65b10af5e27f06c75b463fe59352558071a48753a44c8a7f2ba62c0d52 test/results/test0011-x86-binary
aa43c22a01fc1c13ca2cb64c9badd3d0bdb0d71af43c56e6b4c44778edd447a5 test/results/test0012-aarch64-binary
20b79e8652abfba9b433f927f5071414288b9488762818cd52ebe183ffa4be0f test/results/test0012-amd64-binary
d8d8938cf152439356ee95c251b6a7881f8c8d45017c729616ab32e7269a14da test/results/test0012-amd64-binary
ef82d7851c81e4d5ce3beea75d86b937d242a22f4fcf25dbd87c8b522c518de8 test/results/test0012-armv7l-binary
3ddca171136dea8e177575620bd5dbda4b51140493114f4bdfd69f095a3d260f test/results/test0012-knight-native-binary
a20dfef10a6751ebf29b3d0e80945354239723c3e305565eea89801d4800afb7 test/results/test0012-knight-posix-binary
535c4fde7accc783e6b6de09ae2e0fc43b62646ed33c72698e7ae7b0df798179 test/results/test0012-riscv64-binary
aec61658470e1e69c912decccfa0297ee87469d88dfd400d793aeca1f4a4a136 test/results/test0012-x86-binary
4de91619ba2f8c0619ddcf5652053030d35049b42b7ea435d128adeda98329db test/results/test0013-aarch64-binary
2a8969320b7fa4da10106d51e41957e95cde02a0d185c3cfae13b2361f7d53ff test/results/test0013-amd64-binary
8d75130db8c2639b0ef84f58577697fbefc6446190f7be9a2835ed818e0e3d04 test/results/test0013-amd64-binary
f68fbe7ccf6191643133892395818889860ed0057156f667a5e3db2d5b9cfd7b test/results/test0013-armv7l-binary
2939f9403d940a4b77e8862c57c780773a9c6b2f7f1103b2a7eb5d0d6f6986b4 test/results/test0013-knight-native-binary
1a35b6013633d46dc5d148e7a204859641c2cc33f6122277e8932705c32542fb test/results/test0013-knight-posix-binary
d9ca4f4d8d1bd5b66eb1796c52270439a627601b09aa50a6386dab34544f558a test/results/test0013-riscv64-binary
e11d2b637dd542cacd6c72aae7e095c4761ab8448e8edc8c261377ad8c21f750 test/results/test0013-x86-binary
6374f3df391ed3402a1367c21ce6d30fd9425e7735191c97fe9aebe20eb02835 test/results/test0014-aarch64-binary
9152694d18d30cb3f631fe51f86760f601d2ddcefe49c1deb4075f241d4efd7a test/results/test0014-amd64-binary
740a17b57b0560827538563f0b1c1e2d01c25b8c37156399646a5a485ebe9c7a test/results/test0014-amd64-binary
d69b9da1f423c59d5e636d2204cfbca4141e3ee869a7226dd83f8fe7ac31fa3e test/results/test0014-armv7l-binary
eaad8e0ab16e2f5486de37e6309aa456ee6d8d935e43000333f27382eaeb9565 test/results/test0014-knight-posix-binary
fa1d4c3a17e8e40d1d2bebc4a938bf4962c00350b9bb1a592b67ee25e006f79e test/results/test0014-riscv64-binary
1ed6ee84de11d522a729a389dce83e2feba018c7b23fab80532cbdf540a3ef25 test/results/test0014-x86-binary
4283ac717a9efed8b596b8ce2f3b3694a8f2954f5047b773fea8815f74c45396 test/results/test0015-aarch64-binary
b74e6aae0fd0c997c64ee580676322b698e662a69d67cd36fac884249cc235c2 test/results/test0015-amd64-binary
0917a37f4fa61605abd714a498ea4f4e83abbbde084b306d4a475edfc0918490 test/results/test0015-amd64-binary
d618e068e4bd1ee4edbdbe6e250d6b681a06ea2018a947c6080d6e176448c718 test/results/test0015-armv7l-binary
323739732059cd20b14ab5857d1acf73565bf1970092e925744b53d6762d4828 test/results/test0015-knight-posix-binary
5ba424041addc15e88867c4d061738955e18b6487e6ac1b3f1617a4abe135009 test/results/test0015-riscv64-binary
cd805dd9ac1e6fd1fbfb751353cc1b99f75d25639b6eaf41461049124f207cd6 test/results/test0015-x86-binary
6e1d0e3acc803a3e7d31e6dae313c34778e040e5b5237a5785da284e0b317360 test/results/test0016-aarch64-binary
9cca4d00f4ad4aac85b8325fca355bab1e4a3e67fc4ddbfe27d9406603f585e5 test/results/test0016-amd64-binary
7f368f443bb92e7f6b17fc58058af4e8ea163db23fff73338f3acbb7e6c60d97 test/results/test0016-amd64-binary
caf232b8492628857fe67277179cd80ec43d2be89691c6aa6341cad32d8232b2 test/results/test0016-armv7l-binary
a2d03a49dbaf737a3b4bf8990415251a2564978d554d9f5656639c254faad5e3 test/results/test0016-knight-posix-binary
47c0cf47ab6dceac343febdcafc09bd330f2d72dcd83f66dcb07e50769275396 test/results/test0016-riscv64-binary
66436b77ae24b5f211254ea1b995971865bf9208a927a31380d2ab966e90706f test/results/test0016-x86-binary
191b56d29ca96f85021e1ed5b7896340fd44600b163a51fb249792651162ea88 test/results/test0017-aarch64-binary
22617a1c98c92a8fb8f447961df331d48146d20afa77a5208394d363657820fe test/results/test0017-amd64-binary
151dfc9eca0e49afcb5ccce7bf87b8ac6007a7b69cac65845d450b978964277c test/results/test0017-amd64-binary
fe667bd4166552df42cede3f7fd0c1a9de821a990c5a3baec2b3d2c71f85c6ab test/results/test0017-armv7l-binary
86a2c3d8c328a8e89bd759daf4b904694adddda2a1518d3753af878eac659e98 test/results/test0017-knight-native-binary
acdd403a909151fcdb38d39eb5d715c2c1a131fc299115a02b33a903306e84a5 test/results/test0017-knight-posix-binary
cb0868af8e43534413cb90d58ea390656f38b74e5d6f385557bf347311a6ea07 test/results/test0017-riscv64-binary
1f7836d5b38685dff2901818b670f9e94a3ddd55c429053ea5d0fed1bbf1f7ef test/results/test0017-x86-binary
f51b21429495aca86e4da1e1f97561f2ad95f9db03ea599f116a74fa38b20874 test/results/test0018-aarch64-binary
7429f8d98f9c0b175c927ae88e445c69f8c54d00c51d52b705b8041fba61998b test/results/test0018-amd64-binary
d8bf1d6179c007d5718e2af6305cbace7b723ab9b1d85cbbaf833639a6c5cb8f test/results/test0018-amd64-binary
991ce8143210875c6255527b16ca614fdf30384595031b0cdca873c52f5736a1 test/results/test0018-armv7l-binary
3b152009796efc61119fbae9ea47514de5f127019db8870b42790af8bfa7924f test/results/test0018-knight-native-binary
f6447861295901e5688202df55091e3e7fa5a06f2d7882f841a0da8b9054b53d test/results/test0018-knight-posix-binary
81a1ce54af6f8069d17a4d2574ec0985687103033b001a621437ad0823a7b169 test/results/test0018-riscv64-binary
e0964d7ed2875353d563d9b8505c8b245b0814ffa2b95dcff3bf1ce42aea0359 test/results/test0018-x86-binary
9fcc1d1f1c02dd41f4586a58a06f35a98420efc803792860aee2945797ad240e test/results/test0019-aarch64-binary
3fcc9f09df4a7fa689fb3d29d5f69823311b9e37a3b273f1f062dc6369376af3 test/results/test0019-amd64-binary
785c46ec6309767638ea6b9662126b5bfe4ea869de0570e84a702c541c451d51 test/results/test0019-amd64-binary
987b80506395c0380808228ccc80044419ac3817af0a26b0d205ccaad31a3363 test/results/test0019-armv7l-binary
3e3c128fff2a85a85fe68fe5525f8bf3503dd4b47bd9686bd9cca55b4687c58f test/results/test0019-knight-posix-binary
7812dba8350b40d612b19482e55bfe35ff2b2f517a1e39828f8523fad28de6c4 test/results/test0019-riscv64-binary
a21147e2ae062b57e55c24eb55e9942b770922cd1c9c53348e5fe101d91dd5fa test/results/test0019-x86-binary
43475701b498d648d5246b3cef25dadc5ecab248c84bc5aa4566b13a1689ff1f test/results/test0020-aarch64-binary
bb03c8c1dd714423ddea7e06708488d83eb86d941b25d631bae02a915c483ad4 test/results/test0020-amd64-binary
339136d785f77fd5519aa52491fffb289a837f7d57ad9bd91e285cb28006211b test/results/test0020-amd64-binary
17a1a46da1607f4bdfbb24c0902c6c8d28580fe4cfacdd5e931fa42732917ca7 test/results/test0020-armv7l-binary
ead4f942d4a0fd3c48968ea88357a015145eec1c22be446bdc604d49f766eb0e test/results/test0020-knight-native-binary
4fd2a92e4ff7a9d472b6f41a45124a6750f5193a4d5e3f43c291ddf29725a517 test/results/test0020-knight-posix-binary
d51d3e89ab40e572eebeeec7795ea0f7b976a8fceff0c9b22bf6988d79cf5f91 test/results/test0020-riscv64-binary
d555181ec1a1e2f647a7e161b6c68b88f8b7e3f07a832e324beb959d5db770a6 test/results/test0020-x86-binary
b0bddd2529ee6b5904d6c2806eab9885472223ec64b11b909ba3c29bb0ffd95d test/results/test0021-aarch64-binary
4f10aa17a2925326109d5760d04a20c3b4baada118885b5ac7ab490ff95bc79e test/results/test0021-amd64-binary
6244864bf08d6c9624cf7e7607fd687ea861fe871917020279052c9036390428 test/results/test0021-amd64-binary
47c187696cb71ccae1b5fd36270544845d2d5130c4c653ce5d8d1faa6b1c1fdc test/results/test0021-armv7l-binary
b72d2c3b4b23edbe2ed7e9cc5abb9b5196151cb6da788837bdd48585ecac4a49 test/results/test0021-knight-posix-binary
7e70c54e30f8cdb4d580bc3d27b840fa136b1f75a84188729f5e7a4dedf2f56b test/results/test0021-riscv64-binary
46c1422aed16564a37db2d28a08bce626fa9483ceba4d36ce28fe6e3c8bd075a test/results/test0021-x86-binary
72139bed2ae2a583dcd8d8181824d7e0793ae3be941b59aec1a0874f24ece246 test/results/test0022-aarch64-binary
1d386d6a3d764150f8535048e31158ca490f6f8030fd0bcb67d731a8055f1d87 test/results/test0022-amd64-binary
bee22d2d58772b9e04131ed7d0383f7e06500b75b5ec6a464875354216de4401 test/results/test0022-amd64-binary
02f74f8e6d62394be8bd5607be1bb9a0b2f48e1146b0d721f9da67f22c8de8e9 test/results/test0022-armv7l-binary
fe999543e213553be26cf2715abfe5512f835c7b635c99047f66fde7c471307c test/results/test0022-knight-posix-binary
c666149b8eb9f5a0ab1e220c9f7592672934ebe602617b27b6d60d3ccbfa22d9 test/results/test0022-riscv64-binary
33513338e8a8af1e084b61eef7e3fd23fb799eec96490093df250d13e9e1d286 test/results/test0022-x86-binary
7c89643fc880073f9d2dc2e129470a03d82b86e5f0eb7ca3e635ed40eaa85e71 test/results/test0023-aarch64-binary
e3416188528883842f5fd2cbfe699c6d8a23b63bb4d18ca30eae13a45e1d8922 test/results/test0023-amd64-binary
5e4f2ecd2fd96e99e403cda4631ae9fdfc347fb5352ea3b107de2cfefd321232 test/results/test0023-amd64-binary
7522e37632adbfd9b829885c6a1a04561abf4fd3921311877879b8578219dda7 test/results/test0023-armv7l-binary
4c45412e5df83634a7aa553d5f8aef10fcbf9af84f9c1cb7a8e034cf81d77a01 test/results/test0023-knight-posix-binary
b008bbb8b1537a52693ba8189068c642a34d1372a3c1cde781c2e297d20bae17 test/results/test0023-riscv64-binary
@ -167,69 +167,71 @@ b4dfdb3f7cef6571968fadd3e586a19226a546b3d470cafb8b7c556e1d2d3bfd test/results/t
734dd8ba723a9ed1655824e6158406c0164dd180335ee7f725ea07994b3d5cc7 test/results/test0024-riscv64-binary
be8111d178501a86934f10de64f815e6812c5ee31ca31eb5a0e51cdabae5ad14 test/results/test0024-x86-binary
7204fb15428a0576c5715de44f23cd0594322946f28c2049b7d2fc415d5748c0 test/results/test0025-aarch64-binary
e8748af562228ffe335f3abe97a5aae898f6fb4dacd3e1167701a6690d154241 test/results/test0025-amd64-binary
8b26ccf91d2723d4aee9d71ba198244d59be858f0bafd278d097873dcafb5ca9 test/results/test0025-amd64-binary
7074cb8a9dbd7344ebad1d6679d1896636cef3cc1c5070463226970b08ecc372 test/results/test0025-armv7l-binary
3502984018678fd594aaf1b6fe6712746bd08bf3958b517442e266d3b9a602ff test/results/test0025-riscv64-binary
0844344cb3b97b3ddec2730f2d6c2585faddd3755555166c1da43cf63f1bfdf8 test/results/test0025-x86-binary
3f54de95e457bec97373e8f75b8ef10c95efbb3a02c0f3199f50b549e68db0d7 test/results/test0026-aarch64-binary
bf7204e213a7221aa783a68d841b5dfb6baa2bb0f5d5bf361e1edfe0c6c1b30b test/results/test0026-amd64-binary
373752f8166f58c36febf9984afbf31f6029a1b57d02d5ed4be01b425ce08e55 test/results/test0026-amd64-binary
f4676ec3d8eade4c0f405a4b66d7069c78b881fd3f654e7e04f3fe56326542b5 test/results/test0026-armv7l-binary
856fdc8a9045f71583337dfc4a0d2a5cd01a72061d292b6d75e6fa52e70c78df test/results/test0026-riscv64-binary
46381cee997ec150a6b3bb7b978908df8d30cf65cc98744451a00f6eb5a70aa6 test/results/test0026-x86-binary
308ff16be0bbd485cb550ee2f7b49f0bc971bcf00cb043fa59f7053fe5ae7a16 test/results/test0027-aarch64-binary
1591d35cf06ee0b2a746f81445b871e19440908c1b49657c85934d7daf131488 test/results/test0027-amd64-binary
d67883011c96e16dd95ad25a9217c153ef26c1f40c79de5be8377ae3bab15ddf test/results/test0027-amd64-binary
d8249590a1e1a43efa5bf05b2b1f0fbea7ebe46c347105b6def3a2cdf07eef59 test/results/test0027-armv7l-binary
f871d50855f0b12aa4925b819e1a67140027737262686bca8d622b42cb22bc43 test/results/test0027-riscv64-binary
04e75e83bcea38ba913117c4a4fd1dac5264321aa34eb40a934d6596b6bf7978 test/results/test0027-x86-binary
726532beb0d7fd82698f2d32b86f6da9911601671d98ea3980cb3e2c8dd79e08 test/results/test0028-aarch64-binary
dd00ce94e7d4c5ba5ef594cd10550dca78093436557b686546f9eb0ed145c729 test/results/test0028-amd64-binary
180f14cb3633aeefdf2fbcf6f54337bb0f95424ebd95a045c2e211b8315fdbd4 test/results/test0028-armv7l-binary
66cfba7c0840cf0c1130faf36c3be9f644e2a7d46417d6aa9a8d6a201a50bf72 test/results/test0028-riscv64-binary
97217edf83a000b457c5e7c54ce7b7bd6829264e46e96a2f043f7ef62cd864f2 test/results/test0028-x86-binary
889558c55dc9900546957d789f72e7322dc6b34b03678f99be9165017e0c35b1 test/results/test0028-aarch64-binary
0a56bcd7157618fc6ae63c840da54ac2edd4614922b7424bfd672ff593ff1dda test/results/test0028-amd64-binary
cddae954ec3486707f9c7ea6643093c71cdf31feef6db33ad359432bffcc8252 test/results/test0028-armv7l-binary
7818c4382355883e524b3b5d54d0b8a57b7a627f8b858d22cac231ed96b6a549 test/results/test0028-knight-native-binary
9ed5dc1fb8881d2abb44ebb323d3f5656e60972e2b30f59e7cbc395f20a794fd test/results/test0028-knight-posix-binary
cd74ccf3a4cb56fe52c0106da92a8befd8628993efd9a74765125ff132653533 test/results/test0028-riscv64-binary
770de057c6dfd9a82f3e5a5dd65e0fbd3322bcf3384192190e34d97c99d86eb4 test/results/test0028-x86-binary
29bc8c839549d674dd7717ee31aa7a974fb81163c7a75ec6357ab129f91ba48c test/results/test0100-aarch64-binary
1f51f1fdc444e40917a7fe59d70472b7bca9a623230093c39c55dd5b911e6ed6 test/results/test0100-amd64-binary
1f8b618ccf5ac0d6b8573993c74b3047a2deb27ba734d08881f69e52070e0286 test/results/test0100-amd64-binary
bc2666096825062ad5bf840e94fe1fe26b37bef2d024d642cc237f98c65fcccc test/results/test0100-armv7l-binary
a41f2c83c97c037b70712755a1e08716cbcf6da916c668993aef5d264f5c5ac5 test/results/test0100-knight-posix-binary
cc0a1895d177aa7033c9f1e62808c680a54e3518a511fa2d284b413e60030394 test/results/test0100-riscv64-binary
221f495185d38cf64d699cfa0a893c2eb1621fd70d16ebc385153f9411448500 test/results/test0100-x86-binary
6540bbe5c06adfd3d162197c2c33f75936913b47bdbfc5b48ba0ce01b4995840 test/results/test0101-aarch64-binary
80fd9a7b43dfba04b87b50046cdf3e8adbbad4300331e28cf62e4e3aeb0bdbd3 test/results/test0101-amd64-binary
d7f780ba3042a799fb98c9d6f0df00a8ca6a7a1f30145229b82745760068b30d test/results/test0101-amd64-binary
de2dbfc6c00fe1e6a0a685f9f103f462857a74205bd8368f52933887d141d6dd test/results/test0101-armv7l-binary
1c0a40f524edbbcaad7e58b4c8c949299f4f6e1c81663990d6b956eee4406c20 test/results/test0101-knight-posix-binary
d9cc92025206a788c300c20cc77513a94b9ac97ecfb67c48a4e1c97d315399ac test/results/test0101-riscv64-binary
52d099e59607d7b192f7de95c870e8f753fe03d00674bfbeab3293b7796a7801 test/results/test0101-x86-binary
d3a8c1a1996c6e0dc15df146ffbd0904a22396c7c695719be59e23404ffae90f test/results/test0102-aarch64-binary
7a3fba04443ae81d8e60f371f66bf710fb9f430011e3a4d3b9a80585186719ba test/results/test0102-amd64-binary
b0214152c0991ca96a5247cf5e8f6887a96b326f6b9a6b6b4d583dad72061343 test/results/test0102-amd64-binary
df5319bfca446a006591fdf54fabfa6069d8eaecf5ed3ffa2d725aa9dd43ea07 test/results/test0102-armv7l-binary
801bda8a34306f4246b8f5a6b84f96ecce49cc41a6af307304e986ab47ac9f1b test/results/test0102-knight-posix-binary
3143bcdc4089bebbe5d73ccc224611732524e38e2064c3ce3e3ce4329a900a97 test/results/test0102-riscv64-binary
5530eaa67a2b5c69de3f4ae35a7bd0cee04e9590ed019bca4710b95cf55f8e2c test/results/test0102-x86-binary
26c45c99e52fb190bf7edee34871efd5b2a9ab2e6015d230b65d8a9bb392ffab test/results/test0103-aarch64-binary
7f77190dabdcadda0edb487830a01db555a3a5d68113a8a25bd13e0cc01548a8 test/results/test0103-amd64-binary
95a3940a793a5ca5e628c026f4d74d54d735c21c5292e49d2a4ce75a4106cf7a test/results/test0103-amd64-binary
053435f9f9dfeef2a1915b7dfcb79ebab739fa1eda07f18c82d73c30b6ec7a78 test/results/test0103-armv7l-binary
074bc201b8fa18ad990f4bcef719c545338f5a16d5f2e65a6887c40e4c725da8 test/results/test0103-knight-posix-binary
df66401e39c9547e7da54b60685aaf0d41a1ffb8b92af0b215243ea4f0423a20 test/results/test0103-riscv64-binary
f9422c80fe6f61b8d980f5732165fb3f5de3e936c3255b31e9ce54b5d226aa02 test/results/test0103-x86-binary
55b956ce08ff2686a1776f05a67520b6155b714590227fd873613dfdda0b412c test/results/test0104-aarch64-binary
2503653c76bdbe7769609335f4bf992e8a825e8363c2201ecab6586621b880f0 test/results/test0104-amd64-binary
beb37159c9d3555023feebeeb80be84f6731d21784116ba41631c0e9789ff911 test/results/test0104-amd64-binary
210d0c33d7936e59898b2ab5b368fda190bf0805d626d1d7ecac8294c6ae29ab test/results/test0104-armv7l-binary
09e75b87ff997c1d69d06e9a231c87798ce91c9832afc6e521d75ee4fee50e2d test/results/test0104-riscv64-binary
ee06037811ee75d750a34ada90a04d18001506b833717339b186ebedeeba2632 test/results/test0104-x86-binary
4583b98a125dca7a1b870e95ffd7aa2cb9054ff03b803d1606adf5004a0463ad test/results/test0105-aarch64-binary
f853efe5c776228c6334e09521b0653735b2e5f0e76863b47d2a07caada7c151 test/results/test0105-amd64-binary
037f3ff2d1d60c329a2cc02b776dc437cb690ab9848b4d8bb7de42383b0c2f00 test/results/test0105-amd64-binary
ed830495864dd849ccd8896a728a52bde9be179690db808f7e14144cf3dcbfa3 test/results/test0105-armv7l-binary
e831f44d688f3e73b35dcb17a3eb5b2ecd72005f5c407d89770508ff98863f9e test/results/test0105-riscv64-binary
b02855fed0b4040ab8b7f2711b62967032b7cb52135dd3187e29642713c311fe test/results/test0105-x86-binary
eb1f6aab09a1a4966f9f49a518d8aa03ca97aa7c46e443871d758a306671a85e test/results/test0106-aarch64-binary
1eaf43e60d9304fe45ca492a673e6b179b45da211542140cbdaa19f14affde9f test/results/test0106-amd64-binary
a1b650855e716d79db70c37b95adb3e6527a881217ebb118db976fb18b170a8d test/results/test0106-amd64-binary
15f5b35c7b10be4b41fde817fb529d950d1f06b0cb890a2dbae0cb66a203463f test/results/test0106-armv7l-binary
1abb9b84c4a75d6e9cd2da1f7eba82cd7e12942874130e57ce07e00309bf0b85 test/results/test0106-knight-native-binary
a2cbfd5f76d3be8049c6737e3fa02f191caf29b6885db006fa23f86e6eacc186 test/results/test0106-knight-posix-binary
d75e450e2fcdf19df63f9d6a3fe5e032933e57b33f6f06b39a8ed2f3dc759f17 test/results/test0106-riscv64-binary
473cc504d6cba9eaf648abcf15c83a317ff3f4a7f08f5e8936e3b35b2cc4fbc6 test/results/test0106-x86-binary
7729e3279192002ce69af057534670779b30c7ae0feaef82e11d4c8b74278b94 test/results/test1000-aarch64-binary
be88d5e1b0c5584192beb7b7380e578925993a636a0e338a319f39b56407a192 test/results/test1000-amd64-binary
92f9f8134a2213d45919a562160d57f58de94870979af80ff7d52b47c196536f test/results/test1000-armv7l-binary
e47006b7829ddfc1a4f1aa545e8a09950e8053ff6841c5d5922a330c8849b384 test/results/test1000-knight-posix-binary
bbeb55c436f1c26e1cddfb0a47da350219f817017ba0139dbde56392522f4406 test/results/test1000-riscv64-binary
0891395cd28e6d0adb6feed07b0fce5b8c1245eeb2bf673aa488fe037daf349c test/results/test1000-x86-binary
3ea998973a899d02dab1993a42ae052e9eb7a1ef808ae90f62575cf3806743ec test/results/test1000-aarch64-binary
d7b8567571bf5f98a896ad92064d1e3afa3c7c2ef6922ab79a2349bef636d85a test/results/test1000-amd64-binary
4a1d98867493f8e597e023082febd667d9d9618ea9f1941d95e6b5aac310822b test/results/test1000-armv7l-binary
e198fcea72177bb6bc2906c6aa76b334e6ced8c431b55425fea8285615d50c4a test/results/test1000-knight-posix-binary
b6955def425d3ba6e42f70d8bd3f03d53896501ba850a4faf388989fb60753e9 test/results/test1000-riscv64-binary
a900cd0852312fde60687fad99ee0ffa23624fd83de967b741eefd5bf9a41316 test/results/test1000-x86-binary

View File

@ -0,0 +1,57 @@
#! /bin/sh
## Copyright (C) 2017 Jeremiah Orians
## Copyright (C) 2021 deesix <deesix@tuta.io>
## This file is part of M2-Planet.
##
## M2-Planet is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## M2-Planet is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with M2-Planet. If not, see <http://www.gnu.org/licenses/>.
set -x
TMPDIR="test/test0028/tmp-knight-native"
mkdir -p ${TMPDIR}
# Build the test
bin/M2-Planet \
--architecture knight-native \
-f test/test0028/assignment.c \
-o ${TMPDIR}/assignment.M1 \
|| exit 1
# Macro assemble with libc written in M1-Macro
M1 \
-f M2libc/knight/knight-native_defs.M1 \
-f M2libc/knight/libc-native.M1 \
-f ${TMPDIR}/assignment.M1 \
--big-endian \
--architecture knight-native \
-o ${TMPDIR}/assignment.hex2 \
|| exit 2
# Resolve all linkages
hex2 \
-f ${TMPDIR}/assignment.hex2 \
--big-endian \
--architecture knight-native \
--base-address 0x0 \
-o test/results/test0028-knight-native-binary \
|| exit 3
# Ensure binary works if host machine supports test
if [ "$(get_machine ${GET_MACHINE_FLAGS})" = "knight-native" ]
then
# Verify that the compiled program returns the correct result
vm --rom ./test/results/test0028-knight-native-binary
[ 0 = $? ] || exit 3
fi
exit 0

View File

@ -0,0 +1,64 @@
#! /bin/sh
## Copyright (C) 2017 Jeremiah Orians
## Copyright (C) 2021 deesix <deesix@tuta.io>
## This file is part of M2-Planet.
##
## M2-Planet is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## M2-Planet is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with M2-Planet. If not, see <http://www.gnu.org/licenses/>.
set -x
TMPDIR="test/test0028/tmp-knight-posix"
mkdir -p ${TMPDIR}
# Build the test
bin/M2-Planet \
--architecture knight-posix \
-f test/test0028/assignment.c \
-o ${TMPDIR}/assignment.M1 \
|| exit 1
# Macro assemble with libc written in M1-Macro
M1 \
-f M2libc/knight/knight_defs.M1 \
-f M2libc/knight/libc-core.M1 \
-f ${TMPDIR}/assignment.M1 \
--big-endian \
--architecture knight-posix \
-o ${TMPDIR}/assignment.hex2 \
|| exit 2
# Resolve all linkages
hex2 \
-f M2libc/knight/ELF-knight.hex2 \
-f ${TMPDIR}/assignment.hex2 \
--big-endian \
--architecture knight-posix \
--base-address 0x0 \
-o test/results/test0028-knight-posix-binary \
|| exit 3
# Ensure binary works if host machine supports test
if [ "$(get_machine ${GET_MACHINE_FLAGS})" = "knight" ] && [ ! -z "${KNIGHT_EMULATION}" ]
then
# Verify that the resulting file works
vm --POSIX-MODE --rom ./test/results/test0028-knight-posix-binary --memory 2M
[ 0 = $? ] || exit 3
elif [ "$(get_machine ${GET_MACHINE_FLAGS})" = "knight" ]
then
# Verify that the compiled program returns the correct result
./test/results/test0028-knight-posix-binary
[ 0 = $? ] || exit 3
fi
exit 0

View File

@ -20,7 +20,7 @@ set -ex
ARCH="$1"
. test/env.inc.sh
TMPDIR="test/test0027/tmp-${ARCH}"
TMPDIR="test/test0028/tmp-${ARCH}"
mkdir -p ${TMPDIR}
@ -67,6 +67,6 @@ if [ "$(get_machine ${GET_MACHINE_FLAGS})" = "${ARCH}" ]
then
. ./sha256.sh
# Verify that the resulting file works
./test/results/test0027-${ARCH}-binary || exit 4
./test/results/test0028-${ARCH}-binary || exit 4
fi
exit 0

View File

@ -1 +1 @@
9ee96e67f254dab17c5a2aa697dfd609d1b07103e0a8b873ba3d7e22386a8c3c test/test1000/proof
e8f9ec5440c1ddde95f342671f4ffb9c3b2914c57a7a3aad2ed670096491c327 test/test1000/proof