Skip to content

Instantly share code, notes, and snippets.

@vchuravy
Last active September 19, 2016 17:10
Show Gist options
  • Save vchuravy/ba27d29870e49df5f640ff0b5aa635c3 to your computer and use it in GitHub Desktop.
Save vchuravy/ba27d29870e49df5f640ff0b5aa635c3 to your computer and use it in GitHub Desktop.
PPC llvm 3.9 threads
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
}
.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
; 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