blob: e4d5dea1b6a271b07299b5294282d4a4bb8553c4 [file]
; NOTE: Assertions have been autogenerated by utils/update_llubi_test_checks.py UTC_ARGS: --version 6
; RUN: llubi --verbose < %s 2>&1 | FileCheck %s
declare i32 @printf(ptr, ...)
define i32 @main() {
entry:
%fmt_int = alloca [36 x i8]
store [36 x i8] c"Ints: %d, %i, %u, %o, %x, %X, %05d\0A\00", ptr %fmt_int
%fmt_len = alloca [35 x i8]
store [35 x i8] c"Lengths: %ld, %lld, %hd, %hhu, %c\0A\00", ptr %fmt_len
%fmt_str_ptr = alloca [18 x i8]
store [18 x i8] c"Str: %s, Ptr: %p\0A\00", ptr %fmt_str_ptr
%fmt_pct = alloca [15 x i8]
store [15 x i8] c"Percent: %d%%\0A\00", ptr %fmt_pct
%dummy_str = alloca [6 x i8]
store [6 x i8] c"llubi\00", ptr %dummy_str
%fmt_float = alloca [20 x i8]
store [20 x i8] c"Floats: %f, %e, %g\0A\00", ptr %fmt_float
%fmt_n = alloca [15 x i8]
store [15 x i8] c"Count: %nDone\0A\00", ptr %fmt_n
%fmt_n_out = alloca [6 x i8]
store [6 x i8] c"N=%d\0A\00", ptr %fmt_n_out
%n_count = alloca i32
store i32 0, ptr %n_count
call i32 (ptr, ...) @printf(ptr %fmt_int, i32 42, i32 -42, i32 255, i32 255, i32 255, i32 255, i32 42)
call i32 (ptr, ...) @printf(ptr %fmt_len, i64 123456789, i64 987654321, i32 100, i32 50, i32 65)
call i32 (ptr, ...) @printf(ptr %fmt_str_ptr, ptr %dummy_str, ptr %dummy_str)
call i32 (ptr, ...) @printf(ptr %fmt_pct, i32 100)
call i32 (ptr, ...) @printf(ptr %fmt_float, double 3.14159, double 3.14159, double 3.14159)
call i32 (ptr, ...) @printf(ptr %fmt_n, ptr %n_count)
%n_loaded = load i32, ptr %n_count
call i32 (ptr, ...) @printf(ptr %fmt_n_out, i32 %n_loaded)
ret i32 0
}
; CHECK: Entering function: main
; CHECK-NEXT: %fmt_int = alloca [36 x i8], align 1 => ptr 0x8 [fmt_int]
; CHECK-NEXT: store [36 x i8] c"Ints: %d, %i, %u, %o, %x, %X, %05d\0A\00", ptr %fmt_int, align 1
; CHECK-NEXT: %fmt_len = alloca [35 x i8], align 1 => ptr 0x2C [fmt_len]
; CHECK-NEXT: store [35 x i8] c"Lengths: %ld, %lld, %hd, %hhu, %c\0A\00", ptr %fmt_len, align 1
; CHECK-NEXT: %fmt_str_ptr = alloca [18 x i8], align 1 => ptr 0x4F [fmt_str_ptr]
; CHECK-NEXT: store [18 x i8] c"Str: %s, Ptr: %p\0A\00", ptr %fmt_str_ptr, align 1
; CHECK-NEXT: %fmt_pct = alloca [15 x i8], align 1 => ptr 0x61 [fmt_pct]
; CHECK-NEXT: store [15 x i8] c"Percent: %d%%\0A\00", ptr %fmt_pct, align 1
; CHECK-NEXT: %dummy_str = alloca [6 x i8], align 1 => ptr 0x70 [dummy_str]
; CHECK-NEXT: store [6 x i8] c"llubi\00", ptr %dummy_str, align 1
; CHECK-NEXT: %fmt_float = alloca [20 x i8], align 1 => ptr 0x76 [fmt_float]
; CHECK-NEXT: store [20 x i8] c"Floats: %f, %e, %g\0A\00", ptr %fmt_float, align 1
; CHECK-NEXT: %fmt_n = alloca [15 x i8], align 1 => ptr 0x8A [fmt_n]
; CHECK-NEXT: store [15 x i8] c"Count: %nDone\0A\00", ptr %fmt_n, align 1
; CHECK-NEXT: %fmt_n_out = alloca [6 x i8], align 1 => ptr 0x99 [fmt_n_out]
; CHECK-NEXT: store [6 x i8] c"N=%d\0A\00", ptr %fmt_n_out, align 1
; CHECK-NEXT: %n_count = alloca i32, align 4 => ptr 0xA0 [n_count]
; CHECK-NEXT: store i32 0, ptr %n_count, align 4
; CHECK-NEXT: Ints: 42, -42, 255, 377, ff, FF, 00042
; CHECK-NEXT: %0 = call i32 (ptr, ...) @printf(ptr %fmt_int, i32 42, i32 -42, i32 255, i32 255, i32 255, i32 255, i32 42) => i32 39
; CHECK-NEXT: Lengths: 123456789, 987654321, 100, 50, A
; CHECK-NEXT: %1 = call i32 (ptr, ...) @printf(ptr %fmt_len, i64 123456789, i64 987654321, i32 100, i32 50, i32 65) => i32 42
; CHECK-NEXT: Str: llubi, Ptr: 0x70
; CHECK-NEXT: %2 = call i32 (ptr, ...) @printf(ptr %fmt_str_ptr, ptr %dummy_str, ptr %dummy_str) => i32 22
; CHECK-NEXT: Percent: 100%
; CHECK-NEXT: %3 = call i32 (ptr, ...) @printf(ptr %fmt_pct, i32 100) => i32 14
; CHECK-NEXT: Floats: 3.141590, 3.141590e+00, 3.14159
; CHECK-NEXT: %4 = call i32 (ptr, ...) @printf(ptr %fmt_float, double 3.141590e+00, double 3.141590e+00, double 3.141590e+00) => i32 40
; CHECK-NEXT: Count: Done
; CHECK-NEXT: %5 = call i32 (ptr, ...) @printf(ptr %fmt_n, ptr %n_count) => i32 12
; CHECK-NEXT: %n_loaded = load i32, ptr %n_count, align 4 => i32 7
; CHECK-NEXT: N=7
; CHECK-NEXT: %6 = call i32 (ptr, ...) @printf(ptr %fmt_n_out, i32 %n_loaded) => i32 4
; CHECK-NEXT: ret i32 0
; CHECK-NEXT: Exiting function: main