Advertisement
Guest User

Untitled

a guest
Dec 18th, 2021
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 4.79 KB | None | 0 0
  1. declare void @llvm.assume(i1 noundef) addrspace(1) #10
  2. declare i32 @llvm.ctlz.i32(i32, i1 immarg) addrspace(1) #9
  3.  
  4. define hidden i32 @__udivmodsi4(i32 %n, i32 %d, i8* noalias nocapture align 1 dereferenceable_or_null(4) %rem) unnamed_addr addrspace(1) #5 {
  5. start:
  6.   %0 = icmp ne i32 %d, 0
  7.   call addrspace(1) void @llvm.assume(i1 %0) #13
  8.   %_5.i.i = icmp ult i32 %n, %d
  9.   br i1 %_5.i.i, label %_ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i, label %bb4.i.i
  10.  
  11. bb4.i.i:                                          ; preds = %start
  12.   %1 = call addrspace(1) i32 @llvm.ctlz.i32(i32 %d, i1 true) #13, !range !1
  13.   %2 = call addrspace(1) i32 @llvm.ctlz.i32(i32 %n, i1 false) #13, !range !1
  14.   %_4.i.i.i = sub nsw i32 %1, %2
  15.   %3 = trunc i32 %_4.i.i.i to i16
  16.   %4 = and i32 %_4.i.i.i, 31
  17.   %_12.i.i.i = shl i32 %d, %4
  18.   %_10.i.i.i = icmp ugt i32 %_12.i.i.i, %n
  19.   %5 = sext i1 %_10.i.i.i to i16
  20.   %spec.select.i.i.i = add i16 %5, %3
  21.   %6 = and i16 %spec.select.i.i.i, 31
  22.   %7 = zext i16 %6 to i32
  23.   %8 = shl i32 %d, %7
  24.   %9 = sub i32 %n, %8
  25.   %10 = shl i32 1, %7
  26.   %_21.i.i = icmp ult i32 %9, %d
  27.   br i1 %_21.i.i, label %_ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i, label %bb8.i.i
  28.  
  29. bb8.i.i:                                          ; preds = %bb4.i.i
  30.   %_27.i.i = icmp slt i32 %8, 0
  31.   br i1 %_27.i.i, label %bb9.i.i, label %bb16.i.i
  32.  
  33. bb9.i.i:                                          ; preds = %bb8.i.i
  34.   %11 = lshr i32 %8, 1
  35.   %12 = add i16 %spec.select.i.i.i, -1
  36.   %13 = and i16 %12, 31
  37.   %14 = zext i16 %13 to i32
  38.   %tmp.i.i = shl i32 1, %14
  39.   %15 = sub i32 %9, %11
  40.   %_36.i.i = icmp sgt i32 %15, -1
  41.   %16 = select i1 %_36.i.i, i32 %tmp.i.i, i32 0
  42.   %spec.select.i.i = or i32 %16, %10
  43.   %spec.select38.i.i = select i1 %_36.i.i, i32 %15, i32 %9
  44.   %_41.i.i = icmp ult i32 %spec.select38.i.i, %d
  45.   br i1 %_41.i.i, label %_ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i, label %bb16.i.i
  46.  
  47. bb16.i.i:                                         ; preds = %bb9.i.i, %bb8.i.i
  48.   %mask.0.in.i.i = phi i32 [ %tmp.i.i, %bb9.i.i ], [ %10, %bb8.i.i ]
  49.   %quo.1.i.i = phi i32 [ %spec.select.i.i, %bb9.i.i ], [ %10, %bb8.i.i ]
  50.   %div2.0.i.i = phi i32 [ %11, %bb9.i.i ], [ %8, %bb8.i.i ]
  51.   %shl.0.i.i = phi i16 [ %12, %bb9.i.i ], [ %spec.select.i.i.i, %bb8.i.i ]
  52.   %duo1.1.i.i = phi i32 [ %spec.select38.i.i, %bb9.i.i ], [ %9, %bb8.i.i ]
  53.   %mask.0.i.i = add i32 %mask.0.in.i.i, -1
  54.   %.neg.i.i = sub i32 1, %div2.0.i.i
  55.   %17 = icmp eq i16 %shl.0.i.i, 0
  56.   br i1 %17, label %bb19.i.i, label %bb20.i.i
  57.  
  58. bb19.i.i:                                         ; preds = %bb20.i.i, %bb16.i.i
  59.   %duo1.2.lcssa.i.i = phi i32 [ %duo1.1.i.i, %bb16.i.i ], [ %23, %bb20.i.i ]
  60.   %_66.i.i = and i32 %duo1.2.lcssa.i.i, %mask.0.i.i
  61.   %_65.i.i = or i32 %_66.i.i, %quo.1.i.i
  62.   %18 = and i16 %shl.0.i.i, 31
  63.   %19 = zext i16 %18 to i32
  64.   %_70.i.i = lshr i32 %duo1.2.lcssa.i.i, %19
  65.   br label %_ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i
  66.  
  67. bb20.i.i:                                         ; preds = %bb16.i.i, %bb20.i.i
  68.   %duo1.240.i.i = phi i32 [ %23, %bb20.i.i ], [ %duo1.1.i.i, %bb16.i.i ]
  69.   %i.039.i.i = phi i16 [ %20, %bb20.i.i ], [ %shl.0.i.i, %bb16.i.i ]
  70.   %20 = add i16 %i.039.i.i, -1
  71.   %21 = shl i32 %duo1.240.i.i, 1
  72.   %22 = add i32 %21, %.neg.i.i
  73.   %isneg.i.i = icmp slt i32 %22, 0
  74.   %23 = select i1 %isneg.i.i, i32 %21, i32 %22
  75.   %24 = icmp eq i16 %20, 0
  76.   br i1 %24, label %bb19.i.i, label %bb20.i.i
  77.  
  78. _ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i: ; preds = %bb19.i.i, %bb9.i.i, %bb4.i.i, %start
  79.   %.sroa.5.0.i.i = phi i32 [ %n, %start ], [ %9, %bb4.i.i ], [ %_70.i.i, %bb19.i.i ], [ %spec.select38.i.i, %bb9.i.i ]
  80.   %.sroa.0.0.i.i = phi i32 [ 0, %start ], [ %10, %bb4.i.i ], [ %_65.i.i, %bb19.i.i ], [ %spec.select.i.i, %bb9.i.i ]
  81.   %.not.i = icmp eq i8* %rem, null
  82.   br i1 %.not.i, label %_ZN17compiler_builtins3int4udiv12__udivmodsi417h34e3ed1a3003179dE.exit, label %bb2.i
  83.  
  84. bb2.i:                                            ; preds = %_ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i
  85.   %25 = bitcast i8* %rem to i32*
  86.   store i32 %.sroa.5.0.i.i, i32* %25, align 1, !alias.scope !49
  87.   br label %_ZN17compiler_builtins3int4udiv12__udivmodsi417h34e3ed1a3003179dE.exit
  88.  
  89. _ZN17compiler_builtins3int4udiv12__udivmodsi417h34e3ed1a3003179dE.exit: ; preds = %_ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h69a9140ee9b21fa0E.exit.i, %bb2.i
  90.   ret i32 %.sroa.0.0.i.i
  91. }
  92.  
  93. !1 = !{i32 0, i32 33}
  94. !49 = !{!50}
  95. !50 = distinct !{!50, !51, !"_ZN17compiler_builtins3int4udiv12__udivmodsi417h34e3ed1a3003179dE: argument 0"}
  96. !51 = distinct !{!51, !"_ZN17compiler_builtins3int4udiv12__udivmodsi417h34e3ed1a3003179dE"}
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement