Created
April 29, 2019 21:11
-
-
Save alexanderkyte/682fcd37f127d1c475bb5a26b775634f to your computer and use it in GitHub Desktop.
This file contains 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
define monocc i32 @"System.SpanHelpers:IndexOf (byte&,byte,int)"(i64* %arg_searchSpace, i32 %arg_value, i32 %arg_length) #0 { | |
BB0: | |
%0 = alloca <16 x i8>, align 16 | |
%1 = alloca <2 x i64>, align 16 | |
%2 = alloca <16 x i8>, align 16 | |
%3 = alloca i64, align 8 | |
%4 = load volatile i64, i64* inttoptr (i64 4497641040 to i64*) | |
%5 = icmp eq i64 %4, 0 | |
%6 = call i1 @llvm.expect.i1(i1 %5, i1 true) | |
%7 = alloca <16 x i8>, align 16 | |
%8 = alloca <16 x i8>, align 16 | |
br i1 %6, label %CONT_BB2, label %POLL_BB1 | |
POLL_BB1: ; preds = %BB0 | |
%9 = load void ()*, void ()** @mono_threads_state_poll | |
call void %9() | |
br label %CONT_BB2 | |
CONT_BB2: ; preds = %POLL_BB1, %BB0 | |
br label %BB3 | |
BB3: ; preds = %CONT_BB2 | |
br label %BB2 | |
BB2: ; preds = %BB3 | |
store i64 0, i64* %3 | |
%10 = getelementptr i64, i64* %3, i32 0 | |
store volatile i64 0, i64* %10 | |
%11 = load volatile i64, i64* %3 | |
%t22 = sext i32 %arg_length to i64 | |
br i1 false, label %BB4, label %BB5 | |
BB4: ; preds = %BB6, %BB5, %BB42, %BB23, %BB2 | |
%12 = phi i64 [ %t22, %BB2 ], [ %t22, %BB5 ], [ %t1102, %BB6 ], [ %t105, %BB23 ], [ %t1112, %BB42 ] | |
%13 = phi i64 [ %11, %BB2 ], [ %11, %BB5 ], [ %11, %BB6 ], [ %t394, %BB23 ], [ %103, %BB42 ] | |
%14 = icmp uge i64 %12, 8 | |
br i1 %14, label %BB7, label %BB24 | |
BB5: ; preds = %BB2 | |
%15 = icmp slt i32 %arg_length, 32 | |
br i1 %15, label %BB4, label %BB6 | |
BB7: ; preds = %BB4 | |
%16 = load volatile i64, i64* inttoptr (i64 4497641040 to i64*) | |
%17 = icmp eq i64 %16, 0 | |
%18 = call i1 @llvm.expect.i1(i1 %17, i1 true) | |
br i1 %18, label %CONT_BB4, label %POLL_BB3 | |
BB24: ; preds = %BB4 | |
%19 = icmp ult i64 %12, 4 | |
br i1 %19, label %BB25, label %BB26 | |
POLL_BB3: ; preds = %BB7 | |
%20 = load void ()*, void ()** @mono_threads_state_poll.1 | |
call void %20() | |
br label %CONT_BB4 | |
CONT_BB4: ; preds = %POLL_BB3, %BB7 | |
%t105 = sub i64 %12, 8 | |
%21 = ptrtoint i64* %arg_searchSpace to i64 | |
%t124 = add i64 %21, %13 | |
%22 = inttoptr i64 %t124 to i8* | |
%23 = load i8, i8* %22 | |
%24 = zext i8 %23 to i32 | |
%25 = icmp eq i32 %arg_value, %24 | |
br i1 %25, label %BB8, label %BB9 | |
BB8: ; preds = %BB26, %CONT_BB6, %CONT_BB4 | |
%26 = phi i64 [ %13, %CONT_BB4 ], [ %13, %BB26 ], [ %80, %CONT_BB6 ] | |
%27 = trunc i64 %26 to i32 | |
%t1133 = sext i32 %27 to i64 | |
%28 = trunc i64 %t1133 to i32 | |
br label %BB1 | |
BB9: ; preds = %CONT_BB4 | |
%t144 = add i64 %13, 1 | |
%29 = ptrtoint i64* %arg_searchSpace to i64 | |
%t160 = add i64 %29, %t144 | |
%30 = inttoptr i64 %t160 to i8* | |
%31 = load i8, i8* %30 | |
%32 = zext i8 %31 to i32 | |
%33 = icmp eq i32 %arg_value, %32 | |
br i1 %33, label %BB10, label %BB11 | |
BB1: ; preds = %BB550, %BB34, %BB22, %BB20, %BB18, %BB16, %BB14, %BB12, %BB10, %BB8 | |
%34 = phi i32 [ %t1122, %BB550 ], [ -1, %BB34 ], [ %28, %BB8 ], [ %36, %BB10 ], [ %43, %BB12 ], [ %50, %BB14 ], [ %57, %BB16 ], [ %64, %BB18 ], [ %71, %BB20 ], [ %78, %BB22 ] | |
ret i32 %34 | |
BB10: ; preds = %BB27, %BB9 | |
%t889 = add i64 %13, 1 | |
%35 = trunc i64 %t889 to i32 | |
%t1130 = sext i32 %35 to i64 | |
%36 = trunc i64 %t1130 to i32 | |
br label %BB1 | |
BB11: ; preds = %BB9 | |
%t180 = add i64 %13, 2 | |
%37 = ptrtoint i64* %arg_searchSpace to i64 | |
%t196 = add i64 %37, %t180 | |
%38 = inttoptr i64 %t196 to i8* | |
%39 = load i8, i8* %38 | |
%40 = zext i8 %39 to i32 | |
%41 = icmp eq i32 %arg_value, %40 | |
br i1 %41, label %BB12, label %BB13 | |
BB12: ; preds = %BB28, %BB11 | |
%t921 = add i64 %13, 2 | |
%42 = trunc i64 %t921 to i32 | |
%t1129 = sext i32 %42 to i64 | |
%43 = trunc i64 %t1129 to i32 | |
br label %BB1 | |
BB13: ; preds = %BB11 | |
%t216 = add i64 %13, 3 | |
%44 = ptrtoint i64* %arg_searchSpace to i64 | |
%t232 = add i64 %44, %t216 | |
%45 = inttoptr i64 %t232 to i8* | |
%46 = load i8, i8* %45 | |
%47 = zext i8 %46 to i32 | |
%48 = icmp eq i32 %arg_value, %47 | |
br i1 %48, label %BB14, label %BB15 | |
BB14: ; preds = %BB29, %BB13 | |
%t953 = add i64 %13, 3 | |
%49 = trunc i64 %t953 to i32 | |
%t1128 = sext i32 %49 to i64 | |
%50 = trunc i64 %t1128 to i32 | |
br label %BB1 | |
BB15: ; preds = %BB13 | |
%t252 = add i64 %13, 4 | |
%51 = ptrtoint i64* %arg_searchSpace to i64 | |
%t268 = add i64 %51, %t252 | |
%52 = inttoptr i64 %t268 to i8* | |
%53 = load i8, i8* %52 | |
%54 = zext i8 %53 to i32 | |
%55 = icmp eq i32 %arg_value, %54 | |
br i1 %55, label %BB16, label %BB17 | |
BB16: ; preds = %BB15 | |
%t985 = add i64 %13, 4 | |
%56 = trunc i64 %t985 to i32 | |
%t1139 = sext i32 %56 to i64 | |
%57 = trunc i64 %t1139 to i32 | |
br label %BB1 | |
BB17: ; preds = %BB15 | |
%t288 = add i64 %13, 5 | |
%58 = ptrtoint i64* %arg_searchSpace to i64 | |
%t304 = add i64 %58, %t288 | |
%59 = inttoptr i64 %t304 to i8* | |
%60 = load i8, i8* %59 | |
%61 = zext i8 %60 to i32 | |
%62 = icmp eq i32 %arg_value, %61 | |
br i1 %62, label %BB18, label %BB19 | |
BB18: ; preds = %BB17 | |
%t1017 = add i64 %13, 5 | |
%63 = trunc i64 %t1017 to i32 | |
%t1138 = sext i32 %63 to i64 | |
%64 = trunc i64 %t1138 to i32 | |
br label %BB1 | |
BB19: ; preds = %BB17 | |
%t324 = add i64 %13, 6 | |
%65 = ptrtoint i64* %arg_searchSpace to i64 | |
%t340 = add i64 %65, %t324 | |
%66 = inttoptr i64 %t340 to i8* | |
%67 = load i8, i8* %66 | |
%68 = zext i8 %67 to i32 | |
%69 = icmp eq i32 %arg_value, %68 | |
br i1 %69, label %BB20, label %BB21 | |
BB20: ; preds = %BB19 | |
%t1049 = add i64 %13, 6 | |
%70 = trunc i64 %t1049 to i32 | |
%t1137 = sext i32 %70 to i64 | |
%71 = trunc i64 %t1137 to i32 | |
br label %BB1 | |
BB21: ; preds = %BB19 | |
%t360 = add i64 %13, 7 | |
%72 = ptrtoint i64* %arg_searchSpace to i64 | |
%t376 = add i64 %72, %t360 | |
%73 = inttoptr i64 %t376 to i8* | |
%74 = load i8, i8* %73 | |
%75 = zext i8 %74 to i32 | |
%76 = icmp eq i32 %arg_value, %75 | |
br i1 %76, label %BB22, label %BB23 | |
BB22: ; preds = %BB21 | |
%t1081 = add i64 %13, 7 | |
%77 = trunc i64 %t1081 to i32 | |
%t1136 = sext i32 %77 to i64 | |
%78 = trunc i64 %t1136 to i32 | |
br label %BB1 | |
BB23: ; preds = %BB21 | |
%t394 = add i64 %13, 8 | |
br label %BB4 | |
BB25: ; preds = %BB30, %BB32, %BB24 | |
%79 = phi i64 [ %12, %BB24 ], [ %t436, %BB30 ], [ %t607, %BB32 ] | |
%80 = phi i64 [ %13, %BB24 ], [ %t581, %BB30 ], [ %t644, %BB32 ] | |
%81 = icmp ugt i64 %79, 0 | |
br i1 %81, label %BB31, label %BB33 | |
BB26: ; preds = %BB24 | |
%t436 = sub i64 %12, 4 | |
%82 = ptrtoint i64* %arg_searchSpace to i64 | |
%t455 = add i64 %82, %13 | |
%83 = inttoptr i64 %t455 to i8* | |
%84 = load i8, i8* %83 | |
%85 = zext i8 %84 to i32 | |
%86 = icmp eq i32 %arg_value, %85 | |
br i1 %86, label %BB8, label %BB27 | |
BB31: ; preds = %BB25 | |
%87 = load volatile i64, i64* inttoptr (i64 4497641040 to i64*) | |
%88 = icmp eq i64 %87, 0 | |
%89 = call i1 @llvm.expect.i1(i1 %88, i1 true) | |
br i1 %89, label %CONT_BB6, label %POLL_BB5 | |
BB33: ; preds = %BB25 | |
br i1 false, label %BB34, label %BB35 | |
POLL_BB5: ; preds = %BB31 | |
%90 = load void ()*, void ()** @mono_threads_state_poll.2 | |
call void %90() | |
br label %CONT_BB6 | |
CONT_BB6: ; preds = %POLL_BB5, %BB31 | |
%t607 = sub i64 %79, 1 | |
%91 = ptrtoint i64* %arg_searchSpace to i64 | |
%t626 = add i64 %91, %80 | |
%92 = inttoptr i64 %t626 to i8* | |
%93 = load i8, i8* %92 | |
%94 = zext i8 %93 to i32 | |
%95 = icmp eq i32 %arg_value, %94 | |
br i1 %95, label %BB8, label %BB32 | |
BB32: ; preds = %CONT_BB6 | |
%t644 = add i64 %80, 1 | |
br label %BB25 | |
BB34: ; preds = %BB41, %BB35, %BB33 | |
br label %BB1 | |
BB35: ; preds = %BB33 | |
%96 = trunc i64 %80 to i32 | |
%t669 = sext i32 %96 to i64 | |
%97 = trunc i64 %t669 to i32 | |
%98 = icmp sge i32 %97, %arg_length | |
br i1 %98, label %BB34, label %BB36 | |
BB36: ; preds = %BB35 | |
%99 = trunc i64 %80 to i32 | |
%t678 = sext i32 %99 to i64 | |
%100 = trunc i64 %t678 to i32 | |
%t679 = sub i32 %arg_length, %100 | |
%t687 = and i32 %t679, -16 | |
%t1109 = sext i32 %t687 to i64 | |
%t702 = mul i32 %arg_value, 16843009 | |
%101 = insertelement <4 x i32> zeroinitializer, i32 %t702, i32 0 | |
%102 = shufflevector <4 x i32> %101, <4 x i32> undef, <4 x i32> zeroinitializer | |
br label %BB37 | |
BB37: ; preds = %BB40, %BB36 | |
%103 = phi i64 [ %80, %BB36 ], [ %t758, %BB40 ] | |
%104 = icmp ugt i64 %t1109, %103 | |
br i1 %104, label %BB38, label %BB41 | |
BB38: ; preds = %BB37 | |
%105 = load volatile i64, i64* inttoptr (i64 4497641040 to i64*) | |
%106 = icmp eq i64 %105, 0 | |
%107 = call i1 @llvm.expect.i1(i1 %106, i1 true) | |
br i1 %107, label %CONT_BB8, label %POLL_BB7 | |
BB41: ; preds = %BB37 | |
%108 = trunc i64 %103 to i32 | |
%t842 = sext i32 %108 to i64 | |
%109 = trunc i64 %t842 to i32 | |
%110 = icmp sge i32 %109, %arg_length | |
br i1 %110, label %BB34, label %BB42 | |
POLL_BB7: ; preds = %BB38 | |
%111 = load void ()*, void ()** @mono_threads_state_poll.3 | |
call void %111() | |
br label %CONT_BB8 | |
CONT_BB8: ; preds = %POLL_BB7, %BB38 | |
%112 = ptrtoint i64* %arg_searchSpace to i64 | |
%t724 = add i64 %112, %103 | |
%113 = load void (i64*, i64*, i32)*, void (i64*, i64*, i32)** @tramp_25 | |
%114 = bitcast <16 x i8>* %2 to i64* | |
%115 = inttoptr i64 %t724 to i64* | |
notail call monocc void %113(i64* %114, i64* %115, i32 16) | |
%116 = load volatile <16 x i8>, <16 x i8>* %2 | |
%117 = bitcast <4 x i32> %102 to <16 x i8> | |
store <16 x i8> %117, <16 x i8>* %8 | |
store <16 x i8> %116, <16 x i8>* %7 | |
%118 = load void (i64, i64, i64, i64, i64)*, void (i64, i64, i64, i64, i64)** @tramp_26 | |
%119 = ptrtoint <16 x i8>* %0 to i64 | |
%120 = bitcast <16 x i8>* %8 to i8* | |
%121 = getelementptr i8, i8* %120, i32 0 | |
%122 = bitcast i8* %121 to i64* | |
%123 = load i64, i64* %122 | |
%124 = getelementptr i8, i8* %120, i32 8 | |
%125 = bitcast i8* %124 to i64* | |
%126 = load i64, i64* %125 | |
%127 = bitcast <16 x i8>* %7 to i8* | |
%128 = getelementptr i8, i8* %127, i32 0 | |
%129 = bitcast i8* %128 to i64* | |
%130 = load i64, i64* %129 | |
%131 = getelementptr i8, i8* %127, i32 8 | |
%132 = bitcast i8* %131 to i64* | |
%133 = load i64, i64* %132 | |
notail call monocc void %118(i64 %119, i64 %123, i64 %126, i64 %130, i64 %133) | |
%134 = load <16 x i8>, <16 x i8>* %0 | |
%135 = load volatile <16 x i8>, <16 x i8>* %0 | |
%136 = icmp eq <16 x i8> zeroinitializer, %135 | |
%137 = sext <16 x i1> %136 to <16 x i8> | |
%t741 = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %137) | |
%138 = sext i32 %t741 to i64 | |
%139 = icmp eq i64 %138, 65535 | |
%t1115 = zext i1 %139 to i32 | |
%140 = icmp eq i32 %t1115, 0 | |
br i1 %140, label %BB39, label %BB40 | |
BB39: ; preds = %CONT_BB8 | |
%141 = trunc i64 %103 to i32 | |
%t774 = sext i32 %141 to i64 | |
%142 = load volatile <16 x i8>, <16 x i8>* %0 | |
store <2 x i64> zeroinitializer, <2 x i64>* %1 | |
br label %BB546 | |
BB40: ; preds = %CONT_BB8 | |
%t758 = add i64 %103, 16 | |
br label %BB37 | |
BB546: ; preds = %BB39 | |
%143 = bitcast <16 x i8> %142 to <2 x i64> | |
store <2 x i64> %143, <2 x i64>* %1 | |
br label %BB548 | |
BB548: ; preds = %BB551, %BB546 | |
%144 = phi i32 [ 0, %BB546 ], [ %t1124, %BB551 ] | |
%145 = phi i64 [ 0, %BB546 ], [ %157, %BB551 ] | |
%146 = icmp slt i32 %144, 2 | |
br i1 %146, label %BB549, label %BB550 | |
BB549: ; preds = %BB548 | |
%147 = load volatile i64, i64* inttoptr (i64 4497641040 to i64*) | |
%148 = icmp eq i64 %147, 0 | |
%149 = call i1 @llvm.expect.i1(i1 %148, i1 true) | |
br i1 %149, label %CONT_BB10, label %POLL_BB9 | |
BB550: ; preds = %CONT_BB10, %BB548 | |
%150 = phi i64 [ %157, %CONT_BB10 ], [ %145, %BB548 ] | |
%t803 = shl i32 %144, 3 | |
%t812 = sub i64 %150, 1 | |
%t814 = xor i64 %150, %t812 | |
%t816 = mul i64 %t814, 283686952306184 | |
%t818 = lshr i64 %t816, 57 | |
%151 = trunc i64 %t818 to i32 | |
%t820 = sext i32 %151 to i64 | |
%152 = trunc i64 %t820 to i32 | |
%t822 = add i32 %t803, %152 | |
%153 = trunc i64 %t774 to i32 | |
%t1122 = add i32 %153, %t822 | |
br label %BB1 | |
POLL_BB9: ; preds = %BB549 | |
%154 = load void ()*, void ()** @mono_threads_state_poll.4 | |
call void %154() | |
br label %CONT_BB10 | |
CONT_BB10: ; preds = %POLL_BB9, %BB549 | |
%155 = load i64 (i64*, i32)*, i64 (i64*, i32)** @tramp_27 | |
%156 = bitcast <2 x i64>* %1 to i64* | |
%157 = notail call monocc i64 %155(i64* %156, i32 %144) | |
%158 = icmp ne i64 %157, 0 | |
br i1 %158, label %BB550, label %BB551 | |
BB551: ; preds = %CONT_BB10 | |
%t1124 = add i32 %144, 1 | |
br label %BB548 | |
BB42: ; preds = %BB41 | |
%159 = trunc i64 %103 to i32 | |
%t851 = sext i32 %159 to i64 | |
%160 = trunc i64 %t851 to i32 | |
%t855 = sub i32 %arg_length, %160 | |
%t1112 = sext i32 %t855 to i64 | |
br label %BB4 | |
BB27: ; preds = %BB26 | |
%t475 = add i64 %13, 1 | |
%161 = ptrtoint i64* %arg_searchSpace to i64 | |
%t491 = add i64 %161, %t475 | |
%162 = inttoptr i64 %t491 to i8* | |
%163 = load i8, i8* %162 | |
%164 = zext i8 %163 to i32 | |
%165 = icmp eq i32 %arg_value, %164 | |
br i1 %165, label %BB10, label %BB28 | |
BB28: ; preds = %BB27 | |
%t511 = add i64 %13, 2 | |
%166 = ptrtoint i64* %arg_searchSpace to i64 | |
%t527 = add i64 %166, %t511 | |
%167 = inttoptr i64 %t527 to i8* | |
%168 = load i8, i8* %167 | |
%169 = zext i8 %168 to i32 | |
%170 = icmp eq i32 %arg_value, %169 | |
br i1 %170, label %BB12, label %BB29 | |
BB29: ; preds = %BB28 | |
%t547 = add i64 %13, 3 | |
%171 = ptrtoint i64* %arg_searchSpace to i64 | |
%t563 = add i64 %171, %t547 | |
%172 = inttoptr i64 %t563 to i8* | |
%173 = load i8, i8* %172 | |
%174 = zext i8 %173 to i32 | |
%175 = icmp eq i32 %arg_value, %174 | |
br i1 %175, label %BB14, label %BB30 | |
BB30: ; preds = %BB29 | |
%t581 = add i64 %13, 4 | |
br label %BB25 | |
BB6: ; preds = %BB5 | |
%176 = ptrtoint i64* %arg_searchSpace to i32 | |
%t65 = sext i32 %176 to i64 | |
%t23 = and i64 %t65, 15 | |
%177 = trunc i64 %t23 to i32 | |
%t72 = sub i32 16, %177 | |
%t79 = and i32 %t72, 15 | |
%t1102 = sext i32 %t79 to i64 | |
br label %BB4 | |
} |
This file contains 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
; Function Attrs: uwtable | |
define monocc i32 @"System.SpanHelpers:IndexOf (byte&,byte,int)"(i64* %arg_searchSpace, i32 %arg_value, i32 %arg_length) #0 { | |
BB0: | |
%0 = alloca <2 x i64>, align 16 | |
%1 = alloca <16 x i8>, align 16 | |
%2 = alloca i64, align 8 | |
%3 = load volatile i64, i64* inttoptr (i64 4425084496 to i64*) | |
%4 = icmp eq i64 %3, 0 | |
%5 = call i1 @llvm.expect.i1(i1 %4, i1 true) | |
br i1 %5, label %CONT_BB2, label %POLL_BB1 | |
POLL_BB1: ; preds = %BB0 | |
%6 = load void ()*, void ()** @mono_threads_state_poll | |
call void %6() | |
br label %CONT_BB2 | |
CONT_BB2: ; preds = %POLL_BB1, %BB0 | |
br label %BB3 | |
BB3: ; preds = %CONT_BB2 | |
br label %BB2 | |
BB2: ; preds = %BB3 | |
store i64 0, i64* %2 | |
%7 = getelementptr i64, i64* %2, i32 0 | |
store volatile i64 0, i64* %7 | |
%8 = load volatile i64, i64* %2 | |
%t22 = sext i32 %arg_length to i64 | |
br i1 false, label %BB4, label %BB5 | |
BB4: ; preds = %BB6, %BB5, %BB42, %BB23, %BB2 | |
%9 = phi i64 [ %t22, %BB2 ], [ %t22, %BB5 ], [ %t1105, %BB6 ], [ %t105, %BB23 ], [ %t1115, %BB42 ] | |
%10 = phi i64 [ %8, %BB2 ], [ %8, %BB5 ], [ %8, %BB6 ], [ %t394, %BB23 ], [ %100, %BB42 ] | |
%11 = icmp uge i64 %9, 8 | |
br i1 %11, label %BB7, label %BB24 | |
BB5: ; preds = %BB2 | |
%12 = icmp slt i32 %arg_length, 32 | |
br i1 %12, label %BB4, label %BB6 | |
BB7: ; preds = %BB4 | |
%13 = load volatile i64, i64* inttoptr (i64 4425084496 to i64*) | |
%14 = icmp eq i64 %13, 0 | |
%15 = call i1 @llvm.expect.i1(i1 %14, i1 true) | |
br i1 %15, label %CONT_BB4, label %POLL_BB3 | |
BB24: ; preds = %BB4 | |
%16 = icmp ult i64 %9, 4 | |
br i1 %16, label %BB25, label %BB26 | |
POLL_BB3: ; preds = %BB7 | |
%17 = load void ()*, void ()** @mono_threads_state_poll.1 | |
call void %17() | |
br label %CONT_BB4 | |
CONT_BB4: ; preds = %POLL_BB3, %BB7 | |
%t105 = sub i64 %9, 8 | |
%18 = ptrtoint i64* %arg_searchSpace to i64 | |
%t124 = add i64 %18, %10 | |
%19 = inttoptr i64 %t124 to i8* | |
%20 = load i8, i8* %19 | |
%21 = zext i8 %20 to i32 | |
%22 = icmp eq i32 %arg_value, %21 | |
br i1 %22, label %BB8, label %BB9 | |
BB8: ; preds = %BB26, %CONT_BB6, %CONT_BB4 | |
%23 = phi i64 [ %10, %CONT_BB4 ], [ %10, %BB26 ], [ %77, %CONT_BB6 ] | |
%24 = trunc i64 %23 to i32 | |
%t1136 = sext i32 %24 to i64 | |
%25 = trunc i64 %t1136 to i32 | |
br label %BB1 | |
BB9: ; preds = %CONT_BB4 | |
%t144 = add i64 %10, 1 | |
%26 = ptrtoint i64* %arg_searchSpace to i64 | |
%t160 = add i64 %26, %t144 | |
%27 = inttoptr i64 %t160 to i8* | |
%28 = load i8, i8* %27 | |
%29 = zext i8 %28 to i32 | |
%30 = icmp eq i32 %arg_value, %29 | |
br i1 %30, label %BB10, label %BB11 | |
BB1: ; preds = %BB555, %BB34, %BB22, %BB20, %BB18, %BB16, %BB14, %BB12, %BB10, %BB8 | |
%31 = phi i32 [ %t1125, %BB555 ], [ -1, %BB34 ], [ %25, %BB8 ], [ %33, %BB10 ], [ %40, %BB12 ], [ %47, %BB14 ], [ %54, %BB16 ], [ %61, %BB18 ], [ %68, %BB20 ], [ %75, %BB22 ] | |
ret i32 %31 | |
BB10: ; preds = %BB27, %BB9 | |
%t892 = add i64 %10, 1 | |
%32 = trunc i64 %t892 to i32 | |
%t1133 = sext i32 %32 to i64 | |
%33 = trunc i64 %t1133 to i32 | |
br label %BB1 | |
BB11: ; preds = %BB9 | |
%t180 = add i64 %10, 2 | |
%34 = ptrtoint i64* %arg_searchSpace to i64 | |
%t196 = add i64 %34, %t180 | |
%35 = inttoptr i64 %t196 to i8* | |
%36 = load i8, i8* %35 | |
%37 = zext i8 %36 to i32 | |
%38 = icmp eq i32 %arg_value, %37 | |
br i1 %38, label %BB12, label %BB13 | |
BB12: ; preds = %BB28, %BB11 | |
%t924 = add i64 %10, 2 | |
%39 = trunc i64 %t924 to i32 | |
%t1132 = sext i32 %39 to i64 | |
%40 = trunc i64 %t1132 to i32 | |
br label %BB1 | |
BB13: ; preds = %BB11 | |
%t216 = add i64 %10, 3 | |
%41 = ptrtoint i64* %arg_searchSpace to i64 | |
%t232 = add i64 %41, %t216 | |
%42 = inttoptr i64 %t232 to i8* | |
%43 = load i8, i8* %42 | |
%44 = zext i8 %43 to i32 | |
%45 = icmp eq i32 %arg_value, %44 | |
br i1 %45, label %BB14, label %BB15 | |
BB14: ; preds = %BB29, %BB13 | |
%t956 = add i64 %10, 3 | |
%46 = trunc i64 %t956 to i32 | |
%t1131 = sext i32 %46 to i64 | |
%47 = trunc i64 %t1131 to i32 | |
br label %BB1 | |
BB15: ; preds = %BB13 | |
%t252 = add i64 %10, 4 | |
%48 = ptrtoint i64* %arg_searchSpace to i64 | |
%t268 = add i64 %48, %t252 | |
%49 = inttoptr i64 %t268 to i8* | |
%50 = load i8, i8* %49 | |
%51 = zext i8 %50 to i32 | |
%52 = icmp eq i32 %arg_value, %51 | |
br i1 %52, label %BB16, label %BB17 | |
BB16: ; preds = %BB15 | |
%t988 = add i64 %10, 4 | |
%53 = trunc i64 %t988 to i32 | |
%t1142 = sext i32 %53 to i64 | |
%54 = trunc i64 %t1142 to i32 | |
br label %BB1 | |
BB17: ; preds = %BB15 | |
%t288 = add i64 %10, 5 | |
%55 = ptrtoint i64* %arg_searchSpace to i64 | |
%t304 = add i64 %55, %t288 | |
%56 = inttoptr i64 %t304 to i8* | |
%57 = load i8, i8* %56 | |
%58 = zext i8 %57 to i32 | |
%59 = icmp eq i32 %arg_value, %58 | |
br i1 %59, label %BB18, label %BB19 | |
BB18: ; preds = %BB17 | |
%t1020 = add i64 %10, 5 | |
%60 = trunc i64 %t1020 to i32 | |
%t1141 = sext i32 %60 to i64 | |
%61 = trunc i64 %t1141 to i32 | |
br label %BB1 | |
BB19: ; preds = %BB17 | |
%t324 = add i64 %10, 6 | |
%62 = ptrtoint i64* %arg_searchSpace to i64 | |
%t340 = add i64 %62, %t324 | |
%63 = inttoptr i64 %t340 to i8* | |
%64 = load i8, i8* %63 | |
%65 = zext i8 %64 to i32 | |
%66 = icmp eq i32 %arg_value, %65 | |
br i1 %66, label %BB20, label %BB21 | |
BB20: ; preds = %BB19 | |
%t1052 = add i64 %10, 6 | |
%67 = trunc i64 %t1052 to i32 | |
%t1140 = sext i32 %67 to i64 | |
%68 = trunc i64 %t1140 to i32 | |
br label %BB1 | |
BB21: ; preds = %BB19 | |
%t360 = add i64 %10, 7 | |
%69 = ptrtoint i64* %arg_searchSpace to i64 | |
%t376 = add i64 %69, %t360 | |
%70 = inttoptr i64 %t376 to i8* | |
%71 = load i8, i8* %70 | |
%72 = zext i8 %71 to i32 | |
%73 = icmp eq i32 %arg_value, %72 | |
br i1 %73, label %BB22, label %BB23 | |
BB22: ; preds = %BB21 | |
%t1084 = add i64 %10, 7 | |
%74 = trunc i64 %t1084 to i32 | |
%t1139 = sext i32 %74 to i64 | |
%75 = trunc i64 %t1139 to i32 | |
br label %BB1 | |
BB23: ; preds = %BB21 | |
%t394 = add i64 %10, 8 | |
br label %BB4 | |
BB25: ; preds = %BB30, %BB32, %BB24 | |
%76 = phi i64 [ %9, %BB24 ], [ %t436, %BB30 ], [ %t607, %BB32 ] | |
%77 = phi i64 [ %10, %BB24 ], [ %t581, %BB30 ], [ %t644, %BB32 ] | |
%78 = icmp ugt i64 %76, 0 | |
br i1 %78, label %BB31, label %BB33 | |
BB26: ; preds = %BB24 | |
%t436 = sub i64 %9, 4 | |
%79 = ptrtoint i64* %arg_searchSpace to i64 | |
%t455 = add i64 %79, %10 | |
%80 = inttoptr i64 %t455 to i8* | |
%81 = load i8, i8* %80 | |
%82 = zext i8 %81 to i32 | |
%83 = icmp eq i32 %arg_value, %82 | |
br i1 %83, label %BB8, label %BB27 | |
BB31: ; preds = %BB25 | |
%84 = load volatile i64, i64* inttoptr (i64 4425084496 to i64*) | |
%85 = icmp eq i64 %84, 0 | |
%86 = call i1 @llvm.expect.i1(i1 %85, i1 true) | |
br i1 %86, label %CONT_BB6, label %POLL_BB5 | |
BB33: ; preds = %BB25 | |
br i1 false, label %BB34, label %BB35 | |
POLL_BB5: ; preds = %BB31 | |
%87 = load void ()*, void ()** @mono_threads_state_poll.2 | |
call void %87() | |
br label %CONT_BB6 | |
CONT_BB6: ; preds = %POLL_BB5, %BB31 | |
%t607 = sub i64 %76, 1 | |
%88 = ptrtoint i64* %arg_searchSpace to i64 | |
%t626 = add i64 %88, %77 | |
%89 = inttoptr i64 %t626 to i8* | |
%90 = load i8, i8* %89 | |
%91 = zext i8 %90 to i32 | |
%92 = icmp eq i32 %arg_value, %91 | |
br i1 %92, label %BB8, label %BB32 | |
BB32: ; preds = %CONT_BB6 | |
%t644 = add i64 %77, 1 | |
br label %BB25 | |
BB34: ; preds = %BB41, %BB35, %BB33 | |
br label %BB1 | |
BB35: ; preds = %BB33 | |
%93 = trunc i64 %77 to i32 | |
%t669 = sext i32 %93 to i64 | |
%94 = trunc i64 %t669 to i32 | |
%95 = icmp sge i32 %94, %arg_length | |
br i1 %95, label %BB34, label %BB36 | |
BB36: ; preds = %BB35 | |
%96 = trunc i64 %77 to i32 | |
%t678 = sext i32 %96 to i64 | |
%97 = trunc i64 %t678 to i32 | |
%t679 = sub i32 %arg_length, %97 | |
%t687 = and i32 %t679, -16 | |
%t1112 = sext i32 %t687 to i64 | |
%t702 = mul i32 %arg_value, 16843009 | |
%98 = insertelement <4 x i32> zeroinitializer, i32 %t702, i32 0 | |
%99 = shufflevector <4 x i32> %98, <4 x i32> undef, <4 x i32> zeroinitializer | |
br label %BB37 | |
BB37: ; preds = %BB40, %BB36 | |
%100 = phi i64 [ %77, %BB36 ], [ %t761, %BB40 ] | |
%101 = icmp ugt i64 %t1112, %100 | |
br i1 %101, label %BB38, label %BB41 | |
BB38: ; preds = %BB37 | |
%102 = load volatile i64, i64* inttoptr (i64 4425084496 to i64*) | |
%103 = icmp eq i64 %102, 0 | |
%104 = call i1 @llvm.expect.i1(i1 %103, i1 true) | |
br i1 %104, label %CONT_BB8, label %POLL_BB7 | |
BB41: ; preds = %BB37 | |
%105 = trunc i64 %100 to i32 | |
%t845 = sext i32 %105 to i64 | |
%106 = trunc i64 %t845 to i32 | |
%107 = icmp sge i32 %106, %arg_length | |
br i1 %107, label %BB34, label %BB42 | |
POLL_BB7: ; preds = %BB38 | |
%108 = load void ()*, void ()** @mono_threads_state_poll.3 | |
call void %108() | |
br label %CONT_BB8 | |
CONT_BB8: ; preds = %POLL_BB7, %BB38 | |
%109 = ptrtoint i64* %arg_searchSpace to i64 | |
%t724 = add i64 %109, %100 | |
%110 = load void (i64*, i64*, i32)*, void (i64*, i64*, i32)** @tramp_25 | |
%111 = bitcast <16 x i8>* %1 to i64* | |
%112 = inttoptr i64 %t724 to i64* | |
notail call monocc void %110(i64* %111, i64* %112, i32 16) | |
%113 = load volatile <16 x i8>, <16 x i8>* %1 | |
%114 = icmp eq <4 x i32> %99, <16 x i8> %113 | |
%115 = sext <4 x i1> %114 to <4 x i32> | |
%116 = icmp eq <16 x i8> zeroinitializer, <4 x i32> %115 | |
%117 = sext <16 x i1> %116 to <16 x i8> | |
%t744 = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %117) | |
%118 = sext i32 %t744 to i64 | |
%119 = icmp eq i64 %118, 65535 | |
%t1118 = zext i1 %119 to i32 | |
%120 = icmp eq i32 %t1118, 0 | |
br i1 %120, label %BB39, label %BB40 | |
BB39: ; preds = %CONT_BB8 | |
%121 = trunc i64 %100 to i32 | |
%t777 = sext i32 %121 to i64 | |
store <2 x i64> zeroinitializer, <2 x i64>* %0 | |
br label %BB551 | |
BB40: ; preds = %CONT_BB8 | |
%t761 = add i64 %100, 16 | |
br label %BB37 | |
BB551: ; preds = %BB39 | |
%122 = bitcast <4 x i32> %115 to <2 x i64> | |
store <2 x i64> %122, <2 x i64>* %0 | |
br label %BB553 | |
BB553: ; preds = %BB556, %BB551 | |
%123 = phi i32 [ 0, %BB551 ], [ %t1127, %BB556 ] | |
%124 = phi i64 [ 0, %BB551 ], [ %136, %BB556 ] | |
%125 = icmp slt i32 %123, 2 | |
br i1 %125, label %BB554, label %BB555 | |
BB554: ; preds = %BB553 | |
%126 = load volatile i64, i64* inttoptr (i64 4425084496 to i64*) | |
%127 = icmp eq i64 %126, 0 | |
%128 = call i1 @llvm.expect.i1(i1 %127, i1 true) | |
br i1 %128, label %CONT_BB10, label %POLL_BB9 | |
BB555: ; preds = %CONT_BB10, %BB553 | |
%129 = phi i64 [ %136, %CONT_BB10 ], [ %124, %BB553 ] | |
%t806 = shl i32 %123, 3 | |
%t815 = sub i64 %129, 1 | |
%t817 = xor i64 %129, %t815 | |
%t819 = mul i64 %t817, 283686952306184 | |
%t821 = lshr i64 %t819, 57 | |
%130 = trunc i64 %t821 to i32 | |
%t823 = sext i32 %130 to i64 | |
%131 = trunc i64 %t823 to i32 | |
%t825 = add i32 %t806, %131 | |
%132 = trunc i64 %t777 to i32 | |
%t1125 = add i32 %132, %t825 | |
br label %BB1 | |
POLL_BB9: ; preds = %BB554 | |
%133 = load void ()*, void ()** @mono_threads_state_poll.4 | |
call void %133() | |
br label %CONT_BB10 | |
CONT_BB10: ; preds = %POLL_BB9, %BB554 | |
%134 = load i64 (i64*, i32)*, i64 (i64*, i32)** @tramp_26 | |
%135 = bitcast <2 x i64>* %0 to i64* | |
%136 = notail call monocc i64 %134(i64* %135, i32 %123) | |
%137 = icmp ne i64 %136, 0 | |
br i1 %137, label %BB555, label %BB556 | |
BB556: ; preds = %CONT_BB10 | |
%t1127 = add i32 %123, 1 | |
br label %BB553 | |
BB42: ; preds = %BB41 | |
%138 = trunc i64 %100 to i32 | |
%t854 = sext i32 %138 to i64 | |
%139 = trunc i64 %t854 to i32 | |
%t858 = sub i32 %arg_length, %139 | |
%t1115 = sext i32 %t858 to i64 | |
br label %BB4 | |
BB27: ; preds = %BB26 | |
%t475 = add i64 %10, 1 | |
%140 = ptrtoint i64* %arg_searchSpace to i64 | |
%t491 = add i64 %140, %t475 | |
%141 = inttoptr i64 %t491 to i8* | |
%142 = load i8, i8* %141 | |
%143 = zext i8 %142 to i32 | |
%144 = icmp eq i32 %arg_value, %143 | |
br i1 %144, label %BB10, label %BB28 | |
BB28: ; preds = %BB27 | |
%t511 = add i64 %10, 2 | |
%145 = ptrtoint i64* %arg_searchSpace to i64 | |
%t527 = add i64 %145, %t511 | |
%146 = inttoptr i64 %t527 to i8* | |
%147 = load i8, i8* %146 | |
%148 = zext i8 %147 to i32 | |
%149 = icmp eq i32 %arg_value, %148 | |
br i1 %149, label %BB12, label %BB29 | |
BB29: ; preds = %BB28 | |
%t547 = add i64 %10, 3 | |
%150 = ptrtoint i64* %arg_searchSpace to i64 | |
%t563 = add i64 %150, %t547 | |
%151 = inttoptr i64 %t563 to i8* | |
%152 = load i8, i8* %151 | |
%153 = zext i8 %152 to i32 | |
%154 = icmp eq i32 %arg_value, %153 | |
br i1 %154, label %BB14, label %BB30 | |
BB30: ; preds = %BB29 | |
%t581 = add i64 %10, 4 | |
br label %BB25 | |
BB6: ; preds = %BB5 | |
%155 = ptrtoint i64* %arg_searchSpace to i32 | |
%t65 = sext i32 %155 to i64 | |
%t23 = and i64 %t65, 15 | |
%156 = trunc i64 %t23 to i32 | |
%t72 = sub i32 16, %156 | |
%t79 = and i32 %t72, 15 | |
%t1105 = sext i32 %t79 to i64 | |
br label %BB4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment