Created
November 27, 2016 20:31
-
-
Save jedisct1/ba5880c9e4fd395d4e1a7f85e6b6bed7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'b2b.cgu-0.rs' | |
source_filename = "b2b.cgu-0.rs" | |
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-apple-darwin" | |
%str_slice = type { i8*, i64 } | |
%"unwind::libunwind::_Unwind_Exception" = type { i64, void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [6 x i64] } | |
%"unwind::libunwind::_Unwind_Context" = type {} | |
@str.0 = internal constant [20 x i8] c"src/libcore/slice.rs" | |
@panic_bounds_check_loc.1 = internal unnamed_addr constant { %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @str.0, i32 0, i32 0), i64 20 }, i32 640 }, align 8 | |
@str.2 = internal constant [6 x i8] c"b2b.rs" | |
@const.4 = internal unnamed_addr constant [12 x [16 x i64]] [[16 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10, i64 11, i64 12, i64 13, i64 14, i64 15], [16 x i64] [i64 14, i64 10, i64 4, i64 8, i64 9, i64 15, i64 13, i64 6, i64 1, i64 12, i64 0, i64 2, i64 11, i64 7, i64 5, i64 3], [16 x i64] [i64 11, i64 8, i64 12, i64 0, i64 5, i64 2, i64 15, i64 13, i64 10, i64 14, i64 3, i64 6, i64 7, i64 1, i64 9, i64 4], [16 x i64] [i64 7, i64 9, i64 3, i64 1, i64 13, i64 12, i64 11, i64 14, i64 2, i64 6, i64 5, i64 10, i64 4, i64 0, i64 15, i64 8], [16 x i64] [i64 9, i64 0, i64 5, i64 7, i64 2, i64 4, i64 10, i64 15, i64 14, i64 1, i64 11, i64 12, i64 6, i64 8, i64 3, i64 13], [16 x i64] [i64 2, i64 12, i64 6, i64 10, i64 0, i64 11, i64 8, i64 3, i64 4, i64 13, i64 7, i64 5, i64 15, i64 14, i64 1, i64 9], [16 x i64] [i64 12, i64 5, i64 1, i64 15, i64 14, i64 13, i64 4, i64 10, i64 0, i64 7, i64 6, i64 3, i64 9, i64 2, i64 8, i64 11], [16 x i64] [i64 13, i64 11, i64 7, i64 14, i64 12, i64 1, i64 3, i64 9, i64 5, i64 0, i64 15, i64 4, i64 8, i64 6, i64 2, i64 10], [16 x i64] [i64 6, i64 15, i64 14, i64 9, i64 11, i64 3, i64 0, i64 8, i64 12, i64 2, i64 13, i64 7, i64 1, i64 4, i64 10, i64 5], [16 x i64] [i64 10, i64 2, i64 8, i64 4, i64 7, i64 6, i64 1, i64 5, i64 15, i64 11, i64 9, i64 14, i64 3, i64 12, i64 13, i64 0], [16 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10, i64 11, i64 12, i64 13, i64 14, i64 15], [16 x i64] [i64 14, i64 10, i64 4, i64 8, i64 9, i64 15, i64 13, i64 6, i64 1, i64 12, i64 0, i64 2, i64 11, i64 7, i64 5, i64 3]], align 8 | |
@panic_bounds_check_loc.e = internal unnamed_addr constant { %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.2, i32 0, i32 0), i64 6 }, i32 77 }, align 8 | |
define internal fastcc void @_ZN3b2b12b2b_compress17h36d71a90a69834d4E([8 x i64]* nocapture dereferenceable(64), i64, i64, i8* noalias nocapture nonnull readonly, i64) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
entry-block: | |
%m = alloca [16 x i64], align 8 | |
%5 = bitcast [16 x i64]* %m to i8* | |
%6 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 0 | |
%7 = load i64, i64* %6, align 8 | |
%8 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 1 | |
%9 = load i64, i64* %8, align 8 | |
%10 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 2 | |
%11 = load i64, i64* %10, align 8 | |
%12 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 3 | |
%13 = load i64, i64* %12, align 8 | |
%14 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 4 | |
%15 = load i64, i64* %14, align 8 | |
%16 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 5 | |
%17 = load i64, i64* %16, align 8 | |
%18 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 6 | |
%19 = load i64, i64* %18, align 8 | |
%20 = getelementptr inbounds [8 x i64], [8 x i64]* %0, i64 0, i64 7 | |
%21 = load i64, i64* %20, align 8 | |
%22 = xor i64 %1, 5840696475078001361 | |
%23 = xor i64 %2, 2270897969802886507 | |
call void @llvm.lifetime.start(i64 128, i8* %5) | |
call void @llvm.memset.p0i8.i64(i8* %5, i8 0, i64 128, i32 8, i1 false) | |
br label %bb13 | |
bb13: ; preds = %entry-block, %bb20.7 | |
%iter.sroa.0.0149 = phi i64 [ %24, %bb20.7 ], [ 0, %entry-block ] | |
%24 = add nuw nsw i64 %iter.sroa.0.0149, 1 | |
%25 = shl i64 %iter.sroa.0.0149, 3 | |
%26 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %iter.sroa.0.0149 | |
%27 = icmp ult i64 %25, %4 | |
br i1 %27, label %bb20, label %panic.i.i72, !prof !0 | |
panic.i.i72: ; preds = %bb20.6, %bb20.5, %bb20.4, %bb20.3, %bb20.2, %bb20.1, %bb20, %bb13 | |
%.lcssa167 = phi i64 [ %25, %bb13 ], [ %33, %bb20 ], [ %286, %bb20.1 ], [ %293, %bb20.2 ], [ %300, %bb20.3 ], [ %307, %bb20.4 ], [ %314, %bb20.5 ], [ %321, %bb20.6 ] | |
call void @_ZN4core9panicking18panic_bounds_check17h061ee2397a78277dE({ %str_slice, i32 }* nonnull @panic_bounds_check_loc.1, i64 %.lcssa167, i64 %4), !noalias !1 | |
unreachable | |
bb20: ; preds = %bb13 | |
%28 = getelementptr inbounds i8, i8* %3, i64 %25 | |
%29 = load i8, i8* %28, align 1 | |
%30 = zext i8 %29 to i64 | |
%31 = load i64, i64* %26, align 8 | |
%32 = or i64 %30, %31 | |
store i64 %32, i64* %26, align 8 | |
%33 = or i64 %25, 1 | |
%34 = icmp ult i64 %33, %4 | |
br i1 %34, label %bb20.1, label %panic.i.i72, !prof !0 | |
bb31: ; preds = %bb31.preheader, %bb31 | |
%35 = phi i64 [ %249, %bb31 ], [ -6534734903238641935, %bb31.preheader ] | |
%36 = phi i64 [ %258, %bb31 ], [ 6620516959819538809, %bb31.preheader ] | |
%37 = phi i64 [ %267, %bb31 ], [ %21, %bb31.preheader ] | |
%38 = phi i64 [ %261, %bb31 ], [ %13, %bb31.preheader ] | |
%39 = phi i64 [ %248, %bb31 ], [ 4354685564936845355, %bb31.preheader ] | |
%40 = phi i64 [ %257, %bb31 ], [ %23, %bb31.preheader ] | |
%41 = phi i64 [ %266, %bb31 ], [ %19, %bb31.preheader ] | |
%42 = phi i64 [ %260, %bb31 ], [ %11, %bb31.preheader ] | |
%43 = phi i64 [ %251, %bb31 ], [ -4942790177534073029, %bb31.preheader ] | |
%44 = phi i64 [ %256, %bb31 ], [ -7276294671716946913, %bb31.preheader ] | |
%45 = phi i64 [ %265, %bb31 ], [ %17, %bb31.preheader ] | |
%46 = phi i64 [ %263, %bb31 ], [ %9, %bb31.preheader ] | |
%47 = phi i64 [ %250, %bb31 ], [ 7640891576956012808, %bb31.preheader ] | |
%48 = phi i64 [ %259, %bb31 ], [ %22, %bb31.preheader ] | |
%49 = phi i64 [ %264, %bb31 ], [ %15, %bb31.preheader ] | |
%50 = phi i64 [ %262, %bb31 ], [ %7, %bb31.preheader ] | |
%iter4.sroa.0.0116 = phi i64 [ %51, %bb31 ], [ 0, %bb31.preheader ] | |
%51 = add nuw nsw i64 %iter4.sroa.0.0116, 1 | |
%52 = add i64 %49, %50 | |
%53 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 0 | |
%54 = load i64, i64* %53, align 8 | |
%55 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %54 | |
%56 = load i64, i64* %55, align 8 | |
%57 = add i64 %52, %56 | |
%58 = xor i64 %48, %57 | |
%59 = lshr i64 %58, 32 | |
%60 = shl i64 %58, 32 | |
%61 = or i64 %59, %60 | |
%62 = add i64 %61, %47 | |
%63 = xor i64 %49, %62 | |
%64 = lshr i64 %63, 24 | |
%65 = shl i64 %63, 40 | |
%66 = or i64 %64, %65 | |
%67 = add i64 %66, %57 | |
%68 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 1 | |
%69 = load i64, i64* %68, align 8 | |
%70 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %69 | |
%71 = load i64, i64* %70, align 8 | |
%72 = add i64 %67, %71 | |
%73 = xor i64 %61, %72 | |
%74 = add i64 %45, %46 | |
%75 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 2 | |
%76 = load i64, i64* %75, align 8 | |
%77 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %76 | |
%78 = load i64, i64* %77, align 8 | |
%79 = add i64 %74, %78 | |
%80 = xor i64 %44, %79 | |
%81 = lshr i64 %80, 32 | |
%82 = shl i64 %80, 32 | |
%83 = or i64 %81, %82 | |
%84 = add i64 %83, %43 | |
%85 = xor i64 %45, %84 | |
%86 = lshr i64 %85, 24 | |
%87 = shl i64 %85, 40 | |
%88 = or i64 %86, %87 | |
%89 = add i64 %88, %79 | |
%90 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 3 | |
%91 = load i64, i64* %90, align 8 | |
%92 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %91 | |
%93 = load i64, i64* %92, align 8 | |
%94 = add i64 %89, %93 | |
%95 = xor i64 %83, %94 | |
%96 = add i64 %41, %42 | |
%97 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 4 | |
%98 = load i64, i64* %97, align 8 | |
%99 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %98 | |
%100 = load i64, i64* %99, align 8 | |
%101 = add i64 %96, %100 | |
%102 = xor i64 %40, %101 | |
%103 = lshr i64 %102, 32 | |
%104 = shl i64 %102, 32 | |
%105 = or i64 %103, %104 | |
%106 = add i64 %105, %39 | |
%107 = xor i64 %41, %106 | |
%108 = lshr i64 %107, 24 | |
%109 = shl i64 %107, 40 | |
%110 = or i64 %108, %109 | |
%111 = add i64 %110, %101 | |
%112 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 5 | |
%113 = load i64, i64* %112, align 8 | |
%114 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %113 | |
%115 = load i64, i64* %114, align 8 | |
%116 = add i64 %111, %115 | |
%117 = xor i64 %105, %116 | |
%118 = add i64 %37, %38 | |
%119 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 6 | |
%120 = load i64, i64* %119, align 8 | |
%121 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %120 | |
%122 = load i64, i64* %121, align 8 | |
%123 = add i64 %118, %122 | |
%124 = xor i64 %36, %123 | |
%125 = lshr i64 %124, 32 | |
%126 = shl i64 %124, 32 | |
%127 = or i64 %125, %126 | |
%128 = add i64 %127, %35 | |
%129 = xor i64 %37, %128 | |
%130 = lshr i64 %129, 24 | |
%131 = shl i64 %129, 40 | |
%132 = or i64 %130, %131 | |
%133 = add i64 %132, %123 | |
%134 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 7 | |
%135 = load i64, i64* %134, align 8 | |
%136 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %135 | |
%137 = load i64, i64* %136, align 8 | |
%138 = add i64 %133, %137 | |
%139 = xor i64 %127, %138 | |
%140 = insertelement <4 x i64> undef, i64 %95, i32 0 | |
%141 = insertelement <4 x i64> %140, i64 %117, i32 1 | |
%142 = insertelement <4 x i64> %141, i64 %139, i32 2 | |
%143 = insertelement <4 x i64> %142, i64 %73, i32 3 | |
%144 = lshr <4 x i64> %143, <i64 16, i64 16, i64 16, i64 16> | |
%145 = shl <4 x i64> %143, <i64 48, i64 48, i64 48, i64 48> | |
%146 = or <4 x i64> %144, %145 | |
%147 = extractelement <4 x i64> %146, i32 3 | |
%148 = add i64 %147, %62 | |
%149 = xor i64 %66, %148 | |
%150 = lshr i64 %149, 63 | |
%151 = shl i64 %149, 1 | |
%152 = or i64 %150, %151 | |
%153 = extractelement <4 x i64> %146, i32 0 | |
%154 = add i64 %153, %84 | |
%155 = xor i64 %88, %154 | |
%156 = lshr i64 %155, 63 | |
%157 = shl i64 %155, 1 | |
%158 = or i64 %156, %157 | |
%159 = extractelement <4 x i64> %146, i32 1 | |
%160 = add i64 %159, %106 | |
%161 = xor i64 %110, %160 | |
%162 = lshr i64 %161, 63 | |
%163 = shl i64 %161, 1 | |
%164 = or i64 %162, %163 | |
%165 = extractelement <4 x i64> %146, i32 2 | |
%166 = add i64 %165, %128 | |
%167 = xor i64 %132, %166 | |
%168 = lshr i64 %167, 63 | |
%169 = shl i64 %167, 1 | |
%170 = or i64 %168, %169 | |
%171 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 8 | |
%172 = load i64, i64* %171, align 8 | |
%173 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %172 | |
%174 = load i64, i64* %173, align 8 | |
%175 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 10 | |
%176 = load i64, i64* %175, align 8 | |
%177 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %176 | |
%178 = load i64, i64* %177, align 8 | |
%179 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 12 | |
%180 = load i64, i64* %179, align 8 | |
%181 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %180 | |
%182 = load i64, i64* %181, align 8 | |
%183 = insertelement <4 x i64> undef, i64 %170, i32 0 | |
%184 = insertelement <4 x i64> %183, i64 %152, i32 1 | |
%185 = insertelement <4 x i64> %184, i64 %158, i32 2 | |
%186 = insertelement <4 x i64> %185, i64 %164, i32 3 | |
%187 = insertelement <4 x i64> undef, i64 %116, i32 0 | |
%188 = insertelement <4 x i64> %187, i64 %138, i32 1 | |
%189 = insertelement <4 x i64> %188, i64 %72, i32 2 | |
%190 = insertelement <4 x i64> %189, i64 %94, i32 3 | |
%191 = add <4 x i64> %186, %190 | |
%192 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 14 | |
%193 = load i64, i64* %192, align 8 | |
%194 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %193 | |
%195 = load i64, i64* %194, align 8 | |
%196 = insertelement <4 x i64> undef, i64 %182, i32 0 | |
%197 = insertelement <4 x i64> %196, i64 %195, i32 1 | |
%198 = insertelement <4 x i64> %197, i64 %174, i32 2 | |
%199 = insertelement <4 x i64> %198, i64 %178, i32 3 | |
%200 = add <4 x i64> %191, %199 | |
%201 = xor <4 x i64> %146, %200 | |
%202 = lshr <4 x i64> %201, <i64 32, i64 32, i64 32, i64 32> | |
%203 = shl <4 x i64> %201, <i64 32, i64 32, i64 32, i64 32> | |
%204 = or <4 x i64> %202, %203 | |
%205 = extractelement <4 x i64> %204, i32 2 | |
%206 = add i64 %205, %160 | |
%207 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 9 | |
%208 = load i64, i64* %207, align 8 | |
%209 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %208 | |
%210 = load i64, i64* %209, align 8 | |
%211 = extractelement <4 x i64> %204, i32 3 | |
%212 = add i64 %211, %166 | |
%213 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 11 | |
%214 = load i64, i64* %213, align 8 | |
%215 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %214 | |
%216 = load i64, i64* %215, align 8 | |
%217 = extractelement <4 x i64> %204, i32 0 | |
%218 = add i64 %217, %148 | |
%219 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 13 | |
%220 = load i64, i64* %219, align 8 | |
%221 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %220 | |
%222 = load i64, i64* %221, align 8 | |
%223 = extractelement <4 x i64> %204, i32 1 | |
%224 = add i64 %223, %154 | |
%225 = insertelement <4 x i64> undef, i64 %218, i32 0 | |
%226 = insertelement <4 x i64> %225, i64 %224, i32 1 | |
%227 = insertelement <4 x i64> %226, i64 %206, i32 2 | |
%228 = insertelement <4 x i64> %227, i64 %212, i32 3 | |
%229 = xor <4 x i64> %186, %228 | |
%230 = lshr <4 x i64> %229, <i64 24, i64 24, i64 24, i64 24> | |
%231 = shl <4 x i64> %229, <i64 40, i64 40, i64 40, i64 40> | |
%232 = or <4 x i64> %230, %231 | |
%233 = add <4 x i64> %232, %200 | |
%234 = getelementptr inbounds [12 x [16 x i64]], [12 x [16 x i64]]* @const.4, i64 0, i64 %iter4.sroa.0.0116, i64 15 | |
%235 = load i64, i64* %234, align 8 | |
%236 = getelementptr inbounds [16 x i64], [16 x i64]* %m, i64 0, i64 %235 | |
%237 = load i64, i64* %236, align 8 | |
%238 = insertelement <4 x i64> undef, i64 %222, i32 0 | |
%239 = insertelement <4 x i64> %238, i64 %237, i32 1 | |
%240 = insertelement <4 x i64> %239, i64 %210, i32 2 | |
%241 = insertelement <4 x i64> %240, i64 %216, i32 3 | |
%242 = add <4 x i64> %233, %241 | |
%243 = xor <4 x i64> %204, %242 | |
%244 = lshr <4 x i64> %243, <i64 16, i64 16, i64 16, i64 16> | |
%245 = shl <4 x i64> %243, <i64 48, i64 48, i64 48, i64 48> | |
%246 = or <4 x i64> %244, %245 | |
%247 = add <4 x i64> %246, %228 | |
%248 = extractelement <4 x i64> %247, i32 2 | |
%249 = extractelement <4 x i64> %247, i32 3 | |
%250 = extractelement <4 x i64> %247, i32 0 | |
%251 = extractelement <4 x i64> %247, i32 1 | |
%252 = xor <4 x i64> %232, %247 | |
%253 = lshr <4 x i64> %252, <i64 63, i64 63, i64 63, i64 63> | |
%254 = shl <4 x i64> %252, <i64 1, i64 1, i64 1, i64 1> | |
%255 = or <4 x i64> %253, %254 | |
%exitcond = icmp eq i64 %51, 12 | |
%256 = extractelement <4 x i64> %246, i32 0 | |
%257 = extractelement <4 x i64> %246, i32 1 | |
%258 = extractelement <4 x i64> %246, i32 2 | |
%259 = extractelement <4 x i64> %246, i32 3 | |
%260 = extractelement <4 x i64> %242, i32 0 | |
%261 = extractelement <4 x i64> %242, i32 1 | |
%262 = extractelement <4 x i64> %242, i32 2 | |
%263 = extractelement <4 x i64> %242, i32 3 | |
%264 = extractelement <4 x i64> %255, i32 1 | |
%265 = extractelement <4 x i64> %255, i32 2 | |
%266 = extractelement <4 x i64> %255, i32 3 | |
%267 = extractelement <4 x i64> %255, i32 0 | |
br i1 %exitcond, label %bb353.7, label %bb31 | |
bb353.7: ; preds = %bb31 | |
%268 = shufflevector <4 x i64> %255, <4 x i64> undef, <4 x i32> <i32 1, i32 2, i32 3, i32 0> | |
%269 = shufflevector <4 x i64> %242, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 0, i32 1> | |
%270 = xor <4 x i64> %247, %269 | |
%271 = bitcast [8 x i64]* %0 to <4 x i64>* | |
%272 = load <4 x i64>, <4 x i64>* %271, align 8 | |
%273 = xor <4 x i64> %270, %272 | |
%274 = bitcast [8 x i64]* %0 to <4 x i64>* | |
store <4 x i64> %273, <4 x i64>* %274, align 8 | |
%275 = shufflevector <4 x i64> %246, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 1, i32 2> | |
%276 = xor <4 x i64> %275, %268 | |
%277 = bitcast i64* %14 to <4 x i64>* | |
%278 = load <4 x i64>, <4 x i64>* %277, align 8 | |
%279 = xor <4 x i64> %276, %278 | |
%280 = bitcast i64* %14 to <4 x i64>* | |
store <4 x i64> %279, <4 x i64>* %280, align 8 | |
call void @llvm.lifetime.end(i64 128, i8* nonnull %5) | |
ret void | |
bb20.1: ; preds = %bb20 | |
%281 = getelementptr inbounds i8, i8* %3, i64 %33 | |
%282 = load i8, i8* %281, align 1 | |
%283 = zext i8 %282 to i64 | |
%284 = shl nuw nsw i64 %283, 8 | |
%285 = or i64 %284, %32 | |
store i64 %285, i64* %26, align 8 | |
%286 = or i64 %25, 2 | |
%287 = icmp ult i64 %286, %4 | |
br i1 %287, label %bb20.2, label %panic.i.i72, !prof !0 | |
bb20.2: ; preds = %bb20.1 | |
%288 = getelementptr inbounds i8, i8* %3, i64 %286 | |
%289 = load i8, i8* %288, align 1 | |
%290 = zext i8 %289 to i64 | |
%291 = shl nuw nsw i64 %290, 16 | |
%292 = or i64 %291, %285 | |
store i64 %292, i64* %26, align 8 | |
%293 = or i64 %25, 3 | |
%294 = icmp ult i64 %293, %4 | |
br i1 %294, label %bb20.3, label %panic.i.i72, !prof !0 | |
bb20.3: ; preds = %bb20.2 | |
%295 = getelementptr inbounds i8, i8* %3, i64 %293 | |
%296 = load i8, i8* %295, align 1 | |
%297 = zext i8 %296 to i64 | |
%298 = shl nuw nsw i64 %297, 24 | |
%299 = or i64 %298, %292 | |
store i64 %299, i64* %26, align 8 | |
%300 = or i64 %25, 4 | |
%301 = icmp ult i64 %300, %4 | |
br i1 %301, label %bb20.4, label %panic.i.i72, !prof !0 | |
bb20.4: ; preds = %bb20.3 | |
%302 = getelementptr inbounds i8, i8* %3, i64 %300 | |
%303 = load i8, i8* %302, align 1 | |
%304 = zext i8 %303 to i64 | |
%305 = shl nuw nsw i64 %304, 32 | |
%306 = or i64 %305, %299 | |
store i64 %306, i64* %26, align 8 | |
%307 = or i64 %25, 5 | |
%308 = icmp ult i64 %307, %4 | |
br i1 %308, label %bb20.5, label %panic.i.i72, !prof !0 | |
bb20.5: ; preds = %bb20.4 | |
%309 = getelementptr inbounds i8, i8* %3, i64 %307 | |
%310 = load i8, i8* %309, align 1 | |
%311 = zext i8 %310 to i64 | |
%312 = shl nuw nsw i64 %311, 40 | |
%313 = or i64 %312, %306 | |
store i64 %313, i64* %26, align 8 | |
%314 = or i64 %25, 6 | |
%315 = icmp ult i64 %314, %4 | |
br i1 %315, label %bb20.6, label %panic.i.i72, !prof !0 | |
bb20.6: ; preds = %bb20.5 | |
%316 = getelementptr inbounds i8, i8* %3, i64 %314 | |
%317 = load i8, i8* %316, align 1 | |
%318 = zext i8 %317 to i64 | |
%319 = shl nuw nsw i64 %318, 48 | |
%320 = or i64 %319, %313 | |
store i64 %320, i64* %26, align 8 | |
%321 = or i64 %25, 7 | |
%322 = icmp ult i64 %321, %4 | |
br i1 %322, label %bb20.7, label %panic.i.i72, !prof !0 | |
bb20.7: ; preds = %bb20.6 | |
%323 = getelementptr inbounds i8, i8* %3, i64 %321 | |
%324 = load i8, i8* %323, align 1 | |
%325 = zext i8 %324 to i64 | |
%326 = shl nuw i64 %325, 56 | |
%327 = or i64 %326, %320 | |
store i64 %327, i64* %26, align 8 | |
%328 = icmp ult i64 %24, 16 | |
br i1 %328, label %bb13, label %bb31.preheader | |
bb31.preheader: ; preds = %bb20.7 | |
br label %bb31 | |
} | |
define void @_ZN3b2b3b2b17h0476c9cb319543d4E([64 x i8]* noalias nocapture sret dereferenceable(64), i8* noalias nonnull readonly, i64) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
entry-block: | |
%hash = alloca [8 x i64], align 8 | |
%block = alloca [128 x i8], align 1 | |
%block73 = getelementptr inbounds [128 x i8], [128 x i8]* %block, i64 0, i64 0 | |
%digest = alloca [64 x i8], align 1 | |
%digest72 = getelementptr inbounds [64 x i8], [64 x i8]* %digest, i64 0, i64 0 | |
%3 = bitcast [8 x i64]* %hash to i8* | |
call void @llvm.lifetime.start(i64 64, i8* %3) | |
%4 = bitcast [8 x i64]* %hash to <4 x i64>* | |
store <4 x i64> <i64 7640891576939301192, i64 -4942790177534073029, i64 4354685564936845355, i64 -6534734903238641935>, <4 x i64>* %4, align 8 | |
%5 = getelementptr inbounds [8 x i64], [8 x i64]* %hash, i64 0, i64 4 | |
%6 = bitcast i64* %5 to <4 x i64>* | |
store <4 x i64> <i64 5840696475078001361, i64 -7276294671716946913, i64 2270897969802886507, i64 6620516959819538809>, <4 x i64>* %6, align 8 | |
%7 = icmp ugt i64 %2, 128 | |
br i1 %7, label %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit.preheader", label %bb2 | |
"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit.preheader": ; preds = %entry-block | |
%8 = add i64 %2, -129 | |
%9 = and i64 %8, -128 | |
%10 = add i64 %9, 128 | |
%11 = add i64 %2, -128 | |
br label %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit" | |
bb2.loopexit: ; preds = %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit" | |
%scevgep = getelementptr i8, i8* %1, i64 %10 | |
%12 = sub i64 %11, %9 | |
br label %bb2 | |
bb2: ; preds = %bb2.loopexit, %entry-block | |
%data.sroa.0.0.lcssa = phi i8* [ %1, %entry-block ], [ %scevgep, %bb2.loopexit ] | |
%data.sroa.10.0.lcssa = phi i64 [ %2, %entry-block ], [ %12, %bb2.loopexit ] | |
call void @llvm.lifetime.start(i64 128, i8* %block73) | |
call void @llvm.memset.p0i8.i64(i8* %block73, i8 0, i64 128, i32 1, i1 false) | |
%13 = icmp eq i64 %data.sroa.10.0.lcssa, 0 | |
br i1 %13, label %bb12, label %bb14.preheader | |
bb14.preheader: ; preds = %bb2 | |
br label %bb14 | |
"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit": ; preds = %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit.preheader", %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit" | |
%t.068 = phi i64 [ %14, %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit" ], [ 0, %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit.preheader" ] | |
%data.sroa.10.067 = phi i64 [ %16, %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit" ], [ %2, %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit.preheader" ] | |
%data.sroa.0.066 = phi i8* [ %15, %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit" ], [ %1, %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit.preheader" ] | |
%14 = add i64 %t.068, 128 | |
%15 = getelementptr inbounds i8, i8* %data.sroa.0.066, i64 128 | |
%16 = add i64 %data.sroa.10.067, -128 | |
call fastcc void @_ZN3b2b12b2b_compress17h36d71a90a69834d4E([8 x i64]* nonnull dereferenceable(64) %hash, i64 %14, i64 0, i8* noalias nonnull readonly %data.sroa.0.066, i64 128) | |
%17 = icmp ugt i64 %16, 128 | |
br i1 %17, label %"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h7a17581679ba6f6dE.exit", label %bb2.loopexit | |
bb12.loopexit: ; preds = %bb15 | |
br label %bb12 | |
bb12: ; preds = %bb12.loopexit, %bb2 | |
call fastcc void @_ZN3b2b12b2b_compress17h36d71a90a69834d4E([8 x i64]* nonnull dereferenceable(64) %hash, i64 %2, i64 -1, i8* noalias nonnull readonly %block73, i64 128) | |
call void @llvm.lifetime.start(i64 64, i8* %digest72) | |
call void @llvm.memset.p0i8.i64(i8* %digest72, i8 0, i64 64, i32 1, i1 false) | |
br label %bb26 | |
bb14: ; preds = %bb14.preheader, %bb15 | |
%iter.sroa.0.065 = phi i64 [ %19, %bb15 ], [ 0, %bb14.preheader ] | |
%18 = icmp ult i64 %iter.sroa.0.065, 128 | |
br i1 %18, label %bb15, label %panic3, !prof !0 | |
bb15: ; preds = %bb14 | |
%19 = add nuw nsw i64 %iter.sroa.0.065, 1 | |
%20 = getelementptr inbounds i8, i8* %data.sroa.0.0.lcssa, i64 %iter.sroa.0.065 | |
%21 = load i8, i8* %20, align 1 | |
%22 = getelementptr inbounds [128 x i8], [128 x i8]* %block, i64 0, i64 %iter.sroa.0.065 | |
store i8 %21, i8* %22, align 1 | |
%23 = icmp ult i64 %19, %data.sroa.10.0.lcssa | |
br i1 %23, label %bb14, label %bb12.loopexit | |
bb21: ; preds = %bb26 | |
%24 = getelementptr inbounds [64 x i8], [64 x i8]* %0, i64 0, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* nonnull %digest72, i64 64, i32 1, i1 false) | |
call void @llvm.lifetime.end(i64 64, i8* nonnull %digest72) | |
call void @llvm.lifetime.end(i64 128, i8* %block73) | |
call void @llvm.lifetime.end(i64 64, i8* nonnull %3) | |
ret void | |
bb26: ; preds = %bb26, %bb12 | |
%iter2.sroa.0.064 = phi i64 [ 0, %bb12 ], [ %53, %bb26 ] | |
%25 = lshr i64 %iter2.sroa.0.064, 3 | |
%26 = or i64 %iter2.sroa.0.064, 1 | |
%27 = getelementptr inbounds [8 x i64], [8 x i64]* %hash, i64 0, i64 %25 | |
%28 = shl i64 %iter2.sroa.0.064, 3 | |
%29 = load i64, i64* %27, align 8 | |
%30 = and i64 %28, 32 | |
%31 = lshr i64 %29, %30 | |
%32 = getelementptr inbounds [64 x i8], [64 x i8]* %digest, i64 0, i64 %iter2.sroa.0.064 | |
%33 = trunc i64 %31 to i8 | |
store i8 %33, i8* %32, align 1 | |
%34 = lshr i64 %iter2.sroa.0.064, 3 | |
%35 = or i64 %iter2.sroa.0.064, 2 | |
%36 = getelementptr inbounds [8 x i64], [8 x i64]* %hash, i64 0, i64 %34 | |
%37 = shl i64 %26, 3 | |
%38 = load i64, i64* %36, align 8 | |
%39 = and i64 %37, 40 | |
%40 = lshr i64 %38, %39 | |
%41 = getelementptr inbounds [64 x i8], [64 x i8]* %digest, i64 0, i64 %26 | |
%42 = trunc i64 %40 to i8 | |
store i8 %42, i8* %41, align 1 | |
%43 = lshr i64 %iter2.sroa.0.064, 3 | |
%44 = or i64 %iter2.sroa.0.064, 3 | |
%45 = getelementptr inbounds [8 x i64], [8 x i64]* %hash, i64 0, i64 %43 | |
%46 = shl i64 %35, 3 | |
%47 = load i64, i64* %45, align 8 | |
%48 = and i64 %46, 48 | |
%49 = lshr i64 %47, %48 | |
%50 = getelementptr inbounds [64 x i8], [64 x i8]* %digest, i64 0, i64 %35 | |
%51 = trunc i64 %49 to i8 | |
store i8 %51, i8* %50, align 1 | |
%52 = lshr i64 %iter2.sroa.0.064, 3 | |
%53 = add nsw i64 %iter2.sroa.0.064, 4 | |
%54 = getelementptr inbounds [8 x i64], [8 x i64]* %hash, i64 0, i64 %52 | |
%55 = shl i64 %44, 3 | |
%56 = load i64, i64* %54, align 8 | |
%57 = and i64 %55, 56 | |
%58 = lshr i64 %56, %57 | |
%59 = getelementptr inbounds [64 x i8], [64 x i8]* %digest, i64 0, i64 %44 | |
%60 = trunc i64 %58 to i8 | |
store i8 %60, i8* %59, align 1 | |
%exitcond.3 = icmp eq i64 %53, 64 | |
br i1 %exitcond.3, label %bb21, label %bb26 | |
panic3: ; preds = %bb14 | |
call void @_ZN4core9panicking18panic_bounds_check17h061ee2397a78277dE({ %str_slice, i32 }* nonnull @panic_bounds_check_loc.e, i64 %iter.sroa.0.065, i64 128) | |
unreachable | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start(i64, i8* nocapture) #1 | |
; Function Attrs: nounwind | |
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #2 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end(i64, i8* nocapture) #1 | |
; Function Attrs: cold noinline noreturn | |
declare void @_ZN4core9panicking18panic_bounds_check17h061ee2397a78277dE({ %str_slice, i32 }* noalias readonly dereferenceable(24), i64, i64) unnamed_addr #3 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1 | |
attributes #0 = { "no-frame-pointer-elim"="true" } | |
attributes #1 = { argmemonly nounwind } | |
attributes #2 = { nounwind "no-frame-pointer-elim"="true" } | |
attributes #3 = { cold noinline noreturn "no-frame-pointer-elim"="true" } | |
!0 = !{!"branch_weights", i32 2000, i32 1} | |
!1 = !{!2, !4} | |
!2 = distinct !{!2, !3, !"_ZN58_$LT$usize$u20$as$u20$core..slice..SliceIndex$LT$T$GT$$GT$5index17hda9059df340cd7beE: argument 0"} | |
!3 = distinct !{!3, !"_ZN58_$LT$usize$u20$as$u20$core..slice..SliceIndex$LT$T$GT$$GT$5index17hda9059df340cd7beE"} | |
!4 = distinct !{!4, !5, !"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h8f3a5418fb19e67dE: argument 0"} | |
!5 = distinct !{!5, !"_ZN4core5slice67_$LT$impl$u20$core..ops..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h8f3a5418fb19e67dE"} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment