Created
August 8, 2016 06:34
-
-
Save ChrisRackauckas/982c8671476cb0a1b49f8399cf5103b4 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
julia> @code_llvm threadstest1(A,b,k) | |
define %jl_value_t* @julia_threadstest1_69052(%jl_value_t*, %jl_value_t*, %jl_value_t*) #0 { | |
top: | |
%thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #2 | |
%ptls_i8 = getelementptr i8, i8* %thread_ptr, i64 -2672 | |
%ptls = bitcast i8* %ptls_i8 to %jl_value_t*** | |
%3 = alloca [40 x %jl_value_t*], align 8 | |
%.sub = getelementptr inbounds [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 0 | |
%4 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 33 | |
%5 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 2 | |
%6 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 32 | |
%7 = bitcast %jl_value_t** %4 to i8* | |
call void @llvm.memset.p0i8.i32(i8* %7, i8 0, i32 56, i32 8, i1 false) | |
%8 = bitcast [40 x %jl_value_t*]* %3 to i64* | |
%9 = bitcast %jl_value_t** %5 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %9, i8 0, i64 240, i32 8, i1 false) | |
store i64 76, i64* %8, align 8 | |
%10 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 1 | |
%11 = bitcast i8* %ptls_i8 to i64* | |
%12 = load i64, i64* %11, align 8 | |
%13 = bitcast %jl_value_t** %10 to i64* | |
store i64 %12, i64* %13, align 8 | |
store %jl_value_t** %.sub, %jl_value_t*** %ptls, align 8 | |
store %jl_value_t* null, %jl_value_t** %6, align 8 | |
%14 = call i64 @julia__length_68870(%jl_value_t* %0) #0 | |
%15 = icmp slt i64 %14, 1 | |
br i1 %15, label %L2, label %if.lr.ph | |
if.lr.ph: ; preds = %top | |
%16 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 3 | |
%17 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 4 | |
%18 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 5 | |
%19 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 6 | |
%20 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 7 | |
%21 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 8 | |
%22 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 9 | |
%23 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 10 | |
%24 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 11 | |
%25 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 12 | |
%26 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 13 | |
%27 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 14 | |
%28 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 15 | |
%29 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 16 | |
%30 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 17 | |
%31 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 18 | |
%32 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 19 | |
%33 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 20 | |
%34 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 21 | |
%35 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 22 | |
%36 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 23 | |
%37 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 24 | |
%38 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 25 | |
%39 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 26 | |
%40 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 27 | |
%41 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 28 | |
%42 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 29 | |
%43 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 30 | |
%44 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 31 | |
%45 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 39 | |
%46 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 38 | |
%47 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 37 | |
%48 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 36 | |
%49 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 35 | |
%50 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 34 | |
%51 = bitcast %jl_value_t* %0 to double** | |
%52 = load double*, double** %51, align 8 | |
%53 = bitcast %jl_value_t* %2 to %jl_value_t*** | |
%54 = bitcast %jl_value_t* %1 to double** | |
br label %if | |
L2.loopexit: ; preds = %pass.60 | |
br label %L2 | |
L2: ; preds = %L2.loopexit, %top | |
%55 = load i64, i64* %13, align 8 | |
store i64 %55, i64* %11, align 8 | |
ret %jl_value_t* %0 | |
if: ; preds = %if.lr.ph, %pass.60 | |
%"#temp#.065" = phi i64 [ 1, %if.lr.ph ], [ %282, %pass.60 ] | |
%56 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%57 = load %jl_value_t*, %jl_value_t** %56, align 8 | |
%58 = icmp eq %jl_value_t* %57, null | |
br i1 %58, label %fail, label %pass | |
fail: ; preds = %if | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass: ; preds = %if | |
store %jl_value_t* %57, %jl_value_t** %5, align 8 | |
%59 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%60 = getelementptr %jl_value_t*, %jl_value_t** %59, i64 1 | |
%61 = load %jl_value_t*, %jl_value_t** %60, align 8 | |
%62 = icmp eq %jl_value_t* %61, null | |
br i1 %62, label %fail3, label %pass.4 | |
fail3: ; preds = %pass | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.4: ; preds = %pass | |
store %jl_value_t* %61, %jl_value_t** %16, align 8 | |
%63 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%64 = getelementptr %jl_value_t*, %jl_value_t** %63, i64 2 | |
%65 = load %jl_value_t*, %jl_value_t** %64, align 8 | |
%66 = icmp eq %jl_value_t* %65, null | |
br i1 %66, label %fail5, label %pass.6 | |
fail5: ; preds = %pass.4 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.6: ; preds = %pass.4 | |
store %jl_value_t* %65, %jl_value_t** %17, align 8 | |
%67 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%68 = getelementptr %jl_value_t*, %jl_value_t** %67, i64 4 | |
%69 = load %jl_value_t*, %jl_value_t** %68, align 8 | |
%70 = icmp eq %jl_value_t* %69, null | |
br i1 %70, label %fail7, label %pass.8 | |
fail7: ; preds = %pass.6 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.8: ; preds = %pass.6 | |
%71 = add i64 %"#temp#.065", -1 | |
%72 = getelementptr double, double* %52, i64 %71 | |
%73 = load double, double* %72, align 8 | |
%74 = load double*, double** %54, align 8 | |
%75 = load double, double* %74, align 8 | |
%76 = getelementptr double, double* %74, i64 1 | |
%77 = load double, double* %76, align 8 | |
%78 = bitcast %jl_value_t* %57 to double** | |
%79 = load double*, double** %78, align 8 | |
%80 = getelementptr double, double* %79, i64 %71 | |
%81 = load double, double* %80, align 8 | |
%82 = load double*, double** %54, align 8 | |
%83 = getelementptr double, double* %82, i64 2 | |
%84 = load double, double* %83, align 8 | |
%85 = bitcast %jl_value_t* %61 to double** | |
%86 = load double*, double** %85, align 8 | |
%87 = getelementptr double, double* %86, i64 %71 | |
%88 = load double, double* %87, align 8 | |
%89 = load double*, double** %54, align 8 | |
%90 = getelementptr double, double* %89, i64 4 | |
%91 = load double, double* %90, align 8 | |
%92 = fmul double %75, %81 | |
%93 = fmul double %77, %88 | |
%94 = fadd double %92, %93 | |
%95 = bitcast %jl_value_t* %65 to double** | |
%96 = load double*, double** %95, align 8 | |
%97 = getelementptr double, double* %96, i64 %71 | |
%98 = load double, double* %97, align 8 | |
%99 = fmul double %84, %98 | |
%100 = fadd double %94, %99 | |
store %jl_value_t* %69, %jl_value_t** %18, align 8 | |
%101 = bitcast %jl_value_t* %69 to double** | |
%102 = load double*, double** %101, align 8 | |
%103 = getelementptr double, double* %102, i64 %71 | |
%104 = load double, double* %103, align 8 | |
%105 = fmul double %91, %104 | |
%106 = fadd double %100, %105 | |
%107 = call double @julia_sin_69053(double %106) #0 | |
%108 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%109 = getelementptr %jl_value_t*, %jl_value_t** %108, i64 6 | |
%110 = load %jl_value_t*, %jl_value_t** %109, align 8 | |
%111 = icmp eq %jl_value_t* %110, null | |
br i1 %111, label %fail9, label %pass.10 | |
fail9: ; preds = %pass.8 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.10: ; preds = %pass.8 | |
store %jl_value_t* %110, %jl_value_t** %19, align 8 | |
%112 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%113 = getelementptr %jl_value_t*, %jl_value_t** %112, i64 7 | |
%114 = load %jl_value_t*, %jl_value_t** %113, align 8 | |
%115 = icmp eq %jl_value_t* %114, null | |
br i1 %115, label %fail11, label %pass.12 | |
fail11: ; preds = %pass.10 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.12: ; preds = %pass.10 | |
store %jl_value_t* %114, %jl_value_t** %20, align 8 | |
%116 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%117 = getelementptr %jl_value_t*, %jl_value_t** %116, i64 9 | |
%118 = load %jl_value_t*, %jl_value_t** %117, align 8 | |
%119 = icmp eq %jl_value_t* %118, null | |
br i1 %119, label %fail13, label %pass.14 | |
fail13: ; preds = %pass.12 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.14: ; preds = %pass.12 | |
store %jl_value_t* %118, %jl_value_t** %21, align 8 | |
%120 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%121 = getelementptr %jl_value_t*, %jl_value_t** %120, i64 10 | |
%122 = load %jl_value_t*, %jl_value_t** %121, align 8 | |
%123 = icmp eq %jl_value_t* %122, null | |
br i1 %123, label %fail15, label %pass.16 | |
fail15: ; preds = %pass.14 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.16: ; preds = %pass.14 | |
%124 = load double*, double** %54, align 8 | |
%125 = getelementptr double, double* %124, i64 6 | |
%126 = load double, double* %125, align 8 | |
%127 = getelementptr double, double* %124, i64 7 | |
%128 = load double, double* %127, align 8 | |
%129 = bitcast %jl_value_t* %110 to double** | |
%130 = load double*, double** %129, align 8 | |
%131 = getelementptr double, double* %130, i64 %71 | |
%132 = load double, double* %131, align 8 | |
%133 = load double*, double** %54, align 8 | |
%134 = getelementptr double, double* %133, i64 9 | |
%135 = load double, double* %134, align 8 | |
%136 = bitcast %jl_value_t* %114 to double** | |
%137 = load double*, double** %136, align 8 | |
%138 = getelementptr double, double* %137, i64 %71 | |
%139 = load double, double* %138, align 8 | |
%140 = load double*, double** %54, align 8 | |
%141 = getelementptr double, double* %140, i64 10 | |
%142 = load double, double* %141, align 8 | |
%143 = fmul double %126, %132 | |
%144 = fmul double %128, %139 | |
%145 = fadd double %143, %144 | |
%146 = bitcast %jl_value_t* %118 to double** | |
%147 = load double*, double** %146, align 8 | |
%148 = getelementptr double, double* %147, i64 %71 | |
%149 = load double, double* %148, align 8 | |
%150 = fmul double %135, %149 | |
%151 = fadd double %145, %150 | |
store %jl_value_t* %122, %jl_value_t** %22, align 8 | |
%152 = bitcast %jl_value_t* %122 to double** | |
%153 = load double*, double** %152, align 8 | |
%154 = getelementptr double, double* %153, i64 %71 | |
%155 = load double, double* %154, align 8 | |
%156 = fmul double %142, %155 | |
%157 = fadd double %151, %156 | |
%158 = call double inttoptr (i64 140511618171504 to double (double)*)(double %157) | |
%159 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%160 = getelementptr %jl_value_t*, %jl_value_t** %159, i64 11 | |
%161 = load %jl_value_t*, %jl_value_t** %160, align 8 | |
%162 = icmp eq %jl_value_t* %161, null | |
br i1 %162, label %fail17, label %pass.18 | |
fail17: ; preds = %pass.16 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.18: ; preds = %pass.16 | |
store %jl_value_t* %161, %jl_value_t** %23, align 8 | |
%163 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%164 = getelementptr %jl_value_t*, %jl_value_t** %163, i64 13 | |
%165 = load %jl_value_t*, %jl_value_t** %164, align 8 | |
%166 = icmp eq %jl_value_t* %165, null | |
br i1 %166, label %fail19, label %pass.20 | |
fail19: ; preds = %pass.18 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.20: ; preds = %pass.18 | |
store %jl_value_t* %165, %jl_value_t** %24, align 8 | |
%167 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%168 = getelementptr %jl_value_t*, %jl_value_t** %167, i64 14 | |
%169 = load %jl_value_t*, %jl_value_t** %168, align 8 | |
%170 = icmp eq %jl_value_t* %169, null | |
br i1 %170, label %fail21, label %pass.22 | |
fail21: ; preds = %pass.20 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.22: ; preds = %pass.20 | |
store %jl_value_t* %169, %jl_value_t** %25, align 8 | |
%171 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%172 = getelementptr %jl_value_t*, %jl_value_t** %171, i64 15 | |
%173 = load %jl_value_t*, %jl_value_t** %172, align 8 | |
%174 = icmp eq %jl_value_t* %173, null | |
br i1 %174, label %fail23, label %pass.24 | |
fail23: ; preds = %pass.22 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.24: ; preds = %pass.22 | |
%175 = load double*, double** %54, align 8 | |
%176 = getelementptr double, double* %175, i64 11 | |
%177 = load double, double* %176, align 8 | |
%178 = getelementptr double, double* %175, i64 13 | |
%179 = load double, double* %178, align 8 | |
%180 = bitcast %jl_value_t* %161 to double** | |
%181 = load double*, double** %180, align 8 | |
%182 = getelementptr double, double* %181, i64 %71 | |
%183 = load double, double* %182, align 8 | |
%184 = load double*, double** %54, align 8 | |
%185 = getelementptr double, double* %184, i64 14 | |
%186 = load double, double* %185, align 8 | |
%187 = bitcast %jl_value_t* %165 to double** | |
%188 = load double*, double** %187, align 8 | |
%189 = getelementptr double, double* %188, i64 %71 | |
%190 = load double, double* %189, align 8 | |
%191 = load double*, double** %54, align 8 | |
%192 = getelementptr double, double* %191, i64 15 | |
%193 = load double, double* %192, align 8 | |
%194 = fmul double %177, %183 | |
%195 = fmul double %179, %190 | |
%196 = fadd double %194, %195 | |
%197 = bitcast %jl_value_t* %169 to double** | |
%198 = load double*, double** %197, align 8 | |
%199 = getelementptr double, double* %198, i64 %71 | |
%200 = load double, double* %199, align 8 | |
%201 = fmul double %186, %200 | |
%202 = fadd double %196, %201 | |
store %jl_value_t* %173, %jl_value_t** %26, align 8 | |
%203 = bitcast %jl_value_t* %173 to double** | |
%204 = load double*, double** %203, align 8 | |
%205 = getelementptr double, double* %204, i64 %71 | |
%206 = load double, double* %205, align 8 | |
%207 = fmul double %193, %206 | |
%208 = fadd double %202, %207 | |
%209 = call double inttoptr (i64 140511618213248 to double (double)*)(double %208) | |
%210 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%211 = getelementptr %jl_value_t*, %jl_value_t** %210, i64 17 | |
%212 = load %jl_value_t*, %jl_value_t** %211, align 8 | |
%213 = icmp eq %jl_value_t* %212, null | |
br i1 %213, label %fail25, label %pass.26 | |
fail25: ; preds = %pass.24 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.26: ; preds = %pass.24 | |
store %jl_value_t* %212, %jl_value_t** %27, align 8 | |
%214 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%215 = getelementptr %jl_value_t*, %jl_value_t** %214, i64 18 | |
%216 = load %jl_value_t*, %jl_value_t** %215, align 8 | |
%217 = icmp eq %jl_value_t* %216, null | |
br i1 %217, label %fail27, label %pass.28 | |
fail27: ; preds = %pass.26 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.28: ; preds = %pass.26 | |
store %jl_value_t* %216, %jl_value_t** %28, align 8 | |
%218 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%219 = getelementptr %jl_value_t*, %jl_value_t** %218, i64 19 | |
%220 = load %jl_value_t*, %jl_value_t** %219, align 8 | |
%221 = icmp eq %jl_value_t* %220, null | |
br i1 %221, label %fail29, label %pass.30 | |
fail29: ; preds = %pass.28 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.30: ; preds = %pass.28 | |
store %jl_value_t* %220, %jl_value_t** %29, align 8 | |
%222 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%223 = getelementptr %jl_value_t*, %jl_value_t** %222, i64 20 | |
%224 = load %jl_value_t*, %jl_value_t** %223, align 8 | |
%225 = icmp eq %jl_value_t* %224, null | |
br i1 %225, label %fail31, label %pass.32 | |
fail31: ; preds = %pass.30 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.32: ; preds = %pass.30 | |
store %jl_value_t* %224, %jl_value_t** %30, align 8 | |
%226 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%227 = getelementptr %jl_value_t*, %jl_value_t** %226, i64 21 | |
%228 = load %jl_value_t*, %jl_value_t** %227, align 8 | |
%229 = icmp eq %jl_value_t* %228, null | |
br i1 %229, label %fail33, label %pass.34 | |
fail33: ; preds = %pass.32 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.34: ; preds = %pass.32 | |
store %jl_value_t* %228, %jl_value_t** %31, align 8 | |
%230 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%231 = getelementptr %jl_value_t*, %jl_value_t** %230, i64 22 | |
%232 = load %jl_value_t*, %jl_value_t** %231, align 8 | |
%233 = icmp eq %jl_value_t* %232, null | |
br i1 %233, label %fail35, label %pass.36 | |
fail35: ; preds = %pass.34 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.36: ; preds = %pass.34 | |
store %jl_value_t* %232, %jl_value_t** %32, align 8 | |
%234 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%235 = getelementptr %jl_value_t*, %jl_value_t** %234, i64 23 | |
%236 = load %jl_value_t*, %jl_value_t** %235, align 8 | |
%237 = icmp eq %jl_value_t* %236, null | |
br i1 %237, label %fail37, label %pass.38 | |
fail37: ; preds = %pass.36 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.38: ; preds = %pass.36 | |
store %jl_value_t* %236, %jl_value_t** %33, align 8 | |
%238 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%239 = getelementptr %jl_value_t*, %jl_value_t** %238, i64 24 | |
%240 = load %jl_value_t*, %jl_value_t** %239, align 8 | |
%241 = icmp eq %jl_value_t* %240, null | |
br i1 %241, label %fail39, label %pass.40 | |
fail39: ; preds = %pass.38 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.40: ; preds = %pass.38 | |
store %jl_value_t* %240, %jl_value_t** %34, align 8 | |
%242 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%243 = getelementptr %jl_value_t*, %jl_value_t** %242, i64 25 | |
%244 = load %jl_value_t*, %jl_value_t** %243, align 8 | |
%245 = icmp eq %jl_value_t* %244, null | |
br i1 %245, label %fail41, label %pass.42 | |
fail41: ; preds = %pass.40 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.42: ; preds = %pass.40 | |
store %jl_value_t* %244, %jl_value_t** %35, align 8 | |
%246 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%247 = getelementptr %jl_value_t*, %jl_value_t** %246, i64 26 | |
%248 = load %jl_value_t*, %jl_value_t** %247, align 8 | |
%249 = icmp eq %jl_value_t* %248, null | |
br i1 %249, label %fail43, label %pass.44 | |
fail43: ; preds = %pass.42 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.44: ; preds = %pass.42 | |
store %jl_value_t* %248, %jl_value_t** %36, align 8 | |
%250 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%251 = getelementptr %jl_value_t*, %jl_value_t** %250, i64 27 | |
%252 = load %jl_value_t*, %jl_value_t** %251, align 8 | |
%253 = icmp eq %jl_value_t* %252, null | |
br i1 %253, label %fail45, label %pass.46 | |
fail45: ; preds = %pass.44 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.46: ; preds = %pass.44 | |
store %jl_value_t* %252, %jl_value_t** %37, align 8 | |
%254 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%255 = getelementptr %jl_value_t*, %jl_value_t** %254, i64 28 | |
%256 = load %jl_value_t*, %jl_value_t** %255, align 8 | |
%257 = icmp eq %jl_value_t* %256, null | |
br i1 %257, label %fail47, label %pass.48 | |
fail47: ; preds = %pass.46 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.48: ; preds = %pass.46 | |
store %jl_value_t* %256, %jl_value_t** %38, align 8 | |
%258 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%259 = getelementptr %jl_value_t*, %jl_value_t** %258, i64 29 | |
%260 = load %jl_value_t*, %jl_value_t** %259, align 8 | |
%261 = icmp eq %jl_value_t* %260, null | |
br i1 %261, label %fail49, label %pass.50 | |
fail49: ; preds = %pass.48 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.50: ; preds = %pass.48 | |
store %jl_value_t* %260, %jl_value_t** %39, align 8 | |
%262 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%263 = getelementptr %jl_value_t*, %jl_value_t** %262, i64 30 | |
%264 = load %jl_value_t*, %jl_value_t** %263, align 8 | |
%265 = icmp eq %jl_value_t* %264, null | |
br i1 %265, label %fail51, label %pass.52 | |
fail51: ; preds = %pass.50 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.52: ; preds = %pass.50 | |
store %jl_value_t* %264, %jl_value_t** %40, align 8 | |
%266 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%267 = getelementptr %jl_value_t*, %jl_value_t** %266, i64 31 | |
%268 = load %jl_value_t*, %jl_value_t** %267, align 8 | |
%269 = icmp eq %jl_value_t* %268, null | |
br i1 %269, label %fail53, label %pass.54 | |
fail53: ; preds = %pass.52 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.54: ; preds = %pass.52 | |
store %jl_value_t* %268, %jl_value_t** %41, align 8 | |
%270 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%271 = getelementptr %jl_value_t*, %jl_value_t** %270, i64 32 | |
%272 = load %jl_value_t*, %jl_value_t** %271, align 8 | |
%273 = icmp eq %jl_value_t* %272, null | |
br i1 %273, label %fail55, label %pass.56 | |
fail55: ; preds = %pass.54 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.56: ; preds = %pass.54 | |
store %jl_value_t* %272, %jl_value_t** %42, align 8 | |
%274 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%275 = getelementptr %jl_value_t*, %jl_value_t** %274, i64 33 | |
%276 = load %jl_value_t*, %jl_value_t** %275, align 8 | |
%277 = icmp eq %jl_value_t* %276, null | |
br i1 %277, label %fail57, label %pass.58 | |
fail57: ; preds = %pass.56 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.58: ; preds = %pass.56 | |
store %jl_value_t* %276, %jl_value_t** %43, align 8 | |
%278 = load %jl_value_t**, %jl_value_t*** %53, align 8 | |
%279 = getelementptr %jl_value_t*, %jl_value_t** %278, i64 34 | |
%280 = load %jl_value_t*, %jl_value_t** %279, align 8 | |
%281 = icmp eq %jl_value_t* %280, null | |
br i1 %281, label %fail59, label %pass.60 | |
fail59: ; preds = %pass.58 | |
call void @jl_throw(%jl_value_t* inttoptr (i64 140512817729960 to %jl_value_t*)) | |
unreachable | |
pass.60: ; preds = %pass.58 | |
%282 = add i64 %"#temp#.065", 1 | |
%283 = load double*, double** %54, align 8 | |
%284 = getelementptr double, double* %283, i64 17 | |
%285 = load double, double* %284, align 8 | |
%286 = getelementptr double, double* %283, i64 18 | |
%287 = load double, double* %286, align 8 | |
%288 = bitcast %jl_value_t* %212 to double** | |
%289 = load double*, double** %288, align 8 | |
%290 = getelementptr double, double* %289, i64 %71 | |
%291 = load double, double* %290, align 8 | |
%292 = load double*, double** %54, align 8 | |
%293 = getelementptr double, double* %292, i64 19 | |
%294 = load double, double* %293, align 8 | |
%295 = bitcast %jl_value_t* %216 to double** | |
%296 = load double*, double** %295, align 8 | |
%297 = getelementptr double, double* %296, i64 %71 | |
%298 = load double, double* %297, align 8 | |
%299 = load double*, double** %54, align 8 | |
%300 = getelementptr double, double* %299, i64 20 | |
%301 = load double, double* %300, align 8 | |
%302 = fmul double %285, %291 | |
%303 = fmul double %287, %298 | |
%304 = fadd double %302, %303 | |
%305 = bitcast %jl_value_t* %220 to double** | |
%306 = load double*, double** %305, align 8 | |
%307 = getelementptr double, double* %306, i64 %71 | |
%308 = load double, double* %307, align 8 | |
%309 = fmul double %294, %308 | |
%310 = fadd double %304, %309 | |
%311 = bitcast %jl_value_t* %224 to double** | |
%312 = load double*, double** %311, align 8 | |
%313 = getelementptr double, double* %312, i64 %71 | |
%314 = load double, double* %313, align 8 | |
%315 = fmul double %301, %314 | |
%316 = fadd double %310, %315 | |
%317 = load double*, double** %54, align 8 | |
%318 = getelementptr double, double* %317, i64 21 | |
%319 = load double, double* %318, align 8 | |
%320 = getelementptr double, double* %317, i64 22 | |
%321 = load double, double* %320, align 8 | |
%322 = bitcast %jl_value_t* %228 to double** | |
%323 = load double*, double** %322, align 8 | |
%324 = getelementptr double, double* %323, i64 %71 | |
%325 = load double, double* %324, align 8 | |
%326 = load double*, double** %54, align 8 | |
%327 = getelementptr double, double* %326, i64 23 | |
%328 = load double, double* %327, align 8 | |
%329 = bitcast %jl_value_t* %232 to double** | |
%330 = load double*, double** %329, align 8 | |
%331 = getelementptr double, double* %330, i64 %71 | |
%332 = load double, double* %331, align 8 | |
%333 = load double*, double** %54, align 8 | |
%334 = getelementptr double, double* %333, i64 24 | |
%335 = load double, double* %334, align 8 | |
%336 = fmul double %319, %325 | |
%337 = fmul double %321, %332 | |
%338 = fadd double %336, %337 | |
%339 = bitcast %jl_value_t* %236 to double** | |
%340 = load double*, double** %339, align 8 | |
%341 = getelementptr double, double* %340, i64 %71 | |
%342 = load double, double* %341, align 8 | |
%343 = fmul double %328, %342 | |
%344 = fadd double %338, %343 | |
%345 = bitcast %jl_value_t* %240 to double** | |
%346 = load double*, double** %345, align 8 | |
%347 = getelementptr double, double* %346, i64 %71 | |
%348 = load double, double* %347, align 8 | |
%349 = fmul double %335, %348 | |
%350 = fadd double %344, %349 | |
%351 = load double*, double** %54, align 8 | |
%352 = getelementptr double, double* %351, i64 25 | |
%353 = load double, double* %352, align 8 | |
%354 = getelementptr double, double* %351, i64 26 | |
%355 = load double, double* %354, align 8 | |
%356 = bitcast %jl_value_t* %244 to double** | |
%357 = load double*, double** %356, align 8 | |
%358 = getelementptr double, double* %357, i64 %71 | |
%359 = load double, double* %358, align 8 | |
%360 = load double*, double** %54, align 8 | |
%361 = getelementptr double, double* %360, i64 27 | |
%362 = load double, double* %361, align 8 | |
%363 = bitcast %jl_value_t* %248 to double** | |
%364 = load double*, double** %363, align 8 | |
%365 = getelementptr double, double* %364, i64 %71 | |
%366 = load double, double* %365, align 8 | |
%367 = load double*, double** %54, align 8 | |
%368 = getelementptr double, double* %367, i64 28 | |
%369 = load double, double* %368, align 8 | |
%370 = fmul double %353, %359 | |
%371 = fmul double %355, %366 | |
%372 = fadd double %370, %371 | |
%373 = bitcast %jl_value_t* %252 to double** | |
%374 = load double*, double** %373, align 8 | |
%375 = getelementptr double, double* %374, i64 %71 | |
%376 = load double, double* %375, align 8 | |
%377 = fmul double %362, %376 | |
%378 = fadd double %372, %377 | |
%379 = bitcast %jl_value_t* %256 to double** | |
%380 = load double*, double** %379, align 8 | |
%381 = getelementptr double, double* %380, i64 %71 | |
%382 = load double, double* %381, align 8 | |
%383 = fmul double %369, %382 | |
%384 = fadd double %378, %383 | |
%385 = load double*, double** %54, align 8 | |
%386 = getelementptr double, double* %385, i64 29 | |
%387 = load double, double* %386, align 8 | |
%388 = getelementptr double, double* %385, i64 30 | |
%389 = load double, double* %388, align 8 | |
%390 = bitcast %jl_value_t* %260 to double** | |
%391 = load double*, double** %390, align 8 | |
%392 = getelementptr double, double* %391, i64 %71 | |
%393 = load double, double* %392, align 8 | |
%394 = load double*, double** %54, align 8 | |
%395 = getelementptr double, double* %394, i64 31 | |
%396 = load double, double* %395, align 8 | |
%397 = bitcast %jl_value_t* %264 to double** | |
%398 = load double*, double** %397, align 8 | |
%399 = getelementptr double, double* %398, i64 %71 | |
%400 = load double, double* %399, align 8 | |
%401 = load double*, double** %54, align 8 | |
%402 = getelementptr double, double* %401, i64 32 | |
%403 = load double, double* %402, align 8 | |
%404 = fmul double %387, %393 | |
%405 = fmul double %389, %400 | |
%406 = fadd double %404, %405 | |
%407 = bitcast %jl_value_t* %268 to double** | |
%408 = load double*, double** %407, align 8 | |
%409 = getelementptr double, double* %408, i64 %71 | |
%410 = load double, double* %409, align 8 | |
%411 = fmul double %396, %410 | |
%412 = fadd double %406, %411 | |
%413 = bitcast %jl_value_t* %272 to double** | |
%414 = load double*, double** %413, align 8 | |
%415 = getelementptr double, double* %414, i64 %71 | |
%416 = load double, double* %415, align 8 | |
%417 = fmul double %403, %416 | |
%418 = fadd double %412, %417 | |
%419 = load double*, double** %54, align 8 | |
%420 = getelementptr double, double* %419, i64 33 | |
%421 = load double, double* %420, align 8 | |
%422 = getelementptr double, double* %419, i64 34 | |
%423 = load double, double* %422, align 8 | |
%424 = bitcast %jl_value_t* %276 to double** | |
%425 = load double*, double** %424, align 8 | |
%426 = getelementptr double, double* %425, i64 %71 | |
%427 = load double, double* %426, align 8 | |
%428 = fmul double %421, %427 | |
store %jl_value_t* %280, %jl_value_t** %44, align 8 | |
%429 = bitcast %jl_value_t* %280 to double** | |
%430 = load double*, double** %429, align 8 | |
%431 = getelementptr double, double* %430, i64 %71 | |
%432 = load double, double* %431, align 8 | |
%433 = fmul double %423, %432 | |
%434 = fadd double %428, %433 | |
%435 = fadd double %107, %158 | |
%436 = fadd double %435, %209 | |
store %jl_value_t* inttoptr (i64 140512825693400 to %jl_value_t*), %jl_value_t** %4, align 8 | |
%437 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%438 = getelementptr inbounds %jl_value_t, %jl_value_t* %437, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512815964912 to %jl_value_t*), %jl_value_t** %438, align 8 | |
%439 = bitcast %jl_value_t* %437 to double* | |
store double %436, double* %439, align 8 | |
store %jl_value_t* %437, %jl_value_t** %50, align 8 | |
%440 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%441 = getelementptr inbounds %jl_value_t, %jl_value_t* %440, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512815964912 to %jl_value_t*), %jl_value_t** %441, align 8 | |
%442 = bitcast %jl_value_t* %440 to double* | |
store double %316, double* %442, align 8 | |
store %jl_value_t* %440, %jl_value_t** %49, align 8 | |
%443 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%444 = getelementptr inbounds %jl_value_t, %jl_value_t* %443, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512815964912 to %jl_value_t*), %jl_value_t** %444, align 8 | |
%445 = bitcast %jl_value_t* %443 to double* | |
store double %350, double* %445, align 8 | |
store %jl_value_t* %443, %jl_value_t** %48, align 8 | |
%446 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%447 = getelementptr inbounds %jl_value_t, %jl_value_t* %446, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512815964912 to %jl_value_t*), %jl_value_t** %447, align 8 | |
%448 = bitcast %jl_value_t* %446 to double* | |
store double %384, double* %448, align 8 | |
store %jl_value_t* %446, %jl_value_t** %47, align 8 | |
%449 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%450 = getelementptr inbounds %jl_value_t, %jl_value_t* %449, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512815964912 to %jl_value_t*), %jl_value_t** %450, align 8 | |
%451 = bitcast %jl_value_t* %449 to double* | |
store double %418, double* %451, align 8 | |
store %jl_value_t* %449, %jl_value_t** %46, align 8 | |
%452 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%453 = getelementptr inbounds %jl_value_t, %jl_value_t* %452, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512815964912 to %jl_value_t*), %jl_value_t** %453, align 8 | |
%454 = bitcast %jl_value_t* %452 to double* | |
store double %434, double* %454, align 8 | |
store %jl_value_t* %452, %jl_value_t** %45, align 8 | |
%455 = call %jl_value_t* @julia_afoldl_69054(%jl_value_t* inttoptr (i64 140512867808456 to %jl_value_t*), %jl_value_t** %4, i32 7) | |
store %jl_value_t* %455, %jl_value_t** %6, align 8 | |
%456 = bitcast %jl_value_t* %455 to double* | |
%457 = load double, double* %456, align 16 | |
%458 = fadd double %73, %457 | |
store double %458, double* %72, align 8 | |
%459 = icmp eq i64 %"#temp#.065", %14 | |
br i1 %459, label %L2.loopexit, label %if | |
} | |
julia> @code_llvm threadstest2(A,b,k) | |
define %jl_value_t* @julia_threadstest2_69058(%jl_value_t*, %jl_value_t*, %jl_value_t*) #0 { | |
top: | |
%thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #2 | |
%ptls_i8 = getelementptr i8, i8* %thread_ptr, i64 -2672 | |
%ptls = bitcast i8* %ptls_i8 to %jl_value_t*** | |
%3 = alloca [6 x %jl_value_t*], align 8 | |
%.sub = getelementptr inbounds [6 x %jl_value_t*], [6 x %jl_value_t*]* %3, i64 0, i64 0 | |
%4 = getelementptr [6 x %jl_value_t*], [6 x %jl_value_t*]* %3, i64 0, i64 5 | |
%5 = getelementptr [6 x %jl_value_t*], [6 x %jl_value_t*]* %3, i64 0, i64 2 | |
%6 = getelementptr [6 x %jl_value_t*], [6 x %jl_value_t*]* %3, i64 0, i64 3 | |
%7 = getelementptr [6 x %jl_value_t*], [6 x %jl_value_t*]* %3, i64 0, i64 4 | |
%8 = bitcast %jl_value_t** %4 to i64* | |
store i64 0, i64* %8, align 8 | |
%9 = bitcast [6 x %jl_value_t*]* %3 to i64* | |
%10 = bitcast %jl_value_t** %5 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 16, i32 8, i1 false) | |
store i64 8, i64* %9, align 8 | |
%11 = getelementptr [6 x %jl_value_t*], [6 x %jl_value_t*]* %3, i64 0, i64 1 | |
%12 = bitcast i8* %ptls_i8 to i64* | |
%13 = load i64, i64* %12, align 8 | |
%14 = bitcast %jl_value_t** %11 to i64* | |
store i64 %13, i64* %14, align 8 | |
store %jl_value_t** %.sub, %jl_value_t*** %ptls, align 8 | |
store %jl_value_t* null, %jl_value_t** %7, align 8 | |
%15 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1456, i32 32) | |
%16 = getelementptr inbounds %jl_value_t, %jl_value_t* %15, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140512900312528 to %jl_value_t*), %jl_value_t** %16, align 8 | |
store %jl_value_t* %15, %jl_value_t** %5, align 8 | |
store %jl_value_t* %0, %jl_value_t** %6, align 8 | |
%17 = getelementptr inbounds %jl_value_t, %jl_value_t* %15, i64 0, i32 0 | |
store %jl_value_t* %0, %jl_value_t** %17, align 8 | |
%18 = getelementptr inbounds %jl_value_t, %jl_value_t* %15, i64 1, i32 0 | |
%19 = getelementptr inbounds %jl_value_t, %jl_value_t* %15, i64 2, i32 0 | |
%20 = bitcast %jl_value_t** %18 to i64* | |
store i64 0, i64* %20, align 8 | |
store %jl_value_t* %1, %jl_value_t** %18, align 8 | |
store %jl_value_t* %2, %jl_value_t** %19, align 8 | |
store %jl_value_t* %15, %jl_value_t** %4, align 8 | |
%21 = call %jl_value_t* @jl_f_svec(%jl_value_t* null, %jl_value_t** %4, i32 1) | |
store %jl_value_t* %21, %jl_value_t** %7, align 8 | |
call void inttoptr (i64 140521647461760 to void (%jl_value_t*)*)(%jl_value_t* %21) | |
%22 = load i64, i64* %14, align 8 | |
store i64 %22, i64* %12, align 8 | |
ret %jl_value_t* %0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment