Last active
September 19, 2016 17:10
-
-
Save vchuravy/ba27d29870e49df5f640ff0b5aa635c3 to your computer and use it in GitHub Desktop.
PPC llvm 3.9 threads
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 void @julia_test_threaded_atomic_minmax_65197(i16, i16) #0 !dbg !5 { | |
top: | |
%2 = alloca [704 x i8], align 16 | |
%.sub = getelementptr inbounds [704 x i8], [704 x i8]* %2, i64 0, i64 0 | |
%3 = call %jl_value_t*** @jl_get_ptls_states() #3 | |
%4 = alloca [40 x %jl_value_t*], align 8 | |
%.sub13 = getelementptr inbounds [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 0 | |
%5 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 36 | |
%6 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 2 | |
%7 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 3 | |
%8 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 4 | |
%9 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 5 | |
%10 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 6 | |
%11 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 7 | |
%12 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 8 | |
%13 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 9 | |
%14 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 10 | |
%15 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 11 | |
%16 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 12 | |
%17 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 13 | |
%"#temp#" = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 16 | |
%18 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 35 | |
%19 = bitcast %jl_value_t** %5 to i8* | |
call void @llvm.memset.p0i8.i32(i8* %19, i8 0, i32 32, i32 8, i1 false) | |
%20 = bitcast [40 x %jl_value_t*]* %4 to i64* | |
%21 = bitcast %jl_value_t** %6 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 264, i32 8, i1 false) | |
store i64 76, i64* %20, align 8 | |
%22 = bitcast %jl_value_t*** %3 to i64* | |
%23 = load i64, i64* %22, align 8 | |
%24 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 1 | |
%25 = bitcast %jl_value_t** %24 to i64* | |
store i64 %23, i64* %25, align 8 | |
store %jl_value_t** %.sub13, %jl_value_t*** %3, align 8 | |
store %jl_value_t* null, %jl_value_t** %18, align 8 | |
%26 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 38 | |
%27 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 37 | |
%28 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 39 | |
%29 = sub i16 %1, %0 | |
%30 = ashr i16 %29, 1 | |
%31 = add i16 %30, %0 | |
%32 = bitcast %jl_value_t*** %3 to i8* | |
%33 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1888, i32 16) | |
%34 = getelementptr inbounds %jl_value_t, %jl_value_t* %33, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358663216720 to %jl_value_t*), %jl_value_t** %34, align 8 | |
store %jl_value_t* %33, %jl_value_t** %6, align 8 | |
%35 = bitcast %jl_value_t* %33 to i16* | |
store i16 %31, i16* %35, align 16 | |
%36 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1888, i32 16) | |
%37 = getelementptr inbounds %jl_value_t, %jl_value_t* %36, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358663216720 to %jl_value_t*), %jl_value_t** %37, align 8 | |
store %jl_value_t* %36, %jl_value_t** %7, align 8 | |
%38 = bitcast %jl_value_t* %36 to i16* | |
store i16 %31, i16* %38, align 16 | |
%39 = sext i16 %29 to i64 | |
%40 = add nsw i64 %39, 1 | |
%41 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1888, i32 16) | |
%42 = getelementptr inbounds %jl_value_t, %jl_value_t* %41, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358658435920 to %jl_value_t*), %jl_value_t** %42, align 8 | |
%43 = bitcast %jl_value_t* %41 to i64* | |
store i64 %40, i64* %43, align 8 | |
store %jl_value_t* %41, %jl_value_t** %8, align 8 | |
%44 = call %jl_value_t* inttoptr (i64 70367505673616 to %jl_value_t* (%jl_value_t*, %jl_value_t*)*)(%jl_value_t* inttoptr (i64 70358765376784 to %jl_value_t*), %jl_value_t* %41) | |
store %jl_value_t* %44, %jl_value_t** %9, align 8 | |
%45 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1888, i32 16) | |
%46 = getelementptr inbounds %jl_value_t, %jl_value_t* %45, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358658435920 to %jl_value_t*), %jl_value_t** %46, align 8 | |
%47 = bitcast %jl_value_t* %45 to i64* | |
store i64 %40, i64* %47, align 8 | |
store %jl_value_t* %45, %jl_value_t** %10, align 8 | |
%48 = call %jl_value_t* inttoptr (i64 70367505673616 to %jl_value_t* (%jl_value_t*, %jl_value_t*)*)(%jl_value_t* inttoptr (i64 70358765376784 to %jl_value_t*), %jl_value_t* %45) | |
store %jl_value_t* %48, %jl_value_t** %11, align 8 | |
%49 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1936, i32 48) | |
%50 = getelementptr inbounds %jl_value_t, %jl_value_t* %49, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358765404848 to %jl_value_t*), %jl_value_t** %50, align 8 | |
store %jl_value_t* %49, %jl_value_t** %12, align 8 | |
%51 = getelementptr inbounds %jl_value_t, %jl_value_t* %49, i64 1, i32 0 | |
%52 = getelementptr inbounds %jl_value_t, %jl_value_t* %49, i64 2, i32 0 | |
%53 = getelementptr inbounds %jl_value_t, %jl_value_t* %49, i64 3, i32 0 | |
%54 = getelementptr inbounds %jl_value_t, %jl_value_t* %49, i64 4, i32 0 | |
%55 = bitcast %jl_value_t* %49 to i16* | |
store i16 %0, i16* %55, align 16 | |
%56 = bitcast %jl_value_t* %49 to i8* | |
%57 = getelementptr i8, i8* %56, i64 2 | |
%58 = bitcast i8* %57 to i16* | |
store i16 %1, i16* %58, align 2 | |
store %jl_value_t* %33, %jl_value_t** %13, align 8 | |
store %jl_value_t* %33, %jl_value_t** %51, align 8 | |
store %jl_value_t* %36, %jl_value_t** %14, align 8 | |
store %jl_value_t* %36, %jl_value_t** %52, align 8 | |
store %jl_value_t* %44, %jl_value_t** %15, align 8 | |
store %jl_value_t* %44, %jl_value_t** %53, align 8 | |
store %jl_value_t* %48, %jl_value_t** %16, align 8 | |
store %jl_value_t* %48, %jl_value_t** %54, align 8 | |
store %jl_value_t* %49, %jl_value_t** %5, align 8 | |
%59 = call %jl_value_t* @jl_f_svec(%jl_value_t* null, %jl_value_t** %5, i32 1) | |
store %jl_value_t* %59, %jl_value_t** %17, align 8 | |
call void inttoptr (i64 70367505871136 to void (%jl_value_t*)*)(%jl_value_t* %59) | |
call void @jl_enter_handler(i8* %.sub) | |
%60 = call i32 @__sigsetjmp(i8* %.sub, i32 0) #2 | |
%61 = icmp eq i32 %60, 0 | |
br i1 %61, label %try, label %L31 | |
try: ; preds = %top | |
%62 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 14 | |
%63 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 15 | |
store %jl_value_t* %33, %jl_value_t** %62, align 8 | |
%rv.i = load atomic i16, i16* %35 acquire, align 8 | |
store %jl_value_t* inttoptr (i64 70358656909432 to %jl_value_t*), %jl_value_t** %5, align 8 | |
%64 = call %jl_value_t* @jl_box_int16(i16 signext %rv.i) | |
store %jl_value_t* %64, %jl_value_t** %27, align 8 | |
store %jl_value_t* inttoptr (i64 70358658083128 to %jl_value_t*), %jl_value_t** %26, align 8 | |
%65 = call %jl_value_t* @jl_box_int16(i16 signext %0) | |
store %jl_value_t* %65, %jl_value_t** %28, align 8 | |
%66 = call %jl_value_t* @jl_f__expr(%jl_value_t* null, %jl_value_t** %5, i32 4) | |
store %jl_value_t* %66, %jl_value_t** %63, align 8 | |
%67 = call %jl_value_t* @julia_eval_comparison_65174(%jl_value_t* %66) #0 | |
store %jl_value_t* %67, %jl_value_t** %"#temp#", align 8 | |
call void @jl_pop_handler(i32 1) | |
br label %L36 | |
L31: ; preds = %top | |
%68 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 31 | |
%69 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 32 | |
%70 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 33 | |
%71 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 34 | |
call void @jl_pop_handler(i32 1) | |
%jl_exception_in_transit1114 = getelementptr %jl_value_t**, %jl_value_t*** %3, i64 1 | |
%jl_exception_in_transit11 = bitcast %jl_value_t*** %jl_exception_in_transit1114 to %jl_value_t** | |
%72 = load volatile %jl_value_t*, %jl_value_t** %jl_exception_in_transit11, align 8 | |
store %jl_value_t* %72, %jl_value_t** %68, align 8 | |
%73 = call %jl_value_t* inttoptr (i64 70367505877392 to %jl_value_t* ()*)() | |
store %jl_value_t* %73, %jl_value_t** %69, align 8 | |
store %jl_value_t* %72, %jl_value_t** %70, align 8 | |
%74 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1912, i32 32) | |
%75 = getelementptr inbounds %jl_value_t, %jl_value_t* %74, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358658679280 to %jl_value_t*), %jl_value_t** %75, align 8 | |
store %jl_value_t* %74, %jl_value_t** %71, align 8 | |
store %jl_value_t* %72, %jl_value_t** %18, align 8 | |
%76 = getelementptr inbounds %jl_value_t, %jl_value_t* %74, i64 0, i32 0 | |
store %jl_value_t* %72, %jl_value_t** %76, align 8 | |
%77 = getelementptr inbounds %jl_value_t, %jl_value_t* %74, i64 1, i32 0 | |
store %jl_value_t* %73, %jl_value_t** %77, align 8 | |
store volatile %jl_value_t* %74, %jl_value_t** %"#temp#", align 8 | |
br label %L36 | |
L36: ; preds = %L31, %try | |
%78 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 17 | |
%79 = load volatile %jl_value_t*, %jl_value_t** %"#temp#", align 8 | |
store %jl_value_t* %79, %jl_value_t** %78, align 8 | |
%80 = getelementptr inbounds %jl_value_t, %jl_value_t* %79, i64 -1, i32 0 | |
%81 = bitcast %jl_value_t** %80 to i64* | |
%82 = load i64, i64* %81, align 8 | |
%83 = and i64 %82, -16 | |
%84 = inttoptr i64 %83 to %jl_value_t* | |
%85 = icmp eq %jl_value_t* %84, inttoptr (i64 70358658679280 to %jl_value_t*) | |
br i1 %85, label %L50, label %L41 | |
L41: ; preds = %L36 | |
%86 = icmp eq %jl_value_t* %84, inttoptr (i64 70358703953072 to %jl_value_t*) | |
br i1 %86, label %L50, label %L47 | |
L50: ; preds = %L41, %L36 | |
%"#temp#3.0" = phi %jl_value_t* [ inttoptr (i64 70358761625040 to %jl_value_t*), %L36 ], [ inttoptr (i64 70358752799536 to %jl_value_t*), %L41 ] | |
%87 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 18 | |
store %jl_value_t* %"#temp#3.0", %jl_value_t** %87, align 8 | |
store %jl_value_t* inttoptr (i64 70358658076776 to %jl_value_t*), %jl_value_t** %5, align 8 | |
store %jl_value_t* %79, %jl_value_t** %27, align 8 | |
store %jl_value_t* inttoptr (i64 70358766012304 to %jl_value_t*), %jl_value_t** %26, align 8 | |
%88 = call %jl_value_t* @jl_invoke(%jl_value_t* %"#temp#3.0", %jl_value_t** %5, i32 3) | |
br label %L52 | |
L52: ; preds = %L47, %L50 | |
%"#temp#2" = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 21 | |
call void @jl_enter_handler(i8* %.sub) | |
%89 = call i32 @__sigsetjmp(i8* %.sub, i32 0) #2 | |
%90 = icmp eq i32 %89, 0 | |
br i1 %90, label %try7, label %L66 | |
try7: ; preds = %L52 | |
%91 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 19 | |
%92 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 20 | |
store %jl_value_t* %36, %jl_value_t** %91, align 8 | |
%rv.i12 = load atomic i16, i16* %38 acquire, align 8 | |
store %jl_value_t* inttoptr (i64 70358656909432 to %jl_value_t*), %jl_value_t** %5, align 8 | |
%93 = call %jl_value_t* @jl_box_int16(i16 signext %rv.i12) | |
store %jl_value_t* %93, %jl_value_t** %27, align 8 | |
store %jl_value_t* inttoptr (i64 70358658083128 to %jl_value_t*), %jl_value_t** %26, align 8 | |
%94 = call %jl_value_t* @jl_box_int16(i16 signext %1) | |
store %jl_value_t* %94, %jl_value_t** %28, align 8 | |
%95 = call %jl_value_t* @jl_f__expr(%jl_value_t* null, %jl_value_t** %5, i32 4) | |
store %jl_value_t* %95, %jl_value_t** %92, align 8 | |
%96 = call %jl_value_t* @julia_eval_comparison_65174(%jl_value_t* %95) #0 | |
store %jl_value_t* %96, %jl_value_t** %"#temp#2", align 8 | |
call void @jl_pop_handler(i32 1) | |
br label %L71 | |
L66: ; preds = %L52 | |
%97 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 26 | |
%98 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 27 | |
%99 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 28 | |
%100 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 29 | |
%101 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 30 | |
call void @jl_pop_handler(i32 1) | |
%jl_exception_in_transit15 = getelementptr %jl_value_t**, %jl_value_t*** %3, i64 1 | |
%jl_exception_in_transit = bitcast %jl_value_t*** %jl_exception_in_transit15 to %jl_value_t** | |
%102 = load volatile %jl_value_t*, %jl_value_t** %jl_exception_in_transit, align 8 | |
store %jl_value_t* %102, %jl_value_t** %97, align 8 | |
%103 = call %jl_value_t* inttoptr (i64 70367505877392 to %jl_value_t* ()*)() | |
store %jl_value_t* %103, %jl_value_t** %98, align 8 | |
store %jl_value_t* %102, %jl_value_t** %99, align 8 | |
%104 = call %jl_value_t* @jl_gc_pool_alloc(i8* %32, i32 1912, i32 32) | |
%105 = getelementptr inbounds %jl_value_t, %jl_value_t* %104, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 70358658679280 to %jl_value_t*), %jl_value_t** %105, align 8 | |
store %jl_value_t* %104, %jl_value_t** %100, align 8 | |
store %jl_value_t* %102, %jl_value_t** %101, align 8 | |
%106 = getelementptr inbounds %jl_value_t, %jl_value_t* %104, i64 0, i32 0 | |
store %jl_value_t* %102, %jl_value_t** %106, align 8 | |
%107 = getelementptr inbounds %jl_value_t, %jl_value_t* %104, i64 1, i32 0 | |
store %jl_value_t* %103, %jl_value_t** %107, align 8 | |
store volatile %jl_value_t* %104, %jl_value_t** %"#temp#2", align 8 | |
br label %L71 | |
L71: ; preds = %L66, %try7 | |
%108 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 22 | |
%109 = load volatile %jl_value_t*, %jl_value_t** %"#temp#2", align 8 | |
store %jl_value_t* %109, %jl_value_t** %108, align 8 | |
%110 = getelementptr inbounds %jl_value_t, %jl_value_t* %109, i64 -1, i32 0 | |
%111 = bitcast %jl_value_t** %110 to i64* | |
%112 = load i64, i64* %111, align 8 | |
%113 = and i64 %112, -16 | |
%114 = inttoptr i64 %113 to %jl_value_t* | |
%115 = icmp eq %jl_value_t* %114, inttoptr (i64 70358658679280 to %jl_value_t*) | |
br i1 %115, label %L85, label %L76 | |
L76: ; preds = %L71 | |
%116 = icmp eq %jl_value_t* %114, inttoptr (i64 70358703953072 to %jl_value_t*) | |
br i1 %116, label %L85, label %L82 | |
L85: ; preds = %L76, %L71 | |
%"#temp#5.0" = phi %jl_value_t* [ inttoptr (i64 70358761625040 to %jl_value_t*), %L71 ], [ inttoptr (i64 70358752799536 to %jl_value_t*), %L76 ] | |
%117 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 23 | |
store %jl_value_t* %"#temp#5.0", %jl_value_t** %117, align 8 | |
store %jl_value_t* inttoptr (i64 70358658076776 to %jl_value_t*), %jl_value_t** %5, align 8 | |
store %jl_value_t* %109, %jl_value_t** %27, align 8 | |
store %jl_value_t* inttoptr (i64 70358766013808 to %jl_value_t*), %jl_value_t** %26, align 8 | |
%118 = call %jl_value_t* @jl_invoke(%jl_value_t* %"#temp#5.0", %jl_value_t** %5, i32 3) | |
br label %L87 | |
L87: ; preds = %L82, %L85 | |
%119 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 24 | |
%120 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %4, i64 0, i64 25 | |
store %jl_value_t* %48, %jl_value_t** %119, align 8 | |
call void @julia_check_minmax_consistency_65198(%jl_value_t* %48, i16 %0, i16 %31) #0 | |
store %jl_value_t* %44, %jl_value_t** %120, align 8 | |
call void @julia_check_minmax_consistency_65199(%jl_value_t* %44, i16 %0, i16 %31) #0 | |
%121 = load i64, i64* %25, align 8 | |
store i64 %121, i64* %22, align 8 | |
ret void | |
L82: ; preds = %L76 | |
store %jl_value_t* inttoptr (i64 70358658076776 to %jl_value_t*), %jl_value_t** %5, align 8 | |
store %jl_value_t* %109, %jl_value_t** %27, align 8 | |
store %jl_value_t* inttoptr (i64 70358766013680 to %jl_value_t*), %jl_value_t** %26, align 8 | |
%122 = call %jl_value_t* @jl_apply_generic(%jl_value_t** %5, i32 3) | |
br label %L87 | |
L47: ; preds = %L41 | |
store %jl_value_t* inttoptr (i64 70358658076776 to %jl_value_t*), %jl_value_t** %5, align 8 | |
store %jl_value_t* %79, %jl_value_t** %27, align 8 | |
store %jl_value_t* inttoptr (i64 70358766012176 to %jl_value_t*), %jl_value_t** %26, align 8 | |
%123 = call %jl_value_t* @jl_apply_generic(%jl_value_t** %5, i32 3) | |
br label %L52 | |
} |
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
.text | |
Filename: threads.jl | |
ld 2, -8(12) | |
add 2, 2, 12 | |
mflr 0 | |
std 31, -8(1) | |
std 0, 16(1) | |
stdu 1, -1264(1) | |
mr 31, 1 | |
std 14, 1120(31) | |
std 26, 1216(31) | |
mr 26, 4 | |
li 14, 16383 | |
li 4, 16381 | |
std 25, 1208(31) | |
sldi 25, 4, 32 | |
std 27, 1224(31) | |
sldi 27, 14, 32 | |
oris 4, 25, 42715 | |
oris 5, 25, 42706 | |
std 30, 1248(31) | |
mr 30, 3 | |
oris 3, 27, 46641 | |
oris 6, 25, 42688 | |
std 17, 1144(31) | |
std 18, 1152(31) | |
std 20, 1168(31) | |
ori 18, 4, 33264 | |
ori 20, 5, 20584 | |
ori 17, 6, 32888 | |
std 24, 1200(31) | |
std 15, 1128(31) | |
ori 24, 3, 2448 | |
std 16, 1136(31) | |
std 19, 1160(31) | |
std 21, 1176(31) | |
std 22, 1184(31) | |
std 23, 1192(31) | |
std 28, 1232(31) | |
std 29, 1240(31) | |
bl .+3692 | |
ld 2, 24(1) | |
addis 14, 2, 0 | |
mr 29, 3 | |
addi 23, 31, 96 | |
li 4, 288 | |
li 5, 264 | |
addi 28, 31, 384 | |
li 22, 0 | |
ld 3, -32768(14) | |
lxvd2x 0, 0, 3 | |
li 3, 304 | |
stxvd2x 0, 23, 3 | |
stxvd2x 0, 23, 4 | |
addi 3, 31, 112 | |
li 4, 0 | |
bl .+3672 | |
ld 2, 24(1) | |
li 3, 76 | |
Source line: 47 | |
subf 21, 30, 26 | |
Source line: 48 | |
li 5, 16 | |
std 3, 96(31) | |
Source line: 47 | |
extsh 4, 21 | |
srawi 4, 4, 1 | |
ld 3, 0(29) | |
add 19, 4, 30 | |
Source line: 48 | |
li 4, 1888 | |
std 3, 104(31) | |
mr 3, 29 | |
std 23, 0(29) | |
std 22, 376(31) | |
bl .+3656 | |
ld 2, 24(1) | |
oris 14, 25, 42784 | |
mr 22, 3 | |
Source line: 49 | |
li 4, 1888 | |
li 5, 16 | |
mr 3, 29 | |
ori 16, 14, 48720 | |
Source line: 48 | |
std 22, 112(31) | |
sth 19, 0(22) | |
std 16, -8(22) | |
Source line: 49 | |
bl .+3612 | |
ld 2, 24(1) | |
mr 23, 3 | |
Source line: 50 | |
extsh 3, 21 | |
li 4, 1888 | |
li 5, 16 | |
Source line: 49 | |
std 16, -8(23) | |
Source line: 50 | |
addi 16, 3, 1 | |
mr 3, 29 | |
Source line: 49 | |
std 23, 120(31) | |
sth 19, 0(23) | |
Source line: 50 | |
bl .+3568 | |
ld 2, 24(1) | |
oris 14, 25, 44343 | |
oris 5, 27, 46637 | |
oris 15, 25, 42711 | |
mr 4, 3 | |
ori 25, 5, 60816 | |
ori 21, 14, 38160 | |
ori 15, 15, 52048 | |
std 16, 0(4) | |
std 4, 128(31) | |
mr 3, 21 | |
mr 12, 25 | |
std 15, -8(4) | |
std 2, 24(1) | |
mtctr 25 | |
bctrl | |
ld 2, 24(1) | |
mr 27, 3 | |
Source line: 51 | |
li 4, 1888 | |
li 5, 16 | |
mr 3, 29 | |
Source line: 50 | |
std 27, 136(31) | |
Source line: 51 | |
bl .+3476 | |
ld 2, 24(1) | |
mr 4, 3 | |
mr 3, 21 | |
mr 12, 25 | |
std 16, 0(4) | |
std 15, -8(4) | |
std 4, 144(31) | |
mtctr 25 | |
std 2, 24(1) | |
bctrl | |
ld 2, 24(1) | |
mr 25, 3 | |
Source line: 26 | |
li 4, 1936 | |
li 5, 48 | |
mr 3, 29 | |
Source line: 51 | |
std 25, 152(31) | |
Source line: 26 | |
bl .+3408 | |
ld 2, 24(1) | |
addi 4, 21, 28064 | |
std 3, 160(31) | |
std 22, 8(3) | |
std 23, 16(3) | |
std 27, 24(3) | |
Source line: 57 | |
li 5, 1 | |
Source line: 26 | |
std 4, -8(3) | |
sth 30, 0(3) | |
std 25, 32(3) | |
Source line: 57 | |
std 3, 384(31) | |
mr 4, 28 | |
Source line: 26 | |
std 22, 168(31) | |
sth 26, 2(3) | |
Source line: 57 | |
li 3, 0 | |
Source line: 26 | |
std 23, 176(31) | |
std 27, 184(31) | |
std 25, 192(31) | |
Source line: 57 | |
bl .+3376 | |
ld 2, 24(1) | |
addi 12, 24, -6256 | |
std 3, 200(31) | |
std 2, 24(1) | |
mtctr 12 | |
bctrl | |
ld 2, 24(1) | |
addi 21, 31, 416 | |
Source line: 56 | |
mr 3, 21 | |
bl .+3380 | |
ld 2, 24(1) | |
li 4, 0 | |
mr 3, 21 | |
bl .+3408 | |
ld 2, 24(1) | |
cmplwi 3, 0 | |
bt 2, .+104 | |
li 3, 1 | |
bl .+3432 | |
ld 2, 24(1) | |
ld 21, 8(29) | |
mr 12, 24 | |
std 2, 24(1) | |
mtctr 24 | |
std 21, 344(31) | |
bctrl | |
ld 2, 24(1) | |
mr 22, 3 | |
li 4, 1912 | |
li 5, 32 | |
mr 3, 29 | |
std 21, 360(31) | |
std 22, 352(31) | |
bl .+3196 | |
ld 2, 24(1) | |
std 21, 376(31) | |
std 18, -8(3) | |
std 3, 368(31) | |
std 21, 0(3) | |
std 22, 8(3) | |
std 3, 224(31) | |
b .+112 | |
Source line: 186 | |
std 22, 208(31) | |
ori 2, 2, 0 | |
Source line: 56 | |
lhz 3, 0(22) | |
lwsync | |
std 17, 384(31) | |
extsh 3, 3 | |
bl .+3356 | |
ld 2, 24(1) | |
addi 4, 20, 6352 | |
std 3, 392(31) | |
extsh 3, 30 | |
std 4, 400(31) | |
bl .+3332 | |
ld 2, 24(1) | |
std 3, 408(31) | |
li 3, 0 | |
li 5, 4 | |
mr 4, 28 | |
bl .+3352 | |
ld 2, 24(1) | |
std 3, 216(31) | |
bl .+3384 | |
ld 2, 24(1) | |
std 3, 224(31) | |
li 3, 1 | |
bl .+3236 | |
ld 2, 24(1) | |
ld 4, 224(31) | |
li 3, 16381 | |
li 7, -16 | |
sldi 3, 3, 32 | |
ld 5, -8(4) | |
oris 6, 3, 44286 | |
oris 8, 3, 44355 | |
ori 22, 6, 21968 | |
oris 6, 3, 44151 | |
oris 3, 3, 43406 | |
ori 16, 8, 52656 | |
std 4, 232(31) | |
and 5, 5, 7 | |
ori 14, 3, 21680 | |
ori 15, 6, 43824 | |
mr 3, 22 | |
cmpld 5, 18 | |
bt 2, .+48 | |
mr 3, 15 | |
cmpld 5, 14 | |
bt 2, .+36 | |
std 4, 392(31) | |
li 4, 3 | |
mr 3, 28 | |
std 20, 384(31) | |
std 16, 400(31) | |
bl .+3300 | |
ld 2, 24(1) | |
b .+40 | |
addi 5, 16, 128 | |
std 4, 392(31) | |
mr 4, 28 | |
std 3, 240(31) | |
std 20, 384(31) | |
std 5, 400(31) | |
li 5, 3 | |
bl .+3304 | |
ld 2, 24(1) | |
addi 21, 31, 416 | |
Source line: 57 | |
mr 3, 21 | |
bl .+2980 | |
ld 2, 24(1) | |
li 4, 0 | |
mr 3, 21 | |
bl .+3008 | |
ld 2, 24(1) | |
cmplwi 3, 0 | |
bt 2, .+104 | |
li 3, 1 | |
bl .+3032 | |
ld 2, 24(1) | |
ld 23, 8(29) | |
mr 12, 24 | |
std 2, 24(1) | |
mtctr 24 | |
std 23, 304(31) | |
bctrl | |
ld 2, 24(1) | |
mr 26, 3 | |
li 4, 1912 | |
li 5, 32 | |
mr 3, 29 | |
std 23, 320(31) | |
std 26, 312(31) | |
bl .+2796 | |
ld 2, 24(1) | |
std 23, 336(31) | |
std 18, -8(3) | |
std 3, 328(31) | |
std 23, 0(3) | |
std 26, 8(3) | |
std 3, 264(31) | |
b .+112 | |
Source line: 186 | |
std 23, 248(31) | |
ori 2, 2, 0 | |
Source line: 57 | |
lhz 3, 0(23) | |
lwsync | |
std 17, 384(31) | |
extsh 3, 3 | |
bl .+2956 | |
ld 2, 24(1) | |
addi 4, 20, 6352 | |
std 3, 392(31) | |
extsh 3, 26 | |
std 4, 400(31) | |
bl .+2932 | |
ld 2, 24(1) | |
std 3, 408(31) | |
li 3, 0 | |
li 5, 4 | |
mr 4, 28 | |
bl .+2952 | |
ld 2, 24(1) | |
std 3, 256(31) | |
bl .+2984 | |
ld 2, 24(1) | |
std 3, 264(31) | |
li 3, 1 | |
bl .+2836 | |
ld 2, 24(1) | |
ld 3, 264(31) | |
li 5, -16 | |
ld 4, -8(3) | |
std 3, 272(31) | |
and 4, 4, 5 | |
cmpld 4, 18 | |
bt 2, .+52 | |
mr 22, 15 | |
cmpld 4, 14 | |
bt 2, .+40 | |
addi 4, 16, 1504 | |
std 3, 392(31) | |
mr 3, 28 | |
std 20, 384(31) | |
std 4, 400(31) | |
li 4, 3 | |
bl .+2940 | |
ld 2, 24(1) | |
b .+44 | |
addi 4, 16, 1632 | |
std 3, 392(31) | |
li 5, 3 | |
mr 3, 22 | |
std 22, 280(31) | |
std 20, 384(31) | |
std 4, 400(31) | |
mr 4, 28 | |
bl .+2940 | |
ld 2, 24(1) | |
Source line: 58 | |
clrldi 30, 30, 32 | |
clrldi 28, 19, 32 | |
mr 3, 25 | |
std 25, 288(31) | |
mr 4, 30 | |
mr 5, 28 | |
bl .+268 | |
Source line: 59 | |
mr 3, 27 | |
mr 4, 30 | |
mr 5, 28 | |
std 27, 296(31) | |
bl .+1336 | |
ld 3, 104(31) | |
ld 30, 1248(31) | |
ld 28, 1232(31) | |
ld 27, 1224(31) | |
ld 26, 1216(31) | |
ld 25, 1208(31) | |
ld 24, 1200(31) | |
ld 23, 1192(31) | |
ld 22, 1184(31) | |
ld 21, 1176(31) | |
ld 20, 1168(31) | |
ld 19, 1160(31) | |
std 3, 0(29) | |
ld 29, 1240(31) | |
ld 18, 1152(31) | |
ld 17, 1144(31) | |
ld 16, 1136(31) | |
ld 15, 1128(31) | |
ld 14, 1120(31) | |
addi 1, 1, 1264 | |
ld 0, 16(1) | |
ld 31, -8(1) | |
mtlr 0 | |
blr | |
.long 0x00000000 | |
.long 0x00000000 | |
.long 0x00000000 | |
nop | |
nop | |
std 31, -24280(30) | |
fnmadd. 31, 31, 31, 31 |
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
; ModuleID = 'test_threaded_atomic_minmax' | |
source_filename = "test_threaded_atomic_minmax" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%jl_value_t = type { %jl_value_t* } | |
define void @julia_test_threaded_atomic_minmax_65133(i16, i16) #0 !dbg !5 { | |
top: | |
%2 = alloca [248 x i8], align 16 | |
%.sub = getelementptr inbounds [248 x i8], [248 x i8]* %2, i64 0, i64 0 | |
%ptls_i8 = call i8* asm "movq %fs:0, $0;\0Aaddq $$-2672, $0", "=r,~{dirflag},~{fpsr},~{flags}"() #3 | |
%ptls = bitcast i8* %ptls_i8 to %jl_value_t*** | |
%3 = alloca [40 x %jl_value_t*], align 8 | |
%.sub13 = 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 36 | |
%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 3 | |
%7 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 4 | |
%8 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 5 | |
%9 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 6 | |
%10 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 7 | |
%11 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 8 | |
%12 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 9 | |
%13 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 10 | |
%14 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 11 | |
%15 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 12 | |
%16 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 13 | |
%"#temp#" = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 16 | |
%17 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 35 | |
%18 = bitcast %jl_value_t** %4 to i8* | |
call void @llvm.memset.p0i8.i32(i8* %18, i8 0, i32 32, i32 8, i1 false) | |
%19 = bitcast [40 x %jl_value_t*]* %3 to i64* | |
%20 = bitcast %jl_value_t** %5 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %20, i8 0, i64 264, i32 8, i1 false) | |
store i64 76, i64* %19, align 8 | |
%21 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 1 | |
%22 = bitcast i8* %ptls_i8 to i64* | |
%23 = load i64, i64* %22, align 8 | |
%24 = bitcast %jl_value_t** %21 to i64* | |
store i64 %23, i64* %24, align 8 | |
store %jl_value_t** %.sub13, %jl_value_t*** %ptls, align 8 | |
store %jl_value_t* null, %jl_value_t** %17, align 8 | |
%25 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 38 | |
%26 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 37 | |
%27 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 39 | |
%28 = sub i16 %1, %0 | |
%29 = ashr i16 %28, 1 | |
%30 = add i16 %29, %0 | |
%31 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%32 = getelementptr inbounds %jl_value_t, %jl_value_t* %31, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228378820912 to %jl_value_t*), %jl_value_t** %32, align 8 | |
store %jl_value_t* %31, %jl_value_t** %5, align 8 | |
%33 = bitcast %jl_value_t* %31 to i16* | |
store i16 %30, i16* %33, align 16 | |
%34 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%35 = getelementptr inbounds %jl_value_t, %jl_value_t* %34, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228378820912 to %jl_value_t*), %jl_value_t** %35, align 8 | |
store %jl_value_t* %34, %jl_value_t** %6, align 8 | |
%36 = bitcast %jl_value_t* %34 to i16* | |
store i16 %30, i16* %36, align 16 | |
%37 = sext i16 %28 to i64 | |
%38 = add nsw i64 %37, 1 | |
%39 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%40 = getelementptr inbounds %jl_value_t, %jl_value_t* %39, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228377161936 to %jl_value_t*), %jl_value_t** %40, align 8 | |
%41 = bitcast %jl_value_t* %39 to i64* | |
store i64 %38, i64* %41, align 8 | |
store %jl_value_t* %39, %jl_value_t** %7, align 8 | |
%42 = call %jl_value_t* inttoptr (i64 140237143750320 to %jl_value_t* (%jl_value_t*, %jl_value_t*)*)(%jl_value_t* inttoptr (i64 140228462458096 to %jl_value_t*), %jl_value_t* %39) | |
store %jl_value_t* %42, %jl_value_t** %8, align 8 | |
%43 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16) | |
%44 = getelementptr inbounds %jl_value_t, %jl_value_t* %43, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228377161936 to %jl_value_t*), %jl_value_t** %44, align 8 | |
%45 = bitcast %jl_value_t* %43 to i64* | |
store i64 %38, i64* %45, align 8 | |
store %jl_value_t* %43, %jl_value_t** %9, align 8 | |
%46 = call %jl_value_t* inttoptr (i64 140237143750320 to %jl_value_t* (%jl_value_t*, %jl_value_t*)*)(%jl_value_t* inttoptr (i64 140228462458096 to %jl_value_t*), %jl_value_t* %43) | |
store %jl_value_t* %46, %jl_value_t** %10, align 8 | |
%47 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1480, i32 48) | |
%48 = getelementptr inbounds %jl_value_t, %jl_value_t* %47, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228462584464 to %jl_value_t*), %jl_value_t** %48, align 8 | |
store %jl_value_t* %47, %jl_value_t** %11, align 8 | |
%49 = getelementptr inbounds %jl_value_t, %jl_value_t* %47, i64 1, i32 0 | |
%50 = getelementptr inbounds %jl_value_t, %jl_value_t* %47, i64 2, i32 0 | |
%51 = getelementptr inbounds %jl_value_t, %jl_value_t* %47, i64 3, i32 0 | |
%52 = getelementptr inbounds %jl_value_t, %jl_value_t* %47, i64 4, i32 0 | |
%53 = bitcast %jl_value_t* %47 to i16* | |
store i16 %0, i16* %53, align 16 | |
%54 = bitcast %jl_value_t* %47 to i8* | |
%55 = getelementptr i8, i8* %54, i64 2 | |
%56 = bitcast i8* %55 to i16* | |
store i16 %1, i16* %56, align 2 | |
store %jl_value_t* %31, %jl_value_t** %12, align 8 | |
store %jl_value_t* %31, %jl_value_t** %49, align 8 | |
store %jl_value_t* %34, %jl_value_t** %13, align 8 | |
store %jl_value_t* %34, %jl_value_t** %50, align 8 | |
store %jl_value_t* %42, %jl_value_t** %14, align 8 | |
store %jl_value_t* %42, %jl_value_t** %51, align 8 | |
store %jl_value_t* %46, %jl_value_t** %15, align 8 | |
store %jl_value_t* %46, %jl_value_t** %52, align 8 | |
store %jl_value_t* %47, %jl_value_t** %4, align 8 | |
%57 = call %jl_value_t* @jl_f_svec(%jl_value_t* null, %jl_value_t** %4, i32 1) | |
store %jl_value_t* %57, %jl_value_t** %16, align 8 | |
call void inttoptr (i64 140237143888448 to void (%jl_value_t*)*)(%jl_value_t* %57) | |
call void @jl_enter_handler(i8* %.sub) | |
%58 = call i32 @__sigsetjmp(i8* %.sub, i32 0) #2 | |
%59 = icmp eq i32 %58, 0 | |
br i1 %59, label %try, label %L33 | |
try: ; preds = %top | |
%60 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 14 | |
%61 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 15 | |
store %jl_value_t* %31, %jl_value_t** %60, align 8 | |
%rv.i = load atomic i16, i16* %33 acquire, align 8 | |
store %jl_value_t* inttoptr (i64 140228375723208 to %jl_value_t*), %jl_value_t** %4, align 8 | |
%62 = call %jl_value_t* @jl_box_int16(i16 signext %rv.i) | |
store %jl_value_t* %62, %jl_value_t** %26, align 8 | |
store %jl_value_t* inttoptr (i64 140228376848264 to %jl_value_t*), %jl_value_t** %25, align 8 | |
%63 = call %jl_value_t* @jl_box_int16(i16 signext %0) | |
store %jl_value_t* %63, %jl_value_t** %27, align 8 | |
%64 = call %jl_value_t* @jl_f__expr(%jl_value_t* null, %jl_value_t** %4, i32 4) | |
store %jl_value_t* %64, %jl_value_t** %61, align 8 | |
%65 = call %jl_value_t* @julia_eval_comparison_65109(%jl_value_t* %64) #0 | |
store %jl_value_t* %65, %jl_value_t** %"#temp#", align 8 | |
call void @jl_pop_handler(i32 1) | |
br label %L38 | |
L33: ; preds = %top | |
%66 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 31 | |
%67 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 32 | |
%68 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 33 | |
%69 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 34 | |
call void @jl_pop_handler(i32 1) | |
%jl_exception_in_transit1114 = getelementptr i8, i8* %ptls_i8, i64 8 | |
%jl_exception_in_transit11 = bitcast i8* %jl_exception_in_transit1114 to %jl_value_t** | |
%70 = load volatile %jl_value_t*, %jl_value_t** %jl_exception_in_transit11, align 8 | |
store %jl_value_t* %70, %jl_value_t** %66, align 8 | |
%71 = call %jl_value_t* inttoptr (i64 140237143891728 to %jl_value_t* ()*)() | |
store %jl_value_t* %71, %jl_value_t** %67, align 8 | |
store %jl_value_t* %70, %jl_value_t** %68, align 8 | |
%72 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1456, i32 32) | |
%73 = getelementptr inbounds %jl_value_t, %jl_value_t* %72, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228377649808 to %jl_value_t*), %jl_value_t** %73, align 8 | |
store %jl_value_t* %72, %jl_value_t** %69, align 8 | |
store %jl_value_t* %70, %jl_value_t** %17, align 8 | |
%74 = getelementptr inbounds %jl_value_t, %jl_value_t* %72, i64 0, i32 0 | |
store %jl_value_t* %70, %jl_value_t** %74, align 8 | |
%75 = getelementptr inbounds %jl_value_t, %jl_value_t* %72, i64 1, i32 0 | |
store %jl_value_t* %71, %jl_value_t** %75, align 8 | |
store volatile %jl_value_t* %72, %jl_value_t** %"#temp#", align 8 | |
br label %L38 | |
L38: ; preds = %L33, %try | |
%76 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 17 | |
%77 = load volatile %jl_value_t*, %jl_value_t** %"#temp#", align 8 | |
store %jl_value_t* %77, %jl_value_t** %76, align 8 | |
%78 = getelementptr inbounds %jl_value_t, %jl_value_t* %77, i64 -1, i32 0 | |
%79 = bitcast %jl_value_t** %78 to i64* | |
%80 = load i64, i64* %79, align 8 | |
%81 = and i64 %80, -16 | |
%82 = inttoptr i64 %81 to %jl_value_t* | |
%83 = icmp eq %jl_value_t* %82, inttoptr (i64 140228377649808 to %jl_value_t*) | |
br i1 %83, label %L52, label %L43 | |
L43: ; preds = %L38 | |
%84 = icmp eq %jl_value_t* %82, inttoptr (i64 140228426126128 to %jl_value_t*) | |
br i1 %84, label %L52, label %L49 | |
L52: ; preds = %L43, %L38 | |
%"#temp#3.0" = phi %jl_value_t* [ inttoptr (i64 140228458947024 to %jl_value_t*), %L38 ], [ inttoptr (i64 140228449580080 to %jl_value_t*), %L43 ] | |
%85 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 18 | |
store %jl_value_t* %"#temp#3.0", %jl_value_t** %85, align 8 | |
store %jl_value_t* inttoptr (i64 140228425569400 to %jl_value_t*), %jl_value_t** %4, align 8 | |
store %jl_value_t* %77, %jl_value_t** %26, align 8 | |
store %jl_value_t* inttoptr (i64 140228463245616 to %jl_value_t*), %jl_value_t** %25, align 8 | |
%86 = call %jl_value_t* @jl_invoke(%jl_value_t* %"#temp#3.0", %jl_value_t** %4, i32 3) | |
br label %L54 | |
L54: ; preds = %L49, %L52 | |
%"#temp#2" = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 21 | |
call void @jl_enter_handler(i8* %.sub) | |
%87 = call i32 @__sigsetjmp(i8* %.sub, i32 0) #2 | |
%88 = icmp eq i32 %87, 0 | |
br i1 %88, label %try7, label %L70 | |
try7: ; preds = %L54 | |
%89 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 19 | |
%90 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 20 | |
store %jl_value_t* %34, %jl_value_t** %89, align 8 | |
%rv.i12 = load atomic i16, i16* %36 acquire, align 8 | |
store %jl_value_t* inttoptr (i64 140228375723208 to %jl_value_t*), %jl_value_t** %4, align 8 | |
%91 = call %jl_value_t* @jl_box_int16(i16 signext %rv.i12) | |
store %jl_value_t* %91, %jl_value_t** %26, align 8 | |
store %jl_value_t* inttoptr (i64 140228376848264 to %jl_value_t*), %jl_value_t** %25, align 8 | |
%92 = call %jl_value_t* @jl_box_int16(i16 signext %1) | |
store %jl_value_t* %92, %jl_value_t** %27, align 8 | |
%93 = call %jl_value_t* @jl_f__expr(%jl_value_t* null, %jl_value_t** %4, i32 4) | |
store %jl_value_t* %93, %jl_value_t** %90, align 8 | |
%94 = call %jl_value_t* @julia_eval_comparison_65109(%jl_value_t* %93) #0 | |
store %jl_value_t* %94, %jl_value_t** %"#temp#2", align 8 | |
call void @jl_pop_handler(i32 1) | |
br label %L75 | |
L70: ; preds = %L54 | |
%95 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 26 | |
%96 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 27 | |
%97 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 28 | |
%98 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 29 | |
%99 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 30 | |
call void @jl_pop_handler(i32 1) | |
%jl_exception_in_transit15 = getelementptr i8, i8* %ptls_i8, i64 8 | |
%jl_exception_in_transit = bitcast i8* %jl_exception_in_transit15 to %jl_value_t** | |
%100 = load volatile %jl_value_t*, %jl_value_t** %jl_exception_in_transit, align 8 | |
store %jl_value_t* %100, %jl_value_t** %95, align 8 | |
%101 = call %jl_value_t* inttoptr (i64 140237143891728 to %jl_value_t* ()*)() | |
store %jl_value_t* %101, %jl_value_t** %96, align 8 | |
store %jl_value_t* %100, %jl_value_t** %97, align 8 | |
%102 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1456, i32 32) | |
%103 = getelementptr inbounds %jl_value_t, %jl_value_t* %102, i64 -1, i32 0 | |
store %jl_value_t* inttoptr (i64 140228377649808 to %jl_value_t*), %jl_value_t** %103, align 8 | |
store %jl_value_t* %102, %jl_value_t** %98, align 8 | |
store %jl_value_t* %100, %jl_value_t** %99, align 8 | |
%104 = getelementptr inbounds %jl_value_t, %jl_value_t* %102, i64 0, i32 0 | |
store %jl_value_t* %100, %jl_value_t** %104, align 8 | |
%105 = getelementptr inbounds %jl_value_t, %jl_value_t* %102, i64 1, i32 0 | |
store %jl_value_t* %101, %jl_value_t** %105, align 8 | |
store volatile %jl_value_t* %102, %jl_value_t** %"#temp#2", align 8 | |
br label %L75 | |
L75: ; preds = %L70, %try7 | |
%106 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 22 | |
%107 = load volatile %jl_value_t*, %jl_value_t** %"#temp#2", align 8 | |
store %jl_value_t* %107, %jl_value_t** %106, align 8 | |
%108 = getelementptr inbounds %jl_value_t, %jl_value_t* %107, i64 -1, i32 0 | |
%109 = bitcast %jl_value_t** %108 to i64* | |
%110 = load i64, i64* %109, align 8 | |
%111 = and i64 %110, -16 | |
%112 = inttoptr i64 %111 to %jl_value_t* | |
%113 = icmp eq %jl_value_t* %112, inttoptr (i64 140228377649808 to %jl_value_t*) | |
br i1 %113, label %L89, label %L80 | |
L80: ; preds = %L75 | |
%114 = icmp eq %jl_value_t* %112, inttoptr (i64 140228426126128 to %jl_value_t*) | |
br i1 %114, label %L89, label %L86 | |
L89: ; preds = %L80, %L75 | |
%"#temp#5.0" = phi %jl_value_t* [ inttoptr (i64 140228458947024 to %jl_value_t*), %L75 ], [ inttoptr (i64 140228449580080 to %jl_value_t*), %L80 ] | |
%115 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 23 | |
store %jl_value_t* %"#temp#5.0", %jl_value_t** %115, align 8 | |
store %jl_value_t* inttoptr (i64 140228425569400 to %jl_value_t*), %jl_value_t** %4, align 8 | |
store %jl_value_t* %107, %jl_value_t** %26, align 8 | |
store %jl_value_t* inttoptr (i64 140228463247184 to %jl_value_t*), %jl_value_t** %25, align 8 | |
%116 = call %jl_value_t* @jl_invoke(%jl_value_t* %"#temp#5.0", %jl_value_t** %4, i32 3) | |
br label %L91 | |
L91: ; preds = %L86, %L89 | |
%117 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 24 | |
%118 = getelementptr [40 x %jl_value_t*], [40 x %jl_value_t*]* %3, i64 0, i64 25 | |
store %jl_value_t* %46, %jl_value_t** %117, align 8 | |
call void @julia_check_minmax_consistency_65134(%jl_value_t* %46, i16 %0, i16 %30) #0 | |
store %jl_value_t* %42, %jl_value_t** %118, align 8 | |
call void @julia_check_minmax_consistency_65135(%jl_value_t* %42, i16 %0, i16 %30) #0 | |
%119 = load i64, i64* %24, align 8 | |
store i64 %119, i64* %22, align 8 | |
ret void | |
L86: ; preds = %L80 | |
store %jl_value_t* inttoptr (i64 140228425569400 to %jl_value_t*), %jl_value_t** %4, align 8 | |
store %jl_value_t* %107, %jl_value_t** %26, align 8 | |
store %jl_value_t* inttoptr (i64 140228463247056 to %jl_value_t*), %jl_value_t** %25, align 8 | |
%120 = call %jl_value_t* @jl_apply_generic(%jl_value_t** %4, i32 3) | |
br label %L91 | |
L49: ; preds = %L43 | |
store %jl_value_t* inttoptr (i64 140228425569400 to %jl_value_t*), %jl_value_t** %4, align 8 | |
store %jl_value_t* %77, %jl_value_t** %26, align 8 | |
store %jl_value_t* inttoptr (i64 140228463245488 to %jl_value_t*), %jl_value_t** %25, align 8 | |
%121 = call %jl_value_t* @jl_apply_generic(%jl_value_t** %4, i32 3) | |
br label %L54 | |
} | |
define %jl_value_t* @jlcall_test_threaded_atomic_minmax_65133(%jl_value_t*, %jl_value_t**, i32) #0 { | |
top: | |
%3 = bitcast %jl_value_t** %1 to i16** | |
%4 = load i16*, i16** %3, align 8 | |
%5 = load i16, i16* %4, align 2 | |
%6 = getelementptr %jl_value_t*, %jl_value_t** %1, i64 1 | |
%7 = bitcast %jl_value_t** %6 to i16** | |
%8 = load i16*, i16** %7, align 8 | |
%9 = load i16, i16* %8, align 2 | |
call void @julia_test_threaded_atomic_minmax_65133(i16 %5, i16 %9) #0 | |
ret %jl_value_t* inttoptr (i64 140228376838160 to %jl_value_t*) | |
} | |
declare %jl_value_t*** @jl_get_ptls_states() | |
declare %jl_value_t* @jl_gc_pool_alloc(i8*, i32, i32) | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 | |
declare %jl_value_t* @jl_f_svec(%jl_value_t*, %jl_value_t**, i32) | |
declare %jl_value_t* @julia_eval_comparison_65109(%jl_value_t*) #0 | |
declare %jl_value_t* @jl_box_int16(i16) | |
declare %jl_value_t* @jl_f__expr(%jl_value_t*, %jl_value_t**, i32) | |
declare void @jl_pop_handler(i32) | |
declare %jl_value_t* @jl_invoke(%jl_value_t*, %jl_value_t**, i32) | |
declare void @julia_check_minmax_consistency_65134(%jl_value_t*, i16, i16) #0 | |
declare void @julia_check_minmax_consistency_65135(%jl_value_t*, i16, i16) #0 | |
declare %jl_value_t* @jl_apply_generic(%jl_value_t**, i32) | |
declare void @jl_enter_handler(i8*) | |
; Function Attrs: returns_twice | |
declare i32 @__sigsetjmp(i8*, i32) #2 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i32, i1) #1 | |
; 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 = { returns_twice } | |
attributes #3 = { nounwind } | |
!llvm.module.flags = !{!0, !1} | |
!llvm.dbg.cu = !{!2} | |
!0 = !{i32 2, !"Dwarf Version", i32 4} | |
!1 = !{i32 1, !"Debug Info Version", i32 3} | |
!2 = distinct !DICompileUnit(language: DW_LANG_C89, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4) | |
!3 = !DIFile(filename: "/home/wallnuss/src/julia/test/threads.jl", directory: ".") | |
!4 = !{} | |
!5 = distinct !DISubprogram(name: "test_threaded_atomic_minmax", linkageName: "julia_test_threaded_atomic_minmax_65133", scope: null, file: !3, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!6 = !DISubroutineType(types: !4) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment