Advertisement
Guest User

Untitled

a guest
Jul 6th, 2019
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 36.69 KB | None | 0 0
  1. ; ModuleID = 'cholesky.ibc.opt.1'
  2. source_filename = "llvm-link"
  3. target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
  4. target triple = "x86_64-apple-macosx10.14.0"
  5.  
  6. %struct.__sFILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
  7. %struct.__sFILEX = type opaque
  8. %struct.__sbuf = type { i8*, i32 }
  9.  
  10. @.str = private unnamed_addr constant [12 x i8] c"value: %lf\0A\00", align 1
  11. @.str.1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
  12. @__stderrp = external global %struct.__sFILE*, align 8
  13. @.str.2 = private unnamed_addr constant [23 x i8] c"==BEGIN DUMP_ARRAYS==\0A\00", align 1
  14. @.str.3 = private unnamed_addr constant [15 x i8] c"begin dump: %s\00", align 1
  15. @.str.4 = private unnamed_addr constant [2 x i8] c"A\00", align 1
  16. @.str.5 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
  17. @.str.6 = private unnamed_addr constant [8 x i8] c"%0.2lf \00", align 1
  18. @.str.7 = private unnamed_addr constant [17 x i8] c"\0Aend   dump: %s\0A\00", align 1
  19. @.str.8 = private unnamed_addr constant [23 x i8] c"==END   DUMP_ARRAYS==\0A\00", align 1
  20. @polybench_program_total_flops = global double 0.000000e+00, align 8
  21. @polybench_t_start = common global double 0.000000e+00, align 8
  22. @polybench_t_end = common global double 0.000000e+00, align 8
  23. @polybench_c_start = common global i64 0, align 8
  24. @polybench_c_end = common global i64 0, align 8
  25. @__func__.polybench_flush_cache = private unnamed_addr constant [22 x i8] c"polybench_flush_cache\00", align 1
  26. @.str.9 = private unnamed_addr constant [12 x i8] c"polybench.c\00", align 1
  27. @.str.1.10 = private unnamed_addr constant [12 x i8] c"tmp <= 10.0\00", align 1
  28. @.str.2.11 = private unnamed_addr constant [7 x i8] c"%0.6f\0A\00", align 1
  29. @polybench_inter_array_padding_sz = internal global i64 0, align 8
  30. @.str.3.14 = private unnamed_addr constant [51 x i8] c"[PolyBench] posix_memalign: cannot allocate memory\00", align 1
  31. @0 = private unnamed_addr constant [11 x i8] c"function: \00"
  32. @1 = private unnamed_addr constant [9 x i8] c"sampling\00"
  33. @2 = private unnamed_addr constant [2 x i8] c"\0A\00"
  34. @3 = private unnamed_addr constant [15 x i8] c"cnt value: %d\0A\00"
  35. @4 = private unnamed_addr constant [14 x i8] c"eq value: %d\0A\00"
  36. @5 = private unnamed_addr constant [15 x i8] c"sub value: %d\0A\00"
  37.  
  38. ; Function Attrs: noinline nounwind ssp uwtable
  39. define void @print_value(double %f) #0 {
  40. entry:
  41.   %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), double %f) #6
  42.   ret void
  43. }
  44.  
  45. declare i32 @printf(i8*, ...) #1
  46.  
  47. ; Function Attrs: noinline nounwind ssp uwtable
  48. define i32 @main(i32 %argc, i8** %argv) #0 {
  49. entry:
  50.   %call = call i8* @polybench_alloc_data(i64 4000000, i32 8)
  51.   %arraydecay = bitcast i8* %call to [2000 x double]*
  52.   call void @init_array(i32 2000, [2000 x double]* %arraydecay)
  53.   call void @kernel_cholesky(i32 2000, [2000 x double]* %arraydecay)
  54.   %cmp = icmp sgt i32 %argc, 42
  55.   br i1 %cmp, label %land.lhs.true, label %if.end
  56.  
  57. land.lhs.true:                                    ; preds = %entry
  58.   %tmp = load i8*, i8** %argv, align 8
  59.   %strcmpload = load i8, i8* %tmp, align 1
  60.   %tobool = icmp eq i8 %strcmpload, 0
  61.   br i1 %tobool, label %if.then, label %if.end
  62.  
  63. if.then:                                          ; preds = %land.lhs.true
  64.   call void @print_array(i32 2000, [2000 x double]* %arraydecay)
  65.   br label %if.end
  66.  
  67. if.end:                                           ; preds = %if.then, %land.lhs.true, %entry
  68.   call void @free(i8* %call)
  69.   ret i32 0
  70. }
  71.  
  72. ; Function Attrs: noinline nounwind ssp uwtable
  73. define internal void @init_array(i32 %n, [2000 x double]* %A) #0 {
  74. entry:
  75.   %tmp = add i32 %n, -1
  76.   %tmp34 = sext i32 %n to i64
  77.   br label %for.cond
  78.  
  79. for.cond:                                         ; preds = %for.inc23, %entry
  80.   %indvars.iv32 = phi i64 [ %indvars.iv.next33, %for.inc23 ], [ 1, %entry ]
  81.   %indvars.iv26 = phi i64 [ %indvars.iv.next27, %for.inc23 ], [ 0, %entry ]
  82.   %cmp = icmp slt i64 %indvars.iv26, %tmp34
  83.   br i1 %cmp, label %for.body, label %for.end25
  84.  
  85. for.body:                                         ; preds = %for.cond
  86.   br label %for.cond1
  87.  
  88. for.cond1:                                        ; preds = %for.inc, %for.body
  89.   %indvars.iv19 = phi i64 [ %indvars.iv.next20, %for.inc ], [ 0, %for.body ]
  90.   %exitcond25 = icmp eq i64 %indvars.iv19, %indvars.iv32
  91.   br i1 %exitcond25, label %for.end, label %for.body3
  92.  
  93. for.body3:                                        ; preds = %for.cond1
  94.   %tmp35 = sub nsw i64 0, %indvars.iv19
  95.   %tmp36 = trunc i64 %tmp35 to i32
  96.   %rem = srem i32 %tmp36, %n
  97.   %conv = sitofp i32 %rem to double
  98.   %conv4 = sitofp i32 %n to double
  99.   %div = fdiv double %conv, %conv4
  100.   %add = fadd double %div, 1.000000e+00
  101.   %arrayidx6 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv26, i64 %indvars.iv19
  102.   store double %add, double* %arrayidx6, align 8
  103.   br label %for.inc
  104.  
  105. for.inc:                                          ; preds = %for.body3
  106.   %indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 1
  107.   br label %for.cond1
  108.  
  109. for.end:                                          ; preds = %for.cond1
  110.   br label %for.cond8
  111.  
  112. for.cond8:                                        ; preds = %for.inc16, %for.end
  113.   %indvars.iv28 = phi i64 [ %indvars.iv.next29, %for.inc16 ], [ %indvars.iv26, %for.end ]
  114.   %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1
  115.   %wide.trip.count30 = zext i32 %tmp to i64
  116.   %exitcond31 = icmp ne i64 %indvars.iv28, %wide.trip.count30
  117.   br i1 %exitcond31, label %for.body11, label %for.end18
  118.  
  119. for.body11:                                       ; preds = %for.cond8
  120.   %arrayidx15 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv26, i64 %indvars.iv.next29
  121.   store double 0.000000e+00, double* %arrayidx15, align 8
  122.   br label %for.inc16
  123.  
  124. for.inc16:                                        ; preds = %for.body11
  125.   br label %for.cond8
  126.  
  127. for.end18:                                        ; preds = %for.cond8
  128.   %arrayidx22 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv26, i64 %indvars.iv26
  129.   store double 1.000000e+00, double* %arrayidx22, align 8
  130.   br label %for.inc23
  131.  
  132. for.inc23:                                        ; preds = %for.end18
  133.   %indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1
  134.   %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1
  135.   br label %for.cond
  136.  
  137. for.end25:                                        ; preds = %for.cond
  138.   call void @print_value(double 2.000000e+00)
  139.   %call = call i8* @polybench_alloc_data(i64 4000000, i32 8)
  140.   %tmp37 = bitcast i8* %call to [2000 x [2000 x double]]*
  141.   %tmp38 = sext i32 %n to i64
  142.   br label %for.cond26
  143.  
  144. for.cond26:                                       ; preds = %for.inc41, %for.end25
  145.   %indvars.iv17 = phi i64 [ %indvars.iv.next18, %for.inc41 ], [ 0, %for.end25 ]
  146.   %cmp27 = icmp slt i64 %indvars.iv17, %tmp38
  147.   br i1 %cmp27, label %for.body29, label %for.end43
  148.  
  149. for.body29:                                       ; preds = %for.cond26
  150.   br label %for.cond30
  151.  
  152. for.cond30:                                       ; preds = %for.inc38, %for.body29
  153.   %indvars.iv13 = phi i64 [ %indvars.iv.next14, %for.inc38 ], [ 0, %for.body29 ]
  154.   %wide.trip.count15 = zext i32 %n to i64
  155.   %exitcond16 = icmp ne i64 %indvars.iv13, %wide.trip.count15
  156.   br i1 %exitcond16, label %for.body33, label %for.end40
  157.  
  158. for.body33:                                       ; preds = %for.cond30
  159.   %arrayidx37 = getelementptr inbounds [2000 x [2000 x double]], [2000 x [2000 x double]]* %tmp37, i64 0, i64 %indvars.iv17, i64 %indvars.iv13
  160.   store double 0.000000e+00, double* %arrayidx37, align 8
  161.   br label %for.inc38
  162.  
  163. for.inc38:                                        ; preds = %for.body33
  164.   %indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1
  165.   br label %for.cond30
  166.  
  167. for.end40:                                        ; preds = %for.cond30
  168.   br label %for.inc41
  169.  
  170. for.inc41:                                        ; preds = %for.end40
  171.   %indvars.iv.next18 = add nuw nsw i64 %indvars.iv17, 1
  172.   br label %for.cond26
  173.  
  174. for.end43:                                        ; preds = %for.cond26
  175.   %call1 = call i1 @sampling(i32 %n, [2000 x double]* %A)
  176.   br i1 %call1, label %for.end43.split.c, label %for.end43.split
  177.  
  178. for.end43.split:                                  ; preds = %for.end43
  179.   %tmp39 = sext i32 %n to i64
  180.   br label %for.cond44
  181.  
  182. for.cond44:                                       ; preds = %for.inc75, %for.end43.split
  183.   %indvars.iv11 = phi i64 [ %indvars.iv.next12, %for.inc75 ], [ 0, %for.end43.split ]
  184.   %cmp45 = icmp slt i64 %indvars.iv11, %tmp39
  185.   br i1 %cmp45, label %for.body47, label %for.end77
  186.  
  187. for.body47:                                       ; preds = %for.cond44
  188.   br label %for.cond48
  189.  
  190. for.cond48:                                       ; preds = %for.inc72, %for.body47
  191.   %indvars.iv7 = phi i64 [ %indvars.iv.next8, %for.inc72 ], [ 0, %for.body47 ]
  192.   %wide.trip.count9 = zext i32 %n to i64
  193.   %exitcond10 = icmp ne i64 %indvars.iv7, %wide.trip.count9
  194.   br i1 %exitcond10, label %for.body51, label %for.end74
  195.  
  196. for.body51:                                       ; preds = %for.cond48
  197.   br label %for.cond52
  198.  
  199. for.cond52:                                       ; preds = %for.inc69, %for.body51
  200.   %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc69 ], [ 0, %for.body51 ]
  201.   %wide.trip.count5 = zext i32 %n to i64
  202.   %exitcond6 = icmp ne i64 %indvars.iv3, %wide.trip.count5
  203.   br i1 %exitcond6, label %for.body55, label %for.end71
  204.  
  205. for.body55:                                       ; preds = %for.cond52
  206.   %arrayidx59 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv7, i64 %indvars.iv11
  207.   %tmp40 = load double, double* %arrayidx59, align 8
  208.   %arrayidx63 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv3, i64 %indvars.iv11
  209.   %tmp41 = load double, double* %arrayidx63, align 8
  210.   %mul = fmul double %tmp40, %tmp41
  211.   %arrayidx67 = getelementptr inbounds [2000 x [2000 x double]], [2000 x [2000 x double]]* %tmp37, i64 0, i64 %indvars.iv7, i64 %indvars.iv3
  212.   %tmp42 = load double, double* %arrayidx67, align 8
  213.   %add68 = fadd double %tmp42, %mul
  214.   store double %add68, double* %arrayidx67, align 8
  215.   br label %split
  216.  
  217. split:                                            ; preds = %for.body55
  218.   br label %for.inc69
  219.  
  220. for.inc69:                                        ; preds = %split
  221.   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
  222.   br label %for.cond52
  223.  
  224. for.end71:                                        ; preds = %for.cond52
  225.   br label %for.inc72
  226.  
  227. for.inc72:                                        ; preds = %for.end71
  228.   %indvars.iv.next8 = add nuw nsw i64 %indvars.iv7, 1
  229.   br label %for.cond48
  230.  
  231. for.end74:                                        ; preds = %for.cond48
  232.   br label %for.inc75
  233.  
  234. for.inc75:                                        ; preds = %for.end74
  235.   %indvars.iv.next12 = add nuw nsw i64 %indvars.iv11, 1
  236.   br label %for.cond44
  237.  
  238. for.end77:                                        ; preds = %for.cond44.c, %for.cond44
  239.   %tmp43 = sext i32 %n to i64
  240.   br label %for.cond78
  241.  
  242. for.cond78:                                       ; preds = %for.inc97, %for.end77
  243.   %indvars.iv1 = phi i64 [ %indvars.iv.next2, %for.inc97 ], [ 0, %for.end77 ]
  244.   %cmp79 = icmp slt i64 %indvars.iv1, %tmp43
  245.   br i1 %cmp79, label %for.body81, label %for.end99
  246.  
  247. for.body81:                                       ; preds = %for.cond78
  248.   br label %for.cond82
  249.  
  250. for.cond82:                                       ; preds = %for.inc94, %for.body81
  251.   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc94 ], [ 0, %for.body81 ]
  252.   %wide.trip.count = zext i32 %n to i64
  253.   %exitcond = icmp ne i64 %indvars.iv, %wide.trip.count
  254.   br i1 %exitcond, label %for.body85, label %for.end96
  255.  
  256. for.body85:                                       ; preds = %for.cond82
  257.   %arrayidx89 = getelementptr inbounds [2000 x [2000 x double]], [2000 x [2000 x double]]* %tmp37, i64 0, i64 %indvars.iv1, i64 %indvars.iv
  258.   %tmp44 = bitcast double* %arrayidx89 to i64*
  259.   %tmp45 = load i64, i64* %tmp44, align 8
  260.   %arrayidx93 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv1, i64 %indvars.iv
  261.   %tmp46 = bitcast double* %arrayidx93 to i64*
  262.   store i64 %tmp45, i64* %tmp46, align 8
  263.   br label %for.inc94
  264.  
  265. for.inc94:                                        ; preds = %for.body85
  266.   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  267.   br label %for.cond82
  268.  
  269. for.end96:                                        ; preds = %for.cond82
  270.   br label %for.inc97
  271.  
  272. for.inc97:                                        ; preds = %for.end96
  273.   %indvars.iv.next2 = add nuw nsw i64 %indvars.iv1, 1
  274.   br label %for.cond78
  275.  
  276. for.end99:                                        ; preds = %for.cond78
  277.   call void @free(i8* %call)
  278.   ret void
  279.  
  280. for.end43.split.c:                                ; preds = %for.end43
  281.   %tmp39.c = sext i32 %n to i64
  282.   br label %for.cond44.c
  283.  
  284. for.cond44.c:                                     ; preds = %for.end43.split.c, %for.inc75.c
  285.   %indvars.iv11.c = phi i64 [ %indvars.iv.next12.c, %for.inc75.c ], [ 0, %for.end43.split.c ]
  286.   %cmp45.c = icmp slt i64 %indvars.iv11.c, %tmp39.c
  287.   br i1 %cmp45.c, label %for.body47.c, label %for.end77
  288.  
  289. for.body47.c:                                     ; preds = %for.cond44.c
  290.   br label %for.cond48.c
  291.  
  292. for.cond48.c:                                     ; preds = %for.inc72.c, %for.body47.c
  293.   %indvars.iv7.c = phi i64 [ %indvars.iv.next8.c, %for.inc72.c ], [ 0, %for.body47.c ]
  294.   %wide.trip.count9.c = zext i32 %n to i64
  295.   %exitcond10.c = icmp ne i64 %indvars.iv7.c, %wide.trip.count9.c
  296.   br i1 %exitcond10.c, label %for.body51.c, label %for.end74.c
  297.  
  298. for.end74.c:                                      ; preds = %for.cond48.c
  299.   br label %for.inc75.c
  300.  
  301. for.inc75.c:                                      ; preds = %for.end74.c
  302.   %indvars.iv.next12.c = add nuw nsw i64 %indvars.iv11.c, 1
  303.   br label %for.cond44.c
  304.  
  305. for.body51.c:                                     ; preds = %for.cond48.c
  306.   br label %for.cond52.c
  307.  
  308. for.cond52.c:                                     ; preds = %for.inc69.c, %for.body51.c
  309.   %indvars.iv3.c = phi i64 [ %indvars.iv.next4.c, %for.inc69.c ], [ 0, %for.body51.c ]
  310.   %wide.trip.count5.c = zext i32 %n to i64
  311.   %exitcond6.c = icmp ne i64 %indvars.iv3.c, %wide.trip.count5.c
  312.   br i1 %exitcond6.c, label %for.body55.c, label %for.end71.c
  313.  
  314. for.end71.c:                                      ; preds = %for.cond52.c
  315.   br label %for.inc72.c
  316.  
  317. for.inc72.c:                                      ; preds = %for.end71.c
  318.   %indvars.iv.next8.c = add nuw nsw i64 %indvars.iv7.c, 1
  319.   br label %for.cond48.c
  320.  
  321. for.body55.c:                                     ; preds = %for.cond52.c
  322.   %arrayidx59.c = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv7.c, i64 %indvars.iv11.c
  323.   %tmp40.c = load double, double* %arrayidx59.c, align 8
  324.   %0 = fcmp one double %tmp40.c, 0.000000e+00
  325.   br i1 %0, label %1, label %5
  326.  
  327. ; <label>:1:                                      ; preds = %for.body55.c
  328.   %arrayidx63.c = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv3.c, i64 %indvars.iv11.c
  329.   %tmp41.c = load double, double* %arrayidx63.c, align 8
  330.   %2 = fcmp one double %tmp41.c, 0.000000e+00
  331.   br i1 %2, label %3, label %4
  332.  
  333. ; <label>:3:                                      ; preds = %1
  334.   %mul.c = fmul double %tmp40.c, %tmp41.c
  335.   %arrayidx67.c = getelementptr inbounds [2000 x [2000 x double]], [2000 x [2000 x double]]* %tmp37, i64 0, i64 %indvars.iv7.c, i64 %indvars.iv3.c
  336.   %tmp42.c = load double, double* %arrayidx67.c, align 8
  337.   %add68.c = fadd double %tmp42.c, %mul.c
  338.   store double %add68.c, double* %arrayidx67.c, align 8
  339.   br label %4
  340.  
  341. ; <label>:4:                                      ; preds = %1, %3
  342.   br label %5
  343.  
  344. ; <label>:5:                                      ; preds = %for.body55.c, %4
  345.   br label %split.c
  346.  
  347. for.inc69.c:                                      ; preds = %split.c
  348.   %indvars.iv.next4.c = add nuw nsw i64 %indvars.iv3.c, 1
  349.   br label %for.cond52.c
  350.  
  351. split.c:                                          ; preds = %5
  352.   br label %for.inc69.c
  353. }
  354.  
  355. ; Function Attrs: noinline nounwind ssp uwtable
  356. define internal void @kernel_cholesky(i32 %n, [2000 x double]* %A) #0 {
  357. entry:
  358.   %tmp = sext i32 %n to i64
  359.   br label %for.cond
  360.  
  361. for.cond:                                         ; preds = %for.inc56, %entry
  362.   %indvars.iv8 = phi i64 [ %indvars.iv.next9, %for.inc56 ], [ 0, %entry ]
  363.   %cmp = icmp slt i64 %indvars.iv8, %tmp
  364.   br i1 %cmp, label %for.body, label %for.end58
  365.  
  366. for.body:                                         ; preds = %for.cond
  367.   br label %for.cond1
  368.  
  369. for.cond1:                                        ; preds = %for.inc25, %for.body
  370.   %indvars.iv1 = phi i64 [ %indvars.iv.next2, %for.inc25 ], [ 0, %for.body ]
  371.   %exitcond4 = icmp ne i64 %indvars.iv1, %indvars.iv8
  372.   br i1 %exitcond4, label %for.body3, label %for.end27
  373.  
  374. for.body3:                                        ; preds = %for.cond1
  375.   br label %for.cond4
  376.  
  377. for.cond4:                                        ; preds = %for.inc, %for.body3
  378.   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body3 ]
  379.   %exitcond = icmp ne i64 %indvars.iv, %indvars.iv1
  380.   br i1 %exitcond, label %for.body6, label %for.end
  381.  
  382. for.body6:                                        ; preds = %for.cond4
  383.   %arrayidx8 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv
  384.   %tmp10 = load double, double* %arrayidx8, align 8
  385.   %arrayidx12 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv1, i64 %indvars.iv
  386.   %tmp11 = load double, double* %arrayidx12, align 8
  387.   %mul = fmul double %tmp10, %tmp11
  388.   %arrayidx16 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv1
  389.   %tmp12 = load double, double* %arrayidx16, align 8
  390.   %sub = fsub double %tmp12, %mul
  391.   store double %sub, double* %arrayidx16, align 8
  392.   br label %split
  393.  
  394. split:                                            ; preds = %for.body6
  395.   br label %for.inc
  396.  
  397. for.inc:                                          ; preds = %split
  398.   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  399.   br label %for.cond4
  400.  
  401. for.end:                                          ; preds = %for.cond4
  402.   %arrayidx20 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv1, i64 %indvars.iv1
  403.   %tmp13 = load double, double* %arrayidx20, align 8
  404.   %arrayidx24 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv1
  405.   %tmp14 = load double, double* %arrayidx24, align 8
  406.   %div = fdiv double %tmp14, %tmp13
  407.   store double %div, double* %arrayidx24, align 8
  408.   br label %split1
  409.  
  410. split1:                                           ; preds = %for.end
  411.   br label %for.inc25
  412.  
  413. for.inc25:                                        ; preds = %split1
  414.   %indvars.iv.next2 = add nuw nsw i64 %indvars.iv1, 1
  415.   br label %for.cond1
  416.  
  417. for.end27:                                        ; preds = %for.cond1
  418.   br label %for.cond28
  419.  
  420. for.cond28:                                       ; preds = %for.inc45, %for.end27
  421.   %indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc45 ], [ 0, %for.end27 ]
  422.   %exitcond7 = icmp ne i64 %indvars.iv5, %indvars.iv8
  423.   br i1 %exitcond7, label %for.body30, label %for.end47
  424.  
  425. for.body30:                                       ; preds = %for.cond28
  426.   %arrayidx34 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv5
  427.   %tmp15 = load double, double* %arrayidx34, align 8
  428.   %mul39 = fmul double %tmp15, %tmp15
  429.   %arrayidx43 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv8
  430.   %tmp16 = load double, double* %arrayidx43, align 8
  431.   %sub44 = fsub double %tmp16, %mul39
  432.   store double %sub44, double* %arrayidx43, align 8
  433.   br label %split2
  434.  
  435. split2:                                           ; preds = %for.body30
  436.   br label %for.inc45
  437.  
  438. for.inc45:                                        ; preds = %split2
  439.   %indvars.iv.next6 = add nuw nsw i64 %indvars.iv5, 1
  440.   br label %for.cond28
  441.  
  442. for.end47:                                        ; preds = %for.cond28
  443.   %arrayidx51 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv8, i64 %indvars.iv8
  444.   %tmp17 = load double, double* %arrayidx51, align 8
  445.   %tmp18 = call double @llvm.sqrt.f64(double %tmp17)
  446.   store double %tmp18, double* %arrayidx51, align 8
  447.   br label %for.inc56
  448.  
  449. for.inc56:                                        ; preds = %for.end47
  450.   %indvars.iv.next9 = add nuw nsw i64 %indvars.iv8, 1
  451.   br label %for.cond
  452.  
  453. for.end58:                                        ; preds = %for.cond
  454.   ret void
  455. }
  456.  
  457. declare i32 @strcmp(i8*, i8*) #1
  458.  
  459. ; Function Attrs: noinline nounwind ssp uwtable
  460. define internal void @print_array(i32 %n, [2000 x double]* %A) #0 {
  461. entry:
  462.   %tmp = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  463.   %tmp7 = call i64 @fwrite(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0), i64 22, i64 1, %struct.__sFILE* %tmp)
  464.   %tmp8 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  465.   %call1 = call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %tmp8, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0)) #6
  466.   %tmp9 = sext i32 %n to i64
  467.   br label %for.cond
  468.  
  469. for.cond:                                         ; preds = %for.inc10, %entry
  470.   %indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc10 ], [ 0, %entry ]
  471.   %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc10 ], [ 1, %entry ]
  472.   %cmp = icmp slt i64 %indvars.iv5, %tmp9
  473.   br i1 %cmp, label %for.body, label %for.end12
  474.  
  475. for.body:                                         ; preds = %for.cond
  476.   br label %for.cond2
  477.  
  478. for.cond2:                                        ; preds = %for.inc, %for.body
  479.   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body ]
  480.   %exitcond = icmp eq i64 %indvars.iv, %indvars.iv3
  481.   br i1 %exitcond, label %for.end, label %for.body4
  482.  
  483. for.body4:                                        ; preds = %for.cond2
  484.   %tmp10 = trunc i64 %indvars.iv5 to i32
  485.   %mul = mul nsw i32 %tmp10, %n
  486.   %tmp11 = trunc i64 %indvars.iv to i32
  487.   %add = add nsw i32 %mul, %tmp11
  488.   %rem = srem i32 %add, 20
  489.   %cmp5 = icmp eq i32 %rem, 0
  490.   br i1 %cmp5, label %if.then, label %if.end
  491.  
  492. if.then:                                          ; preds = %for.body4
  493.   %tmp12 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  494.   %fputc = call i32 @fputc(i32 10, %struct.__sFILE* %tmp12)
  495.   br label %if.end
  496.  
  497. if.end:                                           ; preds = %if.then, %for.body4
  498.   %tmp13 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  499.   %arrayidx8 = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv5, i64 %indvars.iv
  500.   %tmp14 = load double, double* %arrayidx8, align 8
  501.   %call9 = call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %tmp13, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), double %tmp14) #6
  502.   br label %for.inc
  503.  
  504. for.inc:                                          ; preds = %if.end
  505.   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  506.   br label %for.cond2
  507.  
  508. for.end:                                          ; preds = %for.cond2
  509.   br label %for.inc10
  510.  
  511. for.inc10:                                        ; preds = %for.end
  512.   %indvars.iv.next6 = add nuw nsw i64 %indvars.iv5, 1
  513.   %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
  514.   br label %for.cond
  515.  
  516. for.end12:                                        ; preds = %for.cond
  517.   %tmp15 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  518.   %call13 = call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %tmp15, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0)) #6
  519.   %tmp16 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  520.   %tmp17 = call i64 @fwrite(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.8, i64 0, i64 0), i64 22, i64 1, %struct.__sFILE* %tmp16)
  521.   ret void
  522. }
  523.  
  524. declare void @free(i8*) #1
  525.  
  526. declare i32 @fprintf(%struct.__sFILE*, i8*, ...) #1
  527.  
  528. ; Function Attrs: nounwind readnone speculatable
  529. declare double @llvm.sqrt.f64(double) #2
  530.  
  531. ; Function Attrs: noinline nounwind ssp uwtable
  532. define void @polybench_flush_cache() #0 {
  533. entry:
  534.   %call = call i8* @calloc(i64 4194560, i64 8) #7
  535.   %tmp = bitcast i8* %call to double*
  536.   br label %for.cond
  537.  
  538. for.cond:                                         ; preds = %for.inc, %entry
  539.   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %entry ]
  540.   %tmp.0 = phi double [ 0.000000e+00, %entry ], [ %add, %for.inc ]
  541.   %exitcond = icmp ne i64 %indvars.iv, 4194560
  542.   br i1 %exitcond, label %for.body, label %for.end
  543.  
  544. for.body:                                         ; preds = %for.cond
  545.   br label %for.inc
  546.  
  547. for.inc:                                          ; preds = %for.body
  548.   %arrayidx = getelementptr inbounds double, double* %tmp, i64 %indvars.iv
  549.   %tmp1 = load double, double* %arrayidx, align 8
  550.   %add = fadd double %tmp.0, %tmp1
  551.   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  552.   br label %for.cond
  553.  
  554. for.end:                                          ; preds = %for.cond
  555.   %tmp.0.lcssa = phi double [ %tmp.0, %for.cond ]
  556.   %cmp2 = fcmp ugt double %tmp.0.lcssa, 1.000000e+01
  557.   br i1 %cmp2, label %cond.true, label %cond.false
  558.  
  559. cond.true:                                        ; preds = %for.end
  560.   call void @__assert_rtn(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @__func__.polybench_flush_cache, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), i32 123, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1.10, i64 0, i64 0)) #8
  561.   unreachable
  562.  
  563. bb:                                               ; No predecessors!
  564.   br label %cond.end
  565.  
  566. cond.false:                                       ; preds = %for.end
  567.   br label %cond.end
  568.  
  569. cond.end:                                         ; preds = %cond.false, %bb
  570.   call void @free(i8* %call)
  571.   ret void
  572. }
  573.  
  574. ; Function Attrs: allocsize(0,1)
  575. declare i8* @calloc(i64, i64) #3
  576.  
  577. ; Function Attrs: noreturn
  578. declare void @__assert_rtn(i8*, i8*, i32, i8*) #4
  579.  
  580. ; Function Attrs: noinline nounwind ssp uwtable
  581. entry:
  582.   call void @polybench_flush_cache()
  583.   ret void
  584. }
  585.  
  586. ; Function Attrs: noinline nounwind ssp uwtable
  587. define void @polybench_timer_start() #0 {
  588. entry:
  589.   %call = call double @rtclock()
  590.   store double %call, double* @polybench_t_start, align 8
  591.   ret void
  592. }
  593.  
  594. ; Function Attrs: noinline nounwind ssp uwtable
  595. define internal double @rtclock() #0 {
  596. entry:
  597.   ret double 0.000000e+00
  598. }
  599.  
  600. ; Function Attrs: noinline nounwind ssp uwtable
  601. define void @polybench_timer_stop() #0 {
  602. entry:
  603.   %call = call double @rtclock()
  604.   store double %call, double* @polybench_t_end, align 8
  605.   ret void
  606. }
  607.  
  608. ; Function Attrs: noinline nounwind ssp uwtable
  609. define void @polybench_timer_print() #0 {
  610. entry:
  611.   %tmp = load double, double* @polybench_t_end, align 8
  612.   %tmp1 = load double, double* @polybench_t_start, align 8
  613.   %sub = fsub double %tmp, %tmp1
  614.   %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2.11, i64 0, i64 0), double %sub) #6
  615.   ret void
  616. }
  617.  
  618. ; Function Attrs: noinline nounwind ssp uwtable
  619. define void @polybench_free_data(i8* %ptr) #0 {
  620. entry:
  621.   call void @free(i8* %ptr)
  622.   ret void
  623. }
  624.  
  625. ; Function Attrs: noinline nounwind ssp uwtable
  626. define i8* @polybench_alloc_data(i64 %n, i32 %elt_size) #0 {
  627. entry:
  628.   %conv = sext i32 %elt_size to i64
  629.   %mul = mul i64 %conv, %n
  630.   %call = call i8* @xmalloc(i64 %mul)
  631.   ret i8* %call
  632. }
  633.  
  634. ; Function Attrs: noinline nounwind ssp uwtable
  635. define internal i8* @xmalloc(i64 %alloc_sz) #0 {
  636. entry:
  637.   %ret = alloca i8*, align 8
  638.   store i8* null, i8** %ret, align 8
  639.   %tmp = load i64, i64* @polybench_inter_array_padding_sz, align 8
  640.   %add1 = add i64 %tmp, %alloc_sz
  641.   %call = call i32 @posix_memalign(i8** nonnull %ret, i64 4096, i64 %add1) #6
  642.   %tmp1 = load i8*, i8** %ret, align 8
  643.   %tobool = icmp eq i8* %tmp1, null
  644.   br i1 %tobool, label %if.then, label %lor.lhs.false
  645.  
  646. lor.lhs.false:                                    ; preds = %entry
  647.   %tobool2 = icmp eq i32 %call, 0
  648.   br i1 %tobool2, label %if.end, label %if.then
  649.  
  650. if.then:                                          ; preds = %lor.lhs.false, %entry
  651.   %tmp2 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
  652.   %tmp3 = call i64 @fwrite(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.3.14, i64 0, i64 0), i64 50, i64 1, %struct.__sFILE* %tmp2)
  653.   call void @exit(i32 1) #8
  654.   unreachable
  655.  
  656. if.end:                                           ; preds = %lor.lhs.false
  657.   ret i8* %tmp1
  658. }
  659.  
  660. declare i32 @posix_memalign(i8**, i64, i64) #1
  661.  
  662. ; Function Attrs: noreturn
  663. declare void @exit(i32) #5
  664.  
  665. ; Function Attrs: nounwind
  666. declare i64 @fwrite(i8* nocapture, i64, i64, %struct.__sFILE* nocapture) #6
  667.  
  668. ; Function Attrs: nounwind
  669. declare i32 @fputc(i32, %struct.__sFILE* nocapture) #6
  670.  
  671. ; Function Attrs: noinline nounwind ssp uwtable
  672. define private i1 @sampling(i32 %n, [2000 x double]* %A) #0 {
  673. entry.s:
  674.   %cnt = alloca i32
  675.   store i32 0, i32* %cnt
  676.   %eq = alloca i32
  677.   store i32 0, i32* %eq
  678.   br label %for.end43.split.s
  679.  
  680. for.end43.split.s:                                ; preds = %entry.s
  681.   %tmp39.s = sext i32 %n to i64
  682.   br label %for.cond44.s
  683.  
  684. for.cond44.s:                                     ; preds = %for.inc75.s, %for.end43.split.s
  685.   %indvars.iv11.s = phi i64 [ %indvars.iv.next12.s, %for.inc75.s ], [ 0, %for.end43.split.s ]
  686.   %cmp45.s = icmp slt i64 %indvars.iv11.s, %tmp39.s
  687.   br i1 %cmp45.s, label %for.body47.s, label %for.end77.s
  688.  
  689. for.body47.s:                                     ; preds = %for.cond44.s
  690.   br label %for.cond48.s
  691.  
  692. for.cond48.s:                                     ; preds = %for.inc72.s, %for.body47.s
  693.   %indvars.iv7.s = phi i64 [ %indvars.iv.next8.s, %for.inc72.s ], [ 0, %for.body47.s ]
  694.   %wide.trip.count9.s = zext i32 %n to i64
  695.   %exitcond10.s = icmp ne i64 %indvars.iv7.s, %wide.trip.count9.s
  696.   br i1 %exitcond10.s, label %for.body51.s, label %for.end74.s
  697.  
  698. for.body51.s:                                     ; preds = %for.cond48.s
  699.   br label %for.cond52.s
  700.  
  701. for.cond52.s:                                     ; preds = %for.inc69.s, %for.body51.s
  702.   %indvars.iv3.s = phi i64 [ %indvars.iv.next4.s, %for.inc69.s ], [ 0, %for.body51.s ]
  703.   %wide.trip.count5.s = zext i32 %n to i64
  704.   %exitcond6.s = icmp ne i64 %indvars.iv3.s, %wide.trip.count5.s
  705.   br i1 %exitcond6.s, label %for.body55.s, label %for.end71.s
  706.  
  707. for.body55.s:                                     ; preds = %for.cond52.s
  708.   %arrayidx59.s = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv7.s, i64 %indvars.iv11.s
  709.   %tmp40.s = load double, double* %arrayidx59.s, align 8
  710.   %arrayidx63.s = getelementptr inbounds [2000 x double], [2000 x double]* %A, i64 %indvars.iv3.s, i64 %indvars.iv11.s
  711.   %tmp41.s = load double, double* %arrayidx63.s, align 8
  712.   %mul.s = fmul double %tmp40.s, %tmp41.s
  713.   %arrayidx67.s = getelementptr inbounds [2000 x [2000 x double]], [2000 x [2000 x double]]* undef, i64 0, i64 %indvars.iv7.s, i64 %indvars.iv3.s
  714.   %tmp42.s = load double, double* %arrayidx67.s, align 8
  715.   %add68.s = fadd double %tmp42.s, %mul.s
  716.   %cnt1 = load i32, i32* %cnt
  717.   %cnt_inc = add i32 %cnt1, 1
  718.   store i32 %cnt_inc, i32* %cnt
  719.   %eq_counter = load i32, i32* %eq
  720.   %fcmp = fcmp oeq double %tmp42.s, %add68.s
  721.   %0 = select i1 %fcmp, i32 1, i32 0
  722.   %eq_inc = add i32 %eq_counter, %0
  723.   store i32 %eq_inc, i32* %eq
  724.   br label %for.body55.s.split
  725.  
  726. for.body55.s.split:                               ; preds = %for.body55.s
  727.   %1 = load i32, i32* %cnt
  728.   %2 = icmp slt i32 %1, 3
  729.   br i1 %2, label %for.inc69.s, label %function_exit
  730.  
  731. for.inc69.s:                                      ; preds = %for.body55.s.split
  732.   %indvars.iv.next4.s = add nuw nsw i64 %indvars.iv3.s, 1
  733.   br label %for.cond52.s
  734.  
  735. for.end71.s:                                      ; preds = %for.cond52.s
  736.   br label %for.inc72.s
  737.  
  738. for.inc72.s:                                      ; preds = %for.end71.s
  739.   %indvars.iv.next8.s = add nuw nsw i64 %indvars.iv7.s, 1
  740.   br label %for.cond48.s
  741.  
  742. for.end74.s:                                      ; preds = %for.cond48.s
  743.   br label %for.inc75.s
  744.  
  745. for.inc75.s:                                      ; preds = %for.end74.s
  746.   %indvars.iv.next12.s = add nuw nsw i64 %indvars.iv11.s, 1
  747.   br label %for.cond44.s
  748.  
  749. function_exit:                                    ; preds = %for.body55.s.split, %for.end77.s
  750.   %cnt2 = load i32, i32* %cnt
  751.   %eq3 = load i32, i32* %eq
  752.   %sub = sub i32 %cnt2, %eq3
  753.   %call_printf_dump = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @0, i32 0, i32 0))
  754.   %call_printf_dump4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @1, i32 0, i32 0))
  755.   %call_printf_dump5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @2, i32 0, i32 0))
  756.   %call_printf_dump6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @3, i32 0, i32 0), i32 %cnt2)
  757.   %call_printf_dump7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @4, i32 0, i32 0), i32 %eq3)
  758.   %call_printf_dump8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @5, i32 0, i32 0), i32 %sub)
  759.   %cmp = icmp sle i32 %sub, 2
  760.   %3 = select i1 %cmp, i1 true, i1 false
  761.   ret i1 %3
  762.  
  763. for.end77.s:                                      ; preds = %for.cond44.s
  764.   br label %function_exit
  765. }
  766.  
  767. attributes #0 = { noinline nounwind ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  768. attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  769. attributes #2 = { nounwind readnone speculatable }
  770. attributes #3 = { allocsize(0,1) "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  771. attributes #4 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="true" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  772. attributes #5 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  773. attributes #6 = { nounwind }
  774. attributes #7 = { nounwind allocsize(0,1) }
  775. attributes #8 = { noreturn nounwind }
  776.  
  777. !llvm.ident = !{!0, !0}
  778. !llvm.module.flags = !{!1, !2}
  779.  
  780. !0 = !{!"clang version 6.0.1 (tags/RELEASE_601/final 342957)"}
  781. !1 = !{i32 1, !"wchar_size", i32 4}
  782. !2 = !{i32 7, !"PIC Level", i32 2}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement