github.com/goplus/llgo@v0.8.3/cl/_testdata/print/out.ll (about)

     1  ; ModuleID = 'main'
     2  source_filename = "main"
     3  
     4  %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 }
     5  %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 }
     6  %main.stringStruct = type { ptr, i64 }
     7  %main.slice = type { ptr, i64, i64 }
     8  %"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr }
     9  
    10  @"main.init$guard" = global ptr null
    11  @main.minhexdigits = global ptr null
    12  @0 = private unnamed_addr constant [3 x i8] c"%s\00", align 1
    13  @__llgo_argc = global ptr null
    14  @__llgo_argv = global ptr null
    15  @1 = private unnamed_addr constant [5 x i8] c"llgo\00", align 1
    16  @2 = private unnamed_addr constant [11 x i8] c"check bool\00", align 1
    17  @3 = private unnamed_addr constant [9 x i8] c"check &^\00", align 1
    18  @4 = private unnamed_addr constant [5 x i8] c"llgo\00", align 1
    19  @5 = private unnamed_addr constant [5 x i8] c"true\00", align 1
    20  @6 = private unnamed_addr constant [6 x i8] c"false\00", align 1
    21  @7 = private unnamed_addr constant [4 x i8] c"NaN\00", align 1
    22  @8 = private unnamed_addr constant [5 x i8] c"+Inf\00", align 1
    23  @9 = private unnamed_addr constant [5 x i8] c"-Inf\00", align 1
    24  @10 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00", align 1
    25  @11 = private unnamed_addr constant [2 x i8] c"-\00", align 1
    26  @12 = private unnamed_addr constant [2 x i8] c" \00", align 1
    27  @13 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
    28  @14 = private unnamed_addr constant [2 x i8] c" \00", align 1
    29  
    30  define %"github.com/goplus/llgo/internal/runtime.Slice" @main.bytes(%"github.com/goplus/llgo/internal/runtime.String" %0) {
    31  _llgo_0:
    32    %1 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 16)
    33    store %"github.com/goplus/llgo/internal/runtime.String" %0, ptr %1, align 8
    34    %2 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 24)
    35    %3 = call ptr @main.stringStructOf(ptr %1)
    36    %4 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 0
    37    %5 = load ptr, ptr %4, align 8
    38    %6 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 0
    39    store ptr %5, ptr %6, align 8
    40    %7 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 1
    41    %8 = load i64, ptr %7, align 4
    42    %9 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 1
    43    store i64 %8, ptr %9, align 4
    44    %10 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 1
    45    %11 = load i64, ptr %10, align 4
    46    %12 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 2
    47    store i64 %11, ptr %12, align 4
    48    %13 = load %"github.com/goplus/llgo/internal/runtime.Slice", ptr %2, align 8
    49    ret %"github.com/goplus/llgo/internal/runtime.Slice" %13
    50  }
    51  
    52  define void @main.gwrite(%"github.com/goplus/llgo/internal/runtime.Slice" %0) {
    53  _llgo_0:
    54    %1 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %0, 1
    55    %2 = icmp eq i64 %1, 0
    56    br i1 %2, label %_llgo_1, label %_llgo_2
    57  
    58  _llgo_1:                                          ; preds = %_llgo_0
    59    ret void
    60  
    61  _llgo_2:                                          ; preds = %_llgo_0
    62    %3 = call i32 (ptr, ...) @printf(ptr @0, %"github.com/goplus/llgo/internal/runtime.Slice" %0)
    63    ret void
    64  }
    65  
    66  define void @main.init() {
    67  _llgo_0:
    68    %0 = load i1, ptr @"main.init$guard", align 1
    69    br i1 %0, label %_llgo_2, label %_llgo_1
    70  
    71  _llgo_1:                                          ; preds = %_llgo_0
    72    store i1 true, ptr @"main.init$guard", align 1
    73    store i64 0, ptr @main.minhexdigits, align 4
    74    br label %_llgo_2
    75  
    76  _llgo_2:                                          ; preds = %_llgo_1, %_llgo_0
    77    ret void
    78  }
    79  
    80  define i32 @main(i32 %0, ptr %1) {
    81  _llgo_0:
    82    store i32 %0, ptr @__llgo_argc, align 4
    83    store ptr %1, ptr @__llgo_argv, align 8
    84    call void @"github.com/goplus/llgo/internal/runtime.init"()
    85    call void @main.init()
    86    %2 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @1, i64 4)
    87    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %2)
    88    call void @main.printnl()
    89    call void @main.printuint(i64 1024)
    90    call void @main.printnl()
    91    call void @main.printhex(i64 305441743)
    92    call void @main.printnl()
    93    call void @main.prinxor(i64 1)
    94    call void @main.printnl()
    95    call void @main.prinsub(i64 100)
    96    call void @main.printnl()
    97    call void @main.prinusub(i64 -1)
    98    call void @main.printnl()
    99    call void @main.prinfsub(double 1.001000e+02)
   100    call void @main.printnl()
   101    %3 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13)
   102    %4 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %3, i64 1315859240)
   103    call void @main.printany(%"github.com/goplus/llgo/internal/runtime.iface" %4)
   104    call void @main.printnl()
   105    %5 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14)
   106    %6 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %5, i64 4746175415993761792)
   107    call void @main.printany(%"github.com/goplus/llgo/internal/runtime.iface" %6)
   108    call void @main.printnl()
   109    br i1 true, label %_llgo_3, label %_llgo_2
   110  
   111  _llgo_1:                                          ; preds = %_llgo_3
   112    %7 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 32)
   113    %8 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %7, i64 0
   114    %9 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @2, i64 10)
   115    %10 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyString"(%"github.com/goplus/llgo/internal/runtime.String" %9)
   116    store %"github.com/goplus/llgo/internal/runtime.iface" %10, ptr %8, align 8
   117    %11 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %7, i64 1
   118    %12 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
   119    %13 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %12, i64 -1)
   120    store %"github.com/goplus/llgo/internal/runtime.iface" %13, ptr %11, align 8
   121    %14 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %7, i64 16, i64 2, i64 0, i64 2, i64 2)
   122    call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %14)
   123    br label %_llgo_2
   124  
   125  _llgo_2:                                          ; preds = %_llgo_3, %_llgo_1, %_llgo_0
   126    %15 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 48)
   127    %16 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %15, i64 0
   128    %17 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @3, i64 8)
   129    %18 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyString"(%"github.com/goplus/llgo/internal/runtime.String" %17)
   130    store %"github.com/goplus/llgo/internal/runtime.iface" %18, ptr %16, align 8
   131    %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %15, i64 1
   132    %20 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
   133    %21 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %20, i64 -1)
   134    store %"github.com/goplus/llgo/internal/runtime.iface" %21, ptr %19, align 8
   135    %22 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %15, i64 2
   136    %23 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
   137    %24 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %23, i64 -1)
   138    store %"github.com/goplus/llgo/internal/runtime.iface" %24, ptr %22, align 8
   139    %25 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %15, i64 16, i64 3, i64 0, i64 3, i64 3)
   140    call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %25)
   141    %26 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 256)
   142    %27 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 0
   143    %28 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
   144    %29 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %28, i64 -1)
   145    store %"github.com/goplus/llgo/internal/runtime.iface" %29, ptr %27, align 8
   146    %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 1
   147    %31 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
   148    %32 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %31, i64 0)
   149    store %"github.com/goplus/llgo/internal/runtime.iface" %32, ptr %30, align 8
   150    %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 2
   151    %34 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
   152    %35 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %34, i64 97)
   153    store %"github.com/goplus/llgo/internal/runtime.iface" %35, ptr %33, align 8
   154    %36 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 3
   155    %37 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
   156    %38 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %37, i64 65)
   157    store %"github.com/goplus/llgo/internal/runtime.iface" %38, ptr %36, align 8
   158    %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 4
   159    %40 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
   160    %41 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %40, i64 20013)
   161    store %"github.com/goplus/llgo/internal/runtime.iface" %41, ptr %39, align 8
   162    %42 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 5
   163    %43 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
   164    %44 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %43, i64 1)
   165    store %"github.com/goplus/llgo/internal/runtime.iface" %44, ptr %42, align 8
   166    %45 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 6
   167    %46 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4)
   168    %47 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %46, i64 2)
   169    store %"github.com/goplus/llgo/internal/runtime.iface" %47, ptr %45, align 8
   170    %48 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 7
   171    %49 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
   172    %50 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %49, i64 3)
   173    store %"github.com/goplus/llgo/internal/runtime.iface" %50, ptr %48, align 8
   174    %51 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 8
   175    %52 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6)
   176    %53 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %52, i64 4)
   177    store %"github.com/goplus/llgo/internal/runtime.iface" %53, ptr %51, align 8
   178    %54 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 9
   179    %55 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
   180    %56 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %55, i64 5)
   181    store %"github.com/goplus/llgo/internal/runtime.iface" %56, ptr %54, align 8
   182    %57 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 10
   183    %58 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
   184    %59 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %58, i64 1)
   185    store %"github.com/goplus/llgo/internal/runtime.iface" %59, ptr %57, align 8
   186    %60 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 11
   187    %61 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9)
   188    %62 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %61, i64 2)
   189    store %"github.com/goplus/llgo/internal/runtime.iface" %62, ptr %60, align 8
   190    %63 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 12
   191    %64 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10)
   192    %65 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %64, i64 3)
   193    store %"github.com/goplus/llgo/internal/runtime.iface" %65, ptr %63, align 8
   194    %66 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 13
   195    %67 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11)
   196    %68 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %67, i64 4)
   197    store %"github.com/goplus/llgo/internal/runtime.iface" %68, ptr %66, align 8
   198    %69 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 14
   199    %70 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12)
   200    %71 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr %70, i64 5)
   201    store %"github.com/goplus/llgo/internal/runtime.iface" %71, ptr %69, align 8
   202    %72 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %26, i64 15
   203    %73 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @4, i64 4)
   204    %74 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyString"(%"github.com/goplus/llgo/internal/runtime.String" %73)
   205    store %"github.com/goplus/llgo/internal/runtime.iface" %74, ptr %72, align 8
   206    %75 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %26, i64 16, i64 16, i64 0, i64 16, i64 16)
   207    call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %75)
   208    ret i32 0
   209  
   210  _llgo_3:                                          ; preds = %_llgo_0
   211    br i1 true, label %_llgo_1, label %_llgo_2
   212  }
   213  
   214  define void @main.prinfsub(double %0) {
   215  _llgo_0:
   216    %1 = fneg double %0
   217    call void @main.printfloat(double %1)
   218    ret void
   219  }
   220  
   221  define void @main.prinsub(i64 %0) {
   222  _llgo_0:
   223    %1 = sub i64 0, %0
   224    call void @main.printint(i64 %1)
   225    ret void
   226  }
   227  
   228  define void @main.printany(%"github.com/goplus/llgo/internal/runtime.iface" %0) {
   229  _llgo_0:
   230    %1 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 1)
   231    %2 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %1)
   232    %3 = extractvalue { i64, i1 } %2, 0
   233    %4 = trunc i64 %3 to i1
   234    %5 = extractvalue { i64, i1 } %2, 1
   235    br i1 %5, label %_llgo_2, label %_llgo_3
   236  
   237  _llgo_1:                                          ; preds = %_llgo_30, %_llgo_29, %_llgo_28, %_llgo_26, %_llgo_24, %_llgo_22, %_llgo_20, %_llgo_18, %_llgo_16, %_llgo_14, %_llgo_12, %_llgo_10, %_llgo_8, %_llgo_6, %_llgo_4, %_llgo_2
   238    ret void
   239  
   240  _llgo_2:                                          ; preds = %_llgo_0
   241    call void @main.printbool(i1 %4)
   242    br label %_llgo_1
   243  
   244  _llgo_3:                                          ; preds = %_llgo_0
   245    %6 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 2)
   246    %7 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %6)
   247    %8 = extractvalue { i64, i1 } %7, 0
   248    %9 = extractvalue { i64, i1 } %7, 1
   249    br i1 %9, label %_llgo_4, label %_llgo_5
   250  
   251  _llgo_4:                                          ; preds = %_llgo_3
   252    call void @main.printint(i64 %8)
   253    br label %_llgo_1
   254  
   255  _llgo_5:                                          ; preds = %_llgo_3
   256    %10 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 3)
   257    %11 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %10)
   258    %12 = extractvalue { i64, i1 } %11, 0
   259    %13 = trunc i64 %12 to i8
   260    %14 = extractvalue { i64, i1 } %11, 1
   261    br i1 %14, label %_llgo_6, label %_llgo_7
   262  
   263  _llgo_6:                                          ; preds = %_llgo_5
   264    %15 = sext i8 %13 to i64
   265    call void @main.printint(i64 %15)
   266    br label %_llgo_1
   267  
   268  _llgo_7:                                          ; preds = %_llgo_5
   269    %16 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 4)
   270    %17 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %16)
   271    %18 = extractvalue { i64, i1 } %17, 0
   272    %19 = trunc i64 %18 to i16
   273    %20 = extractvalue { i64, i1 } %17, 1
   274    br i1 %20, label %_llgo_8, label %_llgo_9
   275  
   276  _llgo_8:                                          ; preds = %_llgo_7
   277    %21 = sext i16 %19 to i64
   278    call void @main.printint(i64 %21)
   279    br label %_llgo_1
   280  
   281  _llgo_9:                                          ; preds = %_llgo_7
   282    %22 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 5)
   283    %23 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %22)
   284    %24 = extractvalue { i64, i1 } %23, 0
   285    %25 = trunc i64 %24 to i32
   286    %26 = extractvalue { i64, i1 } %23, 1
   287    br i1 %26, label %_llgo_10, label %_llgo_11
   288  
   289  _llgo_10:                                         ; preds = %_llgo_9
   290    %27 = sext i32 %25 to i64
   291    call void @main.printint(i64 %27)
   292    br label %_llgo_1
   293  
   294  _llgo_11:                                         ; preds = %_llgo_9
   295    %28 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 6)
   296    %29 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %28)
   297    %30 = extractvalue { i64, i1 } %29, 0
   298    %31 = extractvalue { i64, i1 } %29, 1
   299    br i1 %31, label %_llgo_12, label %_llgo_13
   300  
   301  _llgo_12:                                         ; preds = %_llgo_11
   302    call void @main.printint(i64 %30)
   303    br label %_llgo_1
   304  
   305  _llgo_13:                                         ; preds = %_llgo_11
   306    %32 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 7)
   307    %33 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %32)
   308    %34 = extractvalue { i64, i1 } %33, 0
   309    %35 = extractvalue { i64, i1 } %33, 1
   310    br i1 %35, label %_llgo_14, label %_llgo_15
   311  
   312  _llgo_14:                                         ; preds = %_llgo_13
   313    call void @main.printuint(i64 %34)
   314    br label %_llgo_1
   315  
   316  _llgo_15:                                         ; preds = %_llgo_13
   317    %36 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 8)
   318    %37 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %36)
   319    %38 = extractvalue { i64, i1 } %37, 0
   320    %39 = trunc i64 %38 to i8
   321    %40 = extractvalue { i64, i1 } %37, 1
   322    br i1 %40, label %_llgo_16, label %_llgo_17
   323  
   324  _llgo_16:                                         ; preds = %_llgo_15
   325    %41 = zext i8 %39 to i64
   326    call void @main.printuint(i64 %41)
   327    br label %_llgo_1
   328  
   329  _llgo_17:                                         ; preds = %_llgo_15
   330    %42 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 9)
   331    %43 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %42)
   332    %44 = extractvalue { i64, i1 } %43, 0
   333    %45 = trunc i64 %44 to i16
   334    %46 = extractvalue { i64, i1 } %43, 1
   335    br i1 %46, label %_llgo_18, label %_llgo_19
   336  
   337  _llgo_18:                                         ; preds = %_llgo_17
   338    %47 = zext i16 %45 to i64
   339    call void @main.printuint(i64 %47)
   340    br label %_llgo_1
   341  
   342  _llgo_19:                                         ; preds = %_llgo_17
   343    %48 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 10)
   344    %49 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %48)
   345    %50 = extractvalue { i64, i1 } %49, 0
   346    %51 = trunc i64 %50 to i32
   347    %52 = extractvalue { i64, i1 } %49, 1
   348    br i1 %52, label %_llgo_20, label %_llgo_21
   349  
   350  _llgo_20:                                         ; preds = %_llgo_19
   351    %53 = zext i32 %51 to i64
   352    call void @main.printuint(i64 %53)
   353    br label %_llgo_1
   354  
   355  _llgo_21:                                         ; preds = %_llgo_19
   356    %54 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 11)
   357    %55 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %54)
   358    %56 = extractvalue { i64, i1 } %55, 0
   359    %57 = extractvalue { i64, i1 } %55, 1
   360    br i1 %57, label %_llgo_22, label %_llgo_23
   361  
   362  _llgo_22:                                         ; preds = %_llgo_21
   363    call void @main.printuint(i64 %56)
   364    br label %_llgo_1
   365  
   366  _llgo_23:                                         ; preds = %_llgo_21
   367    %58 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 12)
   368    %59 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %58)
   369    %60 = extractvalue { i64, i1 } %59, 0
   370    %61 = extractvalue { i64, i1 } %59, 1
   371    br i1 %61, label %_llgo_24, label %_llgo_25
   372  
   373  _llgo_24:                                         ; preds = %_llgo_23
   374    call void @main.printuint(i64 %60)
   375    br label %_llgo_1
   376  
   377  _llgo_25:                                         ; preds = %_llgo_23
   378    %62 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 13)
   379    %63 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %62)
   380    %64 = extractvalue { i64, i1 } %63, 0
   381    %65 = trunc i64 %64 to i32
   382    %66 = bitcast i32 %65 to float
   383    %67 = extractvalue { i64, i1 } %63, 1
   384    br i1 %67, label %_llgo_26, label %_llgo_27
   385  
   386  _llgo_26:                                         ; preds = %_llgo_25
   387    %68 = fpext float %66 to double
   388    call void @main.printfloat(double %68)
   389    br label %_llgo_1
   390  
   391  _llgo_27:                                         ; preds = %_llgo_25
   392    %69 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 14)
   393    %70 = call { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %69)
   394    %71 = extractvalue { i64, i1 } %70, 0
   395    %72 = bitcast i64 %71 to double
   396    %73 = extractvalue { i64, i1 } %70, 1
   397    br i1 %73, label %_llgo_28, label %_llgo_29
   398  
   399  _llgo_28:                                         ; preds = %_llgo_27
   400    call void @main.printfloat(double %72)
   401    br label %_llgo_1
   402  
   403  _llgo_29:                                         ; preds = %_llgo_27
   404    %74 = call ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64 24)
   405    %75 = call { %"github.com/goplus/llgo/internal/runtime.String", i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2String"(%"github.com/goplus/llgo/internal/runtime.iface" %0, ptr %74)
   406    %76 = extractvalue { %"github.com/goplus/llgo/internal/runtime.String", i1 } %75, 0
   407    %77 = extractvalue { %"github.com/goplus/llgo/internal/runtime.String", i1 } %75, 1
   408    br i1 %77, label %_llgo_30, label %_llgo_1
   409  
   410  _llgo_30:                                         ; preds = %_llgo_29
   411    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %76)
   412    br label %_llgo_1
   413  }
   414  
   415  define void @main.printbool(i1 %0) {
   416  _llgo_0:
   417    br i1 %0, label %_llgo_1, label %_llgo_3
   418  
   419  _llgo_1:                                          ; preds = %_llgo_0
   420    %1 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @5, i64 4)
   421    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %1)
   422    br label %_llgo_2
   423  
   424  _llgo_2:                                          ; preds = %_llgo_3, %_llgo_1
   425    ret void
   426  
   427  _llgo_3:                                          ; preds = %_llgo_0
   428    %2 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @6, i64 5)
   429    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %2)
   430    br label %_llgo_2
   431  }
   432  
   433  define void @main.printfloat(double %0) {
   434  _llgo_0:
   435    %1 = fcmp one double %0, %0
   436    br i1 %1, label %_llgo_1, label %_llgo_3
   437  
   438  _llgo_1:                                          ; preds = %_llgo_0
   439    %2 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @7, i64 3)
   440    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %2)
   441    ret void
   442  
   443  _llgo_2:                                          ; preds = %_llgo_7
   444    %3 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @8, i64 4)
   445    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %3)
   446    ret void
   447  
   448  _llgo_3:                                          ; preds = %_llgo_0
   449    %4 = fadd double %0, %0
   450    %5 = fcmp oeq double %4, %0
   451    br i1 %5, label %_llgo_6, label %_llgo_7
   452  
   453  _llgo_4:                                          ; preds = %_llgo_10
   454    %6 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @9, i64 4)
   455    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %6)
   456    ret void
   457  
   458  _llgo_5:                                          ; preds = %_llgo_7
   459    %7 = fadd double %0, %0
   460    %8 = fcmp oeq double %7, %0
   461    br i1 %8, label %_llgo_9, label %_llgo_10
   462  
   463  _llgo_6:                                          ; preds = %_llgo_3
   464    %9 = fcmp ogt double %0, 0.000000e+00
   465    br label %_llgo_7
   466  
   467  _llgo_7:                                          ; preds = %_llgo_6, %_llgo_3
   468    %10 = phi i1 [ false, %_llgo_3 ], [ %9, %_llgo_6 ]
   469    br i1 %10, label %_llgo_2, label %_llgo_5
   470  
   471  _llgo_8:                                          ; preds = %_llgo_10
   472    %11 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 14)
   473    %12 = getelementptr inbounds i8, ptr %11, i64 0
   474    store i8 43, ptr %12, align 1
   475    %13 = fcmp oeq double %0, 0.000000e+00
   476    br i1 %13, label %_llgo_11, label %_llgo_13
   477  
   478  _llgo_9:                                          ; preds = %_llgo_5
   479    %14 = fcmp olt double %0, 0.000000e+00
   480    br label %_llgo_10
   481  
   482  _llgo_10:                                         ; preds = %_llgo_9, %_llgo_5
   483    %15 = phi i1 [ false, %_llgo_5 ], [ %14, %_llgo_9 ]
   484    br i1 %15, label %_llgo_4, label %_llgo_8
   485  
   486  _llgo_11:                                         ; preds = %_llgo_8
   487    %16 = fdiv double 1.000000e+00, %0
   488    %17 = fcmp olt double %16, 0.000000e+00
   489    br i1 %17, label %_llgo_14, label %_llgo_12
   490  
   491  _llgo_12:                                         ; preds = %_llgo_24, %_llgo_22, %_llgo_14, %_llgo_11
   492    %18 = phi double [ %0, %_llgo_11 ], [ %36, %_llgo_22 ], [ %0, %_llgo_14 ], [ %42, %_llgo_24 ]
   493    %19 = phi i64 [ 0, %_llgo_11 ], [ %32, %_llgo_22 ], [ 0, %_llgo_14 ], [ %41, %_llgo_24 ]
   494    br label %_llgo_27
   495  
   496  _llgo_13:                                         ; preds = %_llgo_8
   497    %20 = fcmp olt double %0, 0.000000e+00
   498    br i1 %20, label %_llgo_15, label %_llgo_17
   499  
   500  _llgo_14:                                         ; preds = %_llgo_11
   501    %21 = getelementptr inbounds i8, ptr %11, i64 0
   502    store i8 45, ptr %21, align 1
   503    br label %_llgo_12
   504  
   505  _llgo_15:                                         ; preds = %_llgo_13
   506    %22 = fneg double %0
   507    %23 = getelementptr inbounds i8, ptr %11, i64 0
   508    store i8 45, ptr %23, align 1
   509    br label %_llgo_17
   510  
   511  _llgo_16:                                         ; preds = %_llgo_17
   512    %24 = add i64 %27, 1
   513    %25 = fdiv double %26, 1.000000e+01
   514    br label %_llgo_17
   515  
   516  _llgo_17:                                         ; preds = %_llgo_16, %_llgo_15, %_llgo_13
   517    %26 = phi double [ %0, %_llgo_13 ], [ %25, %_llgo_16 ], [ %22, %_llgo_15 ]
   518    %27 = phi i64 [ 0, %_llgo_13 ], [ %24, %_llgo_16 ], [ 0, %_llgo_15 ]
   519    %28 = fcmp oge double %26, 1.000000e+01
   520    br i1 %28, label %_llgo_16, label %_llgo_20
   521  
   522  _llgo_18:                                         ; preds = %_llgo_20
   523    %29 = sub i64 %32, 1
   524    %30 = fmul double %31, 1.000000e+01
   525    br label %_llgo_20
   526  
   527  _llgo_19:                                         ; preds = %_llgo_20
   528    br label %_llgo_23
   529  
   530  _llgo_20:                                         ; preds = %_llgo_18, %_llgo_17
   531    %31 = phi double [ %26, %_llgo_17 ], [ %30, %_llgo_18 ]
   532    %32 = phi i64 [ %27, %_llgo_17 ], [ %29, %_llgo_18 ]
   533    %33 = fcmp olt double %31, 1.000000e+00
   534    br i1 %33, label %_llgo_18, label %_llgo_19
   535  
   536  _llgo_21:                                         ; preds = %_llgo_23
   537    %34 = fdiv double %38, 1.000000e+01
   538    %35 = add i64 %39, 1
   539    br label %_llgo_23
   540  
   541  _llgo_22:                                         ; preds = %_llgo_23
   542    %36 = fadd double %31, %38
   543    %37 = fcmp oge double %36, 1.000000e+01
   544    br i1 %37, label %_llgo_24, label %_llgo_12
   545  
   546  _llgo_23:                                         ; preds = %_llgo_21, %_llgo_19
   547    %38 = phi double [ 5.000000e+00, %_llgo_19 ], [ %34, %_llgo_21 ]
   548    %39 = phi i64 [ 0, %_llgo_19 ], [ %35, %_llgo_21 ]
   549    %40 = icmp slt i64 %39, 7
   550    br i1 %40, label %_llgo_21, label %_llgo_22
   551  
   552  _llgo_24:                                         ; preds = %_llgo_22
   553    %41 = add i64 %32, 1
   554    %42 = fdiv double %36, 1.000000e+01
   555    br label %_llgo_12
   556  
   557  _llgo_25:                                         ; preds = %_llgo_27
   558    %43 = fptosi double %60 to i64
   559    %44 = add i64 %61, 2
   560    %45 = add i64 %43, 48
   561    %46 = trunc i64 %45 to i8
   562    %47 = icmp slt i64 %44, 0
   563    call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %47)
   564    %48 = getelementptr inbounds i8, ptr %11, i64 %44
   565    store i8 %46, ptr %48, align 1
   566    %49 = sitofp i64 %43 to double
   567    %50 = fsub double %60, %49
   568    %51 = fmul double %50, 1.000000e+01
   569    %52 = add i64 %61, 1
   570    br label %_llgo_27
   571  
   572  _llgo_26:                                         ; preds = %_llgo_27
   573    %53 = getelementptr inbounds i8, ptr %11, i64 2
   574    %54 = load i8, ptr %53, align 1
   575    %55 = getelementptr inbounds i8, ptr %11, i64 1
   576    store i8 %54, ptr %55, align 1
   577    %56 = getelementptr inbounds i8, ptr %11, i64 2
   578    store i8 46, ptr %56, align 1
   579    %57 = getelementptr inbounds i8, ptr %11, i64 9
   580    store i8 101, ptr %57, align 1
   581    %58 = getelementptr inbounds i8, ptr %11, i64 10
   582    store i8 43, ptr %58, align 1
   583    %59 = icmp slt i64 %19, 0
   584    br i1 %59, label %_llgo_28, label %_llgo_29
   585  
   586  _llgo_27:                                         ; preds = %_llgo_25, %_llgo_12
   587    %60 = phi double [ %18, %_llgo_12 ], [ %51, %_llgo_25 ]
   588    %61 = phi i64 [ 0, %_llgo_12 ], [ %52, %_llgo_25 ]
   589    %62 = icmp slt i64 %61, 7
   590    br i1 %62, label %_llgo_25, label %_llgo_26
   591  
   592  _llgo_28:                                         ; preds = %_llgo_26
   593    %63 = sub i64 0, %19
   594    %64 = getelementptr inbounds i8, ptr %11, i64 10
   595    store i8 45, ptr %64, align 1
   596    br label %_llgo_29
   597  
   598  _llgo_29:                                         ; preds = %_llgo_28, %_llgo_26
   599    %65 = phi i64 [ %19, %_llgo_26 ], [ %63, %_llgo_28 ]
   600    %66 = sdiv i64 %65, 100
   601    %67 = trunc i64 %66 to i8
   602    %68 = add i8 %67, 48
   603    %69 = getelementptr inbounds i8, ptr %11, i64 11
   604    store i8 %68, ptr %69, align 1
   605    %70 = sdiv i64 %65, 10
   606    %71 = trunc i64 %70 to i8
   607    %72 = urem i8 %71, 10
   608    %73 = add i8 %72, 48
   609    %74 = getelementptr inbounds i8, ptr %11, i64 12
   610    store i8 %73, ptr %74, align 1
   611    %75 = srem i64 %65, 10
   612    %76 = trunc i64 %75 to i8
   613    %77 = add i8 %76, 48
   614    %78 = getelementptr inbounds i8, ptr %11, i64 13
   615    store i8 %77, ptr %78, align 1
   616    %79 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %11, i64 1, i64 14, i64 0, i64 14, i64 14)
   617    call void @main.gwrite(%"github.com/goplus/llgo/internal/runtime.Slice" %79)
   618    ret void
   619  }
   620  
   621  define void @main.printhex(i64 %0) {
   622  _llgo_0:
   623    %1 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 100)
   624    br label %_llgo_3
   625  
   626  _llgo_1:                                          ; preds = %_llgo_3
   627    %2 = urem i64 %17, 16
   628    %3 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @10, i64 16)
   629    %4 = extractvalue %"github.com/goplus/llgo/internal/runtime.String" %3, 0
   630    %5 = getelementptr inbounds i8, ptr %4, i64 %2
   631    %6 = load i8, ptr %5, align 1
   632    %7 = icmp slt i64 %18, 0
   633    call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %7)
   634    %8 = getelementptr inbounds i8, ptr %1, i64 %18
   635    store i8 %6, ptr %8, align 1
   636    %9 = icmp ult i64 %17, 16
   637    br i1 %9, label %_llgo_5, label %_llgo_4
   638  
   639  _llgo_2:                                          ; preds = %_llgo_5, %_llgo_3
   640    %10 = sub i64 %18, 1
   641    %11 = icmp slt i64 %10, 0
   642    call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %11)
   643    %12 = getelementptr inbounds i8, ptr %1, i64 %10
   644    store i8 120, ptr %12, align 1
   645    %13 = sub i64 %10, 1
   646    %14 = icmp slt i64 %13, 0
   647    call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %14)
   648    %15 = getelementptr inbounds i8, ptr %1, i64 %13
   649    store i8 48, ptr %15, align 1
   650    %16 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %1, i64 1, i64 100, i64 %13, i64 100, i64 100)
   651    call void @main.gwrite(%"github.com/goplus/llgo/internal/runtime.Slice" %16)
   652    ret void
   653  
   654  _llgo_3:                                          ; preds = %_llgo_4, %_llgo_0
   655    %17 = phi i64 [ %0, %_llgo_0 ], [ %20, %_llgo_4 ]
   656    %18 = phi i64 [ 99, %_llgo_0 ], [ %21, %_llgo_4 ]
   657    %19 = icmp sgt i64 %18, 0
   658    br i1 %19, label %_llgo_1, label %_llgo_2
   659  
   660  _llgo_4:                                          ; preds = %_llgo_5, %_llgo_1
   661    %20 = udiv i64 %17, 16
   662    %21 = sub i64 %18, 1
   663    br label %_llgo_3
   664  
   665  _llgo_5:                                          ; preds = %_llgo_1
   666    %22 = sub i64 100, %18
   667    %23 = load i64, ptr @main.minhexdigits, align 4
   668    %24 = icmp sge i64 %22, %23
   669    br i1 %24, label %_llgo_2, label %_llgo_4
   670  }
   671  
   672  define void @main.printint(i64 %0) {
   673  _llgo_0:
   674    %1 = icmp slt i64 %0, 0
   675    br i1 %1, label %_llgo_1, label %_llgo_2
   676  
   677  _llgo_1:                                          ; preds = %_llgo_0
   678    %2 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @11, i64 1)
   679    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %2)
   680    %3 = sub i64 0, %0
   681    br label %_llgo_2
   682  
   683  _llgo_2:                                          ; preds = %_llgo_1, %_llgo_0
   684    %4 = phi i64 [ %0, %_llgo_0 ], [ %3, %_llgo_1 ]
   685    call void @main.printuint(i64 %4)
   686    ret void
   687  }
   688  
   689  define void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %0) {
   690  _llgo_0:
   691    %1 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %0, 1
   692    br label %_llgo_1
   693  
   694  _llgo_1:                                          ; preds = %_llgo_5, %_llgo_0
   695    %2 = phi i64 [ -1, %_llgo_0 ], [ %3, %_llgo_5 ]
   696    %3 = add i64 %2, 1
   697    %4 = icmp slt i64 %3, %1
   698    br i1 %4, label %_llgo_2, label %_llgo_3
   699  
   700  _llgo_2:                                          ; preds = %_llgo_1
   701    %5 = icmp slt i64 %3, 0
   702    call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %5)
   703    %6 = extractvalue %"github.com/goplus/llgo/internal/runtime.Slice" %0, 0
   704    %7 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.iface", ptr %6, i64 %3
   705    %8 = load %"github.com/goplus/llgo/internal/runtime.iface", ptr %7, align 8
   706    %9 = icmp ne i64 %3, 0
   707    br i1 %9, label %_llgo_4, label %_llgo_5
   708  
   709  _llgo_3:                                          ; preds = %_llgo_1
   710    call void @main.printnl()
   711    ret void
   712  
   713  _llgo_4:                                          ; preds = %_llgo_2
   714    %10 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @12, i64 1)
   715    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %10)
   716    br label %_llgo_5
   717  
   718  _llgo_5:                                          ; preds = %_llgo_4, %_llgo_2
   719    call void @main.printany(%"github.com/goplus/llgo/internal/runtime.iface" %8)
   720    br label %_llgo_1
   721  }
   722  
   723  define void @main.printnl() {
   724  _llgo_0:
   725    %0 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @13, i64 1)
   726    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %0)
   727    ret void
   728  }
   729  
   730  define void @main.printsp() {
   731  _llgo_0:
   732    %0 = call %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr @14, i64 1)
   733    call void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %0)
   734    ret void
   735  }
   736  
   737  define void @main.printstring(%"github.com/goplus/llgo/internal/runtime.String" %0) {
   738  _llgo_0:
   739    %1 = call %"github.com/goplus/llgo/internal/runtime.Slice" @main.bytes(%"github.com/goplus/llgo/internal/runtime.String" %0)
   740    call void @main.gwrite(%"github.com/goplus/llgo/internal/runtime.Slice" %1)
   741    ret void
   742  }
   743  
   744  define void @main.printuint(i64 %0) {
   745  _llgo_0:
   746    %1 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 100)
   747    br label %_llgo_3
   748  
   749  _llgo_1:                                          ; preds = %_llgo_3
   750    %2 = urem i64 %9, 10
   751    %3 = add i64 %2, 48
   752    %4 = trunc i64 %3 to i8
   753    %5 = icmp slt i64 %10, 0
   754    call void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1 %5)
   755    %6 = getelementptr inbounds i8, ptr %1, i64 %10
   756    store i8 %4, ptr %6, align 1
   757    %7 = icmp ult i64 %9, 10
   758    br i1 %7, label %_llgo_2, label %_llgo_4
   759  
   760  _llgo_2:                                          ; preds = %_llgo_3, %_llgo_1
   761    %8 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %1, i64 1, i64 100, i64 %10, i64 100, i64 100)
   762    call void @main.gwrite(%"github.com/goplus/llgo/internal/runtime.Slice" %8)
   763    ret void
   764  
   765  _llgo_3:                                          ; preds = %_llgo_4, %_llgo_0
   766    %9 = phi i64 [ %0, %_llgo_0 ], [ %12, %_llgo_4 ]
   767    %10 = phi i64 [ 99, %_llgo_0 ], [ %13, %_llgo_4 ]
   768    %11 = icmp sgt i64 %10, 0
   769    br i1 %11, label %_llgo_1, label %_llgo_2
   770  
   771  _llgo_4:                                          ; preds = %_llgo_1
   772    %12 = udiv i64 %9, 10
   773    %13 = sub i64 %10, 1
   774    br label %_llgo_3
   775  }
   776  
   777  define void @main.prinusub(i64 %0) {
   778  _llgo_0:
   779    %1 = sub i64 0, %0
   780    call void @main.printuint(i64 %1)
   781    ret void
   782  }
   783  
   784  define void @main.prinxor(i64 %0) {
   785  _llgo_0:
   786    %1 = xor i64 %0, -1
   787    call void @main.printint(i64 %1)
   788    ret void
   789  }
   790  
   791  define ptr @main.stringStructOf(ptr %0) {
   792  _llgo_0:
   793    ret ptr %0
   794  }
   795  
   796  declare ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64)
   797  
   798  declare i32 @printf(ptr, ...)
   799  
   800  declare void @"github.com/goplus/llgo/internal/runtime.init"()
   801  
   802  declare %"github.com/goplus/llgo/internal/runtime.String" @"github.com/goplus/llgo/internal/runtime.NewString"(ptr, i64)
   803  
   804  declare ptr @"github.com/goplus/llgo/internal/runtime.Basic"(i64)
   805  
   806  declare %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyInt"(ptr, i64)
   807  
   808  declare %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyString"(%"github.com/goplus/llgo/internal/runtime.String")
   809  
   810  declare %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr, i64, i64, i64, i64, i64)
   811  
   812  declare { i64, i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2Int"(%"github.com/goplus/llgo/internal/runtime.iface", ptr)
   813  
   814  declare { %"github.com/goplus/llgo/internal/runtime.String", i1 } @"github.com/goplus/llgo/internal/runtime.CheckI2String"(%"github.com/goplus/llgo/internal/runtime.iface", ptr)
   815  
   816  declare void @"github.com/goplus/llgo/internal/runtime.AssertIndexRange"(i1)