Advertisement
Guest User

Untitled

a guest
Jul 4th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 19.99 KB | None | 0 0
  1. ; ModuleID = 'test.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 [11 x i8] c"value: %f\0A\00", align 1
  11. @.str.1 = private unnamed_addr constant [2 x i8] c"r\00", align 1
  12. @.str.2 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
  13. @.str.3 = private unnamed_addr constant [3 x i8] c"%f\00", align 1
  14. @.str.4 = private unnamed_addr constant [18 x i8] c"matrices/%s_a.txt\00", align 1
  15. @.str.5 = private unnamed_addr constant [18 x i8] c"matrices/%s_b.txt\00", align 1
  16. @0 = private unnamed_addr constant [7 x i8] c"-----\0A\00"
  17. @1 = private unnamed_addr constant [18 x i8] c"value_before: %f\0A\00"
  18. @2 = private unnamed_addr constant [17 x i8] c"value_after: %f\0A\00"
  19. @3 = private unnamed_addr constant [9 x i8] c"cmp: %d\0A\00"
  20. @4 = private unnamed_addr constant [11 x i8] c"function: \00"
  21. @5 = private unnamed_addr constant [9 x i8] c"sampling\00"
  22. @6 = private unnamed_addr constant [2 x i8] c"\0A\00"
  23. @7 = private unnamed_addr constant [15 x i8] c"cnt value: %d\0A\00"
  24. @8 = private unnamed_addr constant [14 x i8] c"eq value: %d\0A\00"
  25. @9 = private unnamed_addr constant [15 x i8] c"sub value: %d\0A\00"
  26.  
  27. ; Function Attrs: noinline nounwind ssp uwtable
  28. define void @dump_value(float %f) #0 {
  29. entry:
  30.   %conv = fpext float %f to double
  31.   %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), double %conv) #3
  32.   ret void
  33. }
  34.  
  35. declare i32 @printf(i8*, ...) #1
  36.  
  37. ; Function Attrs: noinline nounwind ssp uwtable
  38. define float* @alloc_matrix(i32 %n) #0 {
  39. entry:
  40.   %conv = sext i32 %n to i64
  41.   %mul = shl nsw i64 %conv, 2
  42.   %mul2 = mul i64 %mul, %conv
  43.   %call = call i8* @malloc(i64 %mul2) #4
  44.   %tmp = bitcast i8* %call to float*
  45.   ret float* %tmp
  46. }
  47.  
  48. ; Function Attrs: allocsize(0)
  49. declare i8* @malloc(i64) #2
  50.  
  51. ; Function Attrs: noinline nounwind ssp uwtable
  52. define i32 @matrix_size(i8* %filename) #0 {
  53. entry:
  54.   %n = alloca i32, align 4
  55.   %call = call %struct.__sFILE* @"\01_fopen"(i8* %filename, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)) #3
  56.   %call1 = call i32 (%struct.__sFILE*, i8*, ...) @fscanf(%struct.__sFILE* %call, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32* nonnull %n) #3
  57.   store i32 %call1, i32* %n, align 4
  58.   %call2 = call i32 @fclose(%struct.__sFILE* %call) #3
  59.   %tmp = load i32, i32* %n, align 4
  60.   ret i32 %tmp
  61. }
  62.  
  63. declare %struct.__sFILE* @"\01_fopen"(i8*, i8*) #1
  64.  
  65. declare i32 @fscanf(%struct.__sFILE*, i8*, ...) #1
  66.  
  67. declare i32 @fclose(%struct.__sFILE*) #1
  68.  
  69. ; Function Attrs: noinline nounwind ssp uwtable
  70. define float* @read_matrix(i8* %filename, float* %m, i32 %n) #0 {
  71. entry:
  72.   %v = alloca float, align 4
  73.   %call = call %struct.__sFILE* @"\01_fopen"(i8* %filename, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)) #3
  74.   store float 0.000000e+00, float* %v, align 4
  75.   %tmp = sext i32 %n to i64
  76.   %tmp5 = sext i32 %n to i64
  77.   br label %for.cond
  78.  
  79. for.cond:                                         ; preds = %for.inc5, %entry
  80.   %indvars.iv2 = phi i64 [ %indvars.iv.next3, %for.inc5 ], [ 0, %entry ]
  81.   %cmp = icmp slt i64 %indvars.iv2, %tmp
  82.   br i1 %cmp, label %for.body, label %for.end7
  83.  
  84. for.body:                                         ; preds = %for.cond
  85.   br label %for.cond1
  86.  
  87. for.cond1:                                        ; preds = %for.inc, %for.body
  88.   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body ]
  89.   %wide.trip.count = zext i32 %n to i64
  90.   %exitcond = icmp ne i64 %indvars.iv, %wide.trip.count
  91.   br i1 %exitcond, label %for.body3, label %for.end
  92.  
  93. for.body3:                                        ; preds = %for.cond1
  94.   %call4 = call i32 (%struct.__sFILE*, i8*, ...) @fscanf(%struct.__sFILE* %call, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), float* nonnull %v) #3
  95.   %tmp6 = bitcast float* %v to i32*
  96.   %tmp7 = load i32, i32* %tmp6, align 4
  97.   %tmp8 = mul nsw i64 %indvars.iv2, %tmp5
  98.   %tmp9 = add nsw i64 %tmp8, %indvars.iv
  99.   %arrayidx = getelementptr inbounds float, float* %m, i64 %tmp9
  100.   %tmp10 = bitcast float* %arrayidx to i32*
  101.   store i32 %tmp7, i32* %tmp10, align 4
  102.   br label %for.inc
  103.  
  104. for.inc:                                          ; preds = %for.body3
  105.   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  106.   br label %for.cond1
  107.  
  108. for.end:                                          ; preds = %for.cond1
  109.   br label %for.inc5
  110.  
  111. for.inc5:                                         ; preds = %for.end
  112.   %indvars.iv.next3 = add nuw nsw i64 %indvars.iv2, 1
  113.   br label %for.cond
  114.  
  115. for.end7:                                         ; preds = %for.cond
  116.   %call8 = call i32 @fclose(%struct.__sFILE* %call) #3
  117.   ret float* %m
  118. }
  119.  
  120. ; Function Attrs: noinline nounwind ssp uwtable
  121. define void @matrix_mul(float* noalias %a, float* noalias %b, float* noalias %c, i32 %n) #0 {
  122. entry:
  123.   %call = call i1 @sampling(float* %a, float* %b, float* %c, i32 %n)
  124.   br i1 %call, label %entry.split.c, label %entry.split
  125.  
  126. entry.split:                                      ; preds = %entry
  127.   %tmp = sext i32 %n to i64
  128.   %tmp13 = sext i32 %n to i64
  129.   %tmp14 = sext i32 %n to i64
  130.   br label %for.cond
  131.  
  132. for.cond:                                         ; preds = %for.inc20, %entry.split
  133.   %indvars.iv9 = phi i64 [ %indvars.iv.next10, %for.inc20 ], [ 0, %entry.split ]
  134.   %cmp = icmp slt i64 %indvars.iv9, %tmp13
  135.   br i1 %cmp, label %for.body, label %for.end22
  136.  
  137. for.body:                                         ; preds = %for.cond
  138.   br label %for.cond1
  139.  
  140. for.cond1:                                        ; preds = %for.inc17, %for.body
  141.   %indvars.iv4 = phi i64 [ %indvars.iv.next5, %for.inc17 ], [ 0, %for.body ]
  142.   %wide.trip.count7 = zext i32 %n to i64
  143.   %exitcond8 = icmp ne i64 %indvars.iv4, %wide.trip.count7
  144.   br i1 %exitcond8, label %for.body3, label %for.end19
  145.  
  146. for.body3:                                        ; preds = %for.cond1
  147.   br label %for.cond4
  148.  
  149. for.cond4:                                        ; preds = %for.inc, %for.body3
  150.   %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body3 ]
  151.   %wide.trip.count = zext i32 %n to i64
  152.   %exitcond = icmp ne i64 %indvars.iv, %wide.trip.count
  153.   br i1 %exitcond, label %for.body6, label %for.end
  154.  
  155. for.body6:                                        ; preds = %for.cond4
  156.   %tmp15 = mul nsw i64 %indvars.iv9, %tmp14
  157.   %tmp16 = add nsw i64 %tmp15, %indvars.iv
  158.   %arrayidx = getelementptr inbounds float, float* %a, i64 %tmp16
  159.   %tmp17 = load float, float* %arrayidx, align 4
  160.   %tmp18 = mul nsw i64 %indvars.iv, %tmp
  161.   %tmp19 = add nsw i64 %tmp18, %indvars.iv4
  162.   %arrayidx10 = getelementptr inbounds float, float* %b, i64 %tmp19
  163.   %tmp20 = load float, float* %arrayidx10, align 4
  164.   %mul11 = fmul float %tmp17, %tmp20
  165.   %tmp21 = add nsw i64 %tmp15, %indvars.iv4
  166.   %arrayidx15 = getelementptr inbounds float, float* %c, i64 %tmp21
  167.   %tmp22 = load float, float* %arrayidx15, align 4
  168.   %add16 = fadd float %tmp22, %mul11
  169.   store float %add16, float* %arrayidx15, align 4
  170.   br label %split
  171.  
  172. split:                                            ; preds = %for.body6
  173.   br label %for.inc
  174.  
  175. for.inc:                                          ; preds = %split
  176.   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  177.   br label %for.cond4
  178.  
  179. for.end:                                          ; preds = %for.cond4
  180.   br label %for.inc17
  181.  
  182. for.inc17:                                        ; preds = %for.end
  183.   %indvars.iv.next5 = add nuw nsw i64 %indvars.iv4, 1
  184.   br label %for.cond1
  185.  
  186. for.end19:                                        ; preds = %for.cond1
  187.   br label %for.inc20
  188.  
  189. for.inc20:                                        ; preds = %for.end19
  190.   %indvars.iv.next10 = add nuw nsw i64 %indvars.iv9, 1
  191.   br label %for.cond
  192.  
  193. for.end22:                                        ; preds = %for.cond.c, %for.cond
  194.   ret void
  195.  
  196. entry.split.c:                                    ; preds = %entry
  197.   %tmp.c = sext i32 %n to i64
  198.   %tmp13.c = sext i32 %n to i64
  199.   %tmp14.c = sext i32 %n to i64
  200.   br label %for.cond.c
  201.  
  202. for.cond.c:                                       ; preds = %entry.split.c, %for.inc20.c
  203.   %indvars.iv9.c = phi i64 [ %indvars.iv.next10.c, %for.inc20.c ], [ 0, %entry.split.c ]
  204.   %cmp.c = icmp slt i64 %indvars.iv9.c, %tmp13.c
  205.   br i1 %cmp.c, label %for.body.c, label %for.end22
  206.  
  207. for.body.c:                                       ; preds = %for.cond.c
  208.   br label %for.cond1.c
  209.  
  210. for.cond1.c:                                      ; preds = %for.inc17.c, %for.body.c
  211.   %indvars.iv4.c = phi i64 [ %indvars.iv.next5.c, %for.inc17.c ], [ 0, %for.body.c ]
  212.   %wide.trip.count7.c = zext i32 %n to i64
  213.   %exitcond8.c = icmp ne i64 %indvars.iv4.c, %wide.trip.count7.c
  214.   br i1 %exitcond8.c, label %for.body3.c, label %for.end19.c
  215.  
  216. for.end19.c:                                      ; preds = %for.cond1.c
  217.   br label %for.inc20.c
  218.  
  219. for.inc20.c:                                      ; preds = %for.end19.c
  220.   %indvars.iv.next10.c = add nuw nsw i64 %indvars.iv9.c, 1
  221.   br label %for.cond.c
  222.  
  223. for.body3.c:                                      ; preds = %for.cond1.c
  224.   br label %for.cond4.c
  225.  
  226. for.cond4.c:                                      ; preds = %for.inc.c, %for.body3.c
  227.   %indvars.iv.c = phi i64 [ %indvars.iv.next.c, %for.inc.c ], [ 0, %for.body3.c ]
  228.   %wide.trip.count.c = zext i32 %n to i64
  229.   %exitcond.c = icmp ne i64 %indvars.iv.c, %wide.trip.count.c
  230.   br i1 %exitcond.c, label %for.body6.c, label %for.end.c
  231.  
  232. for.end.c:                                        ; preds = %for.cond4.c
  233.   br label %for.inc17.c
  234.  
  235. for.inc17.c:                                      ; preds = %for.end.c
  236.   %indvars.iv.next5.c = add nuw nsw i64 %indvars.iv4.c, 1
  237.   br label %for.cond1.c
  238.  
  239. for.body6.c:                                      ; preds = %for.cond4.c
  240.   %tmp15.c = mul nsw i64 %indvars.iv9.c, %tmp14.c
  241.   %tmp16.c = add nsw i64 %tmp15.c, %indvars.iv.c
  242.   %arrayidx.c = getelementptr inbounds float, float* %a, i64 %tmp16.c
  243.   %tmp17.c = load float, float* %arrayidx.c, align 4
  244.   %0 = fcmp one float %tmp17.c, 0.000000e+00
  245.   br i1 %0, label %1, label %5
  246.  
  247. ; <label>:1:                                      ; preds = %for.body6.c
  248.   %tmp18.c = mul nsw i64 %indvars.iv.c, %tmp.c
  249.   %tmp19.c = add nsw i64 %tmp18.c, %indvars.iv4.c
  250.   %arrayidx10.c = getelementptr inbounds float, float* %b, i64 %tmp19.c
  251.   %tmp20.c = load float, float* %arrayidx10.c, align 4
  252.   %2 = fcmp one float %tmp20.c, 0.000000e+00
  253.   br i1 %2, label %3, label %4
  254.  
  255. ; <label>:3:                                      ; preds = %1
  256.   %mul11.c = fmul float %tmp17.c, %tmp20.c
  257.   %tmp21.c = add nsw i64 %tmp15.c, %indvars.iv4.c
  258.   %arrayidx15.c = getelementptr inbounds float, float* %c, i64 %tmp21.c
  259.   %tmp22.c = load float, float* %arrayidx15.c, align 4
  260.   %add16.c = fadd float %tmp22.c, %mul11.c
  261.   store float %add16.c, float* %arrayidx15.c, align 4
  262.   br label %4
  263.  
  264. ; <label>:4:                                      ; preds = %1, %3
  265.   br label %5
  266.  
  267. ; <label>:5:                                      ; preds = %for.body6.c, %4
  268.   br label %split.c
  269.  
  270. for.inc.c:                                        ; preds = %split.c
  271.   %indvars.iv.next.c = add nuw nsw i64 %indvars.iv.c, 1
  272.   br label %for.cond4.c
  273.  
  274. split.c:                                          ; preds = %5
  275.   br label %for.inc.c
  276. }
  277.  
  278. ; Function Attrs: noinline nounwind ssp uwtable
  279. define i32 @main(i32 %argc, i8** %argv) #0 {
  280. entry:
  281.   %buf = alloca [20 x i8], align 16
  282.   %arrayidx = getelementptr inbounds i8*, i8** %argv, i64 1
  283.   %tmp = load i8*, i8** %arrayidx, align 8
  284.   %call = call i32 @atoi(i8* %tmp) #3
  285.   %call1 = call float* @alloc_matrix(i32 %call)
  286.   %call2 = call float* @alloc_matrix(i32 %call)
  287.   %call3 = call float* @alloc_matrix(i32 %call)
  288.   %arraydecay = getelementptr inbounds [20 x i8], [20 x i8]* %buf, i64 0, i64 0
  289.   %arrayidx4 = getelementptr inbounds i8*, i8** %argv, i64 2
  290.   %tmp1 = load i8*, i8** %arrayidx4, align 8
  291.   %call5 = call i32 (i8*, i64, i32, i64, i8*, ...) @__snprintf_chk(i8* nonnull %arraydecay, i64 20, i32 0, i64 20, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i64 0, i64 0), i8* %tmp1) #3
  292.   %call7 = call float* @read_matrix(i8* nonnull %arraydecay, float* %call1, i32 %call)
  293.   %tmp2 = load i8*, i8** %arrayidx4, align 8
  294.   %call10 = call i32 (i8*, i64, i32, i64, i8*, ...) @__snprintf_chk(i8* nonnull %arraydecay, i64 20, i32 0, i64 20, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), i8* %tmp2) #3
  295.   %call12 = call float* @read_matrix(i8* nonnull %arraydecay, float* %call2, i32 %call)
  296.   call void @matrix_mul(float* %call1, float* %call2, float* %call3, i32 %call)
  297.   ret i32 0
  298. }
  299.  
  300. declare i32 @atoi(i8*) #1
  301.  
  302. declare i32 @__snprintf_chk(i8*, i64, i32, i64, i8*, ...) #1
  303.  
  304. ; Function Attrs: noinline nounwind ssp uwtable
  305. define private i1 @sampling(float* noalias %a, float* noalias %b, float* noalias %c, i32 %n) #0 {
  306. entry.s:
  307.   %cnt = alloca i32
  308.   store i32 0, i32* %cnt
  309.   %eq = alloca i32
  310.   store i32 0, i32* %eq
  311.   br label %entry.split.s
  312.  
  313. entry.split.s:                                    ; preds = %entry.s
  314.   %tmp.s = sext i32 %n to i64
  315.   %tmp13.s = sext i32 %n to i64
  316.   %tmp14.s = sext i32 %n to i64
  317.   br label %for.cond.s
  318.  
  319. for.cond.s:                                       ; preds = %for.inc20.s, %entry.split.s
  320.   %indvars.iv9.s = phi i64 [ %indvars.iv.next10.s, %for.inc20.s ], [ 0, %entry.split.s ]
  321.   %cmp.s = icmp slt i64 %indvars.iv9.s, %tmp13.s
  322.   br i1 %cmp.s, label %for.body.s, label %for.end22.s
  323.  
  324. for.body.s:                                       ; preds = %for.cond.s
  325.   br label %for.cond1.s
  326.  
  327. for.cond1.s:                                      ; preds = %for.inc17.s, %for.body.s
  328.   %indvars.iv4.s = phi i64 [ %indvars.iv.next5.s, %for.inc17.s ], [ 0, %for.body.s ]
  329.   %wide.trip.count7.s = zext i32 %n to i64
  330.   %exitcond8.s = icmp ne i64 %indvars.iv4.s, %wide.trip.count7.s
  331.   br i1 %exitcond8.s, label %for.body3.s, label %for.end19.s
  332.  
  333. for.body3.s:                                      ; preds = %for.cond1.s
  334.   br label %for.cond4.s
  335.  
  336. for.cond4.s:                                      ; preds = %for.inc.s, %for.body3.s
  337.   %indvars.iv.s = phi i64 [ %indvars.iv.next.s, %for.inc.s ], [ 0, %for.body3.s ]
  338.   %wide.trip.count.s = zext i32 %n to i64
  339.   %exitcond.s = icmp ne i64 %indvars.iv.s, %wide.trip.count.s
  340.   br i1 %exitcond.s, label %for.body6.s, label %for.end.s
  341.  
  342. for.body6.s:                                      ; preds = %for.cond4.s
  343.   %tmp15.s = mul nsw i64 %indvars.iv9.s, %tmp14.s
  344.   %tmp16.s = add nsw i64 %tmp15.s, %indvars.iv.s
  345.   %arrayidx.s = getelementptr inbounds float, float* %a, i64 %tmp16.s
  346.   %tmp17.s = load float, float* %arrayidx.s, align 4
  347.   %tmp18.s = mul nsw i64 %indvars.iv.s, %tmp.s
  348.   %tmp19.s = add nsw i64 %tmp18.s, %indvars.iv4.s
  349.   %arrayidx10.s = getelementptr inbounds float, float* %b, i64 %tmp19.s
  350.   %tmp20.s = load float, float* %arrayidx10.s, align 4
  351.   %mul11.s = fmul float %tmp17.s, %tmp20.s
  352.   %tmp21.s = add nsw i64 %tmp15.s, %indvars.iv4.s
  353.   %arrayidx15.s = getelementptr inbounds float, float* %c, i64 %tmp21.s
  354.   %tmp22.s = load float, float* %arrayidx15.s, align 4
  355.   %add16.s = fadd float %tmp22.s, %mul11.s
  356.   %cnt4 = load i32, i32* %cnt
  357.   %cnt_inc = add i32 %cnt4, 1
  358.   store i32 %cnt_inc, i32* %cnt
  359.   %eq_counter = load i32, i32* %eq
  360.   %fcmp = fcmp oeq float %tmp22.s, %add16.s
  361.  
  362.   call void @dump_value(float %tmp22.s)
  363.   call void @dump_value(float %add16.s)
  364.   %call_printf_dump = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @0, i32 0, i32 0))
  365.   %call_printf_dump1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @1, i32 0, i32 0), float %tmp22.s)
  366.   %call_printf_dump2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @2, i32 0, i32 0), float %add16.s)
  367.   %call_printf_dump3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @3, i32 0, i32 0), i1 %fcmp)
  368.   %0 = select i1 %fcmp, i32 1, i32 0
  369.   %eq_inc = add i32 %eq_counter, %0
  370.   store i32 %eq_inc, i32* %eq
  371.   br label %for.body6.s.split
  372.  
  373. for.body6.s.split:                                ; preds = %for.body6.s
  374.   %1 = load i32, i32* %cnt
  375.   %2 = icmp slt i32 %1, 5
  376.   br i1 %2, label %for.inc.s, label %function_exit
  377.  
  378. for.inc.s:                                        ; preds = %for.body6.s.split
  379.   %indvars.iv.next.s = add nuw nsw i64 %indvars.iv.s, 1
  380.   br label %for.cond4.s
  381.  
  382. for.end.s:                                        ; preds = %for.cond4.s
  383.   br label %for.inc17.s
  384.  
  385. for.inc17.s:                                      ; preds = %for.end.s
  386.   %indvars.iv.next5.s = add nuw nsw i64 %indvars.iv4.s, 1
  387.   br label %for.cond1.s
  388.  
  389. for.end19.s:                                      ; preds = %for.cond1.s
  390.   br label %for.inc20.s
  391.  
  392. for.inc20.s:                                      ; preds = %for.end19.s
  393.   %indvars.iv.next10.s = add nuw nsw i64 %indvars.iv9.s, 1
  394.   br label %for.cond.s
  395.  
  396. function_exit:                                    ; preds = %for.body6.s.split, %for.end22.s
  397.   %cnt5 = load i32, i32* %cnt
  398.   %eq6 = load i32, i32* %eq
  399.   %sub = sub i32 %cnt5, %eq6
  400.   %call_printf_dump7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @4, i32 0, i32 0))
  401.   %call_printf_dump8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @5, i32 0, i32 0))
  402.   %call_printf_dump9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @6, i32 0, i32 0))
  403.   %call_printf_dump10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @7, i32 0, i32 0), i32 %cnt5)
  404.   %call_printf_dump11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @8, i32 0, i32 0), i32 %eq6)
  405.   %call_printf_dump12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @9, i32 0, i32 0), i32 %sub)
  406.   %cmp = icmp sle i32 %sub, 3
  407.   %3 = select i1 %cmp, i1 true, i1 false
  408.   ret i1 %3
  409.  
  410. for.end22.s:                                      ; preds = %for.cond.s
  411.   br label %function_exit
  412. }
  413.  
  414. 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" }
  415. 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" }
  416. attributes #2 = { allocsize(0) "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" }
  417. attributes #3 = { nounwind }
  418. attributes #4 = { nounwind allocsize(0) }
  419.  
  420. !llvm.ident = !{!0}
  421. !llvm.module.flags = !{!1, !2}
  422.  
  423. !0 = !{!"clang version 6.0.1 (tags/RELEASE_601/final 342957)"}
  424. !1 = !{i32 1, !"wchar_size", i32 4}
  425. !2 = !{i32 7, !"PIC Level", i32 2}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement