blaise/vendor/qbe/test/isel1.ssa
Graeme Geldenhuys 25de8be212 Fix compilation errors; vendor QBE 1.2; end-to-end Hello World works
Fix TProgram.Uses reserved-word clash (renamed to UsedUnits), nested
brace-comment in uParser.pas, and missing uAST in Blaise.pas uses clause.

Vendor QBE 1.2 source in vendor/qbe/ (built locally with make; binary
excluded via .gitignore). End-to-end pipeline confirmed: Blaise compiles
Hello World and Calc (6*7=42) to native x86_64 Linux binaries.

71/71 FPCUnit tests passing.
2026-04-20 16:38:57 +01:00

25 lines
535 B
Plaintext

# tests that the address matcher is not
# confused by the two multiplications
# note: the code handling apple asm fixes
# ruins the good work of the matcher here,
# I should revisit these fixes
export function w $f(l %i, l %j) {
@start
%off1 =l mul %i, 8
%a_i =l add $a, %off1
%off2 =l mul %j, 4
%a_ij =l add %a_i, %off2
%x =w loadsw %a_ij
ret %x
}
# >>> driver
# int a[] = {1, 2, 3, 4};
# extern int f(long long, long long);
# int main() {
# return !(f(0, 0) == 1 && f(0, 1) == 2 && f(1, 0) == 3 && f(1, 1) == 4);
# }
# <<<