Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
공백 변경 숨기기
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
텍스트 스타일
모양 변경
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
julia-pkg-images-vs-makie
생성일
4년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
6 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
495 행
복사
6 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
495 행
복사
복사
복사됨
복사
복사됨
define nonnull {}* @julia_sdistancefield_
5196
({}* noundef nonnull align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) #0 {
define nonnull {}* @julia_sdistancefield_
5509
({}* noundef nonnull align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) #0 {
top:
top:
%gcframe334 = alloca [10 x {}*], align 16
%gcframe334 = alloca [10 x {}*], align 16
%gcframe334.sub = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 0
%gcframe334.sub = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 0
%3 = bitcast [10 x {}*]* %gcframe334 to i8*
%3 = bitcast [10 x {}*]* %gcframe334 to i8*
call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 16 dereferenceable(80) %3, i8 0, i32 80, i1 false)
call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 16 dereferenceable(80) %3, i8 0, i32 80, i1 false)
%4 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 5
%4 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 5
%5 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 2
%5 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 2
%6 = alloca [2 x [2 x i64]], align 8
%6 = alloca [2 x [2 x i64]], align 8
%7 = alloca [2 x [1 x i64]], align 8
%7 = alloca [2 x [1 x i64]], align 8
%8 = alloca [2 x [1 x i64]], align 8
%8 = alloca [2 x [1 x i64]], align 8
%9 = alloca [2 x [1 x i64]], align 8
%9 = alloca [2 x [1 x i64]], align 8
%10 = alloca [2 x [1 x i64]], align 8
%10 = alloca [2 x [1 x i64]], align 8
%thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #6
%thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #6
%ppgcstack_i8 = getelementptr i8, i8* %thread_ptr, i64 -8
%ppgcstack_i8 = getelementptr i8, i8* %thread_ptr, i64 -8
%ppgcstack = bitcast i8* %ppgcstack_i8 to {}****
%ppgcstack = bitcast i8* %ppgcstack_i8 to {}****
%pgcstack = load {}***, {}**** %ppgcstack, align 8
%pgcstack = load {}***, {}**** %ppgcstack, align 8
%11 = bitcast [10 x {}*]* %gcframe334 to i64*
%11 = bitcast [10 x {}*]* %gcframe334 to i64*
store i64 32, i64* %11, align 16
store i64 32, i64* %11, align 16
%12 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 1
%12 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 1
%13 = bitcast {}** %12 to {}***
%13 = bitcast {}** %12 to {}***
%14 = load {}**, {}*** %pgcstack, align 8
%14 = load {}**, {}*** %pgcstack, align 8
store {}** %14, {}*** %13, align 8
store {}** %14, {}*** %13, align 8
%15 = bitcast {}*** %pgcstack to {}***
%15 = bitcast {}*** %pgcstack to {}***
store {}** %gcframe334.sub, {}*** %15, align 8
store {}** %gcframe334.sub, {}*** %15, align 8
%ptls_field104 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
%ptls_field104 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
%16 = bitcast {}*** %ptls_field104 to i64***
%16 = bitcast {}*** %ptls_field104 to i64***
%ptls_load105106 = load i64**, i64*** %16, align 8
%ptls_load105106 = load i64**, i64*** %16, align 8
fence syncscope("singlethread") seq_cst
fence syncscope("singlethread") seq_cst
%17 = getelementptr inbounds i64*, i64** %ptls_load105106, i64 2
%17 = getelementptr inbounds i64*, i64** %ptls_load105106, i64 2
%safepoint = load i64*, i64** %17, align 8
%safepoint = load i64*, i64** %17, align 8
%18 = load volatile i64, i64* %safepoint, align 8
%18 = load volatile i64, i64* %safepoint, align 8
fence syncscope("singlethread") seq_cst
fence syncscope("singlethread") seq_cst
%19 = mul i64 %2, %1
%19 = mul i64 %2, %1
%20 = bitcast {}* %0 to {}**
%20 = bitcast {}* %0 to {}**
%21 = getelementptr inbounds {}*, {}** %20, i64 3
%21 = getelementptr inbounds {}*, {}** %20, i64 3
%22 = bitcast {}** %21 to i64*
%22 = bitcast {}** %21 to i64*
%23 = load i64, i64* %22, align 8
%23 = load i64, i64* %22, align 8
%24 = shl i64 %19, 1
%24 = shl i64 %19, 1
%25 = add i64 %23, %24
%25 = add i64 %23, %24
%26 = sitofp i64 %25 to double
%26 = sitofp i64 %25 to double
%27 = sitofp i64 %1 to double
%27 = sitofp i64 %1 to double
%28 = fdiv double %26, %27
%28 = fdiv double %26, %27
%29 = call double @llvm.ceil.f64(double %28)
%29 = call double @llvm.ceil.f64(double %28)
%30 = fcmp ult double %29, 0xC3E0000000000000
%30 = fcmp ult double %29, 0xC3E0000000000000
%31 = fcmp uge double %29, 0x43E0000000000000
%31 = fcmp uge double %29, 0x43E0000000000000
%32 = or i1 %30, %31
%32 = or i1 %30, %31
br i1 %32, label %L20, label %L18
br i1 %32, label %L20, label %L18
L18: ; preds = %top
L18: ; preds = %top
%33 = getelementptr inbounds {}*, {}** %20, i64 4
%33 = getelementptr inbounds {}*, {}** %20, i64 4
%34 = bitcast {}** %33 to i64*
%34 = bitcast {}** %33 to i64*
%35 = load i64, i64* %34, align 8
%35 = load i64, i64* %34, align 8
%36 = add i64 %35, %24
%36 = add i64 %35, %24
%37 = fptosi double %29 to i64
%37 = fptosi double %29 to i64
%38 = freeze i64 %37
%38 = freeze i64 %37
%39 = mul i64 %38, %1
%39 = mul i64 %38, %1
%40 = sitofp i64 %36 to double
%40 = sitofp i64 %36 to double
%41 = fdiv double %40, %27
%41 = fdiv double %40, %27
%42 = call double @llvm.ceil.f64(double %41)
%42 = call double @llvm.ceil.f64(double %41)
%43 = fcmp ult double %42, 0xC3E0000000000000
%43 = fcmp ult double %42, 0xC3E0000000000000
%44 = fcmp uge double %42, 0x43E0000000000000
%44 = fcmp uge double %42, 0x43E0000000000000
%45 = or i1 %43, %44
%45 = or i1 %43, %44
br i1 %45, label %L43, label %L41
br i1 %45, label %L43, label %L41
L20: ; preds = %top
L20: ; preds = %top
%46 = bitcast {}** %5 to [3 x {}*]*
%46 = bitcast {}** %5 to [3 x {}*]*
%47 = bitcast {}*** %ptls_field104 to i8**
%47 = bitcast {}*** %ptls_field104 to i8**
%ptls_load347348 = load i8*, i8** %47, align 8
%ptls_load347348 = load i8*, i8** %47, align 8
%48 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load347348, i32 1392, i32 16) #7
%48 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load347348, i32 1392, i32 16) #7
%49 = bitcast {}* %48 to i64*
%49 = bitcast {}* %48 to i64*
%50 = getelementptr inbounds i64, i64* %49, i64 -1
%50 = getelementptr inbounds i64, i64* %49, i64 -1
store atomic i64 140420404136592, i64* %50 unordered, align 8
store atomic i64 140420404136592, i64* %50 unordered, align 8
%51 = bitcast {}* %48 to double*
%51 = bitcast {}* %48 to double*
store double %29, double* %51, align 8
store double %29, double* %51, align 8
%52 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%52 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
store {}* %48, {}** %52, align 16
store {}* %48, {}** %52, align 16
복사
복사됨
복사
복사됨
call void @j_InexactError_
5208
([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %46, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %48) #0
call void @j_InexactError_
5521
([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %46, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %48) #0
%ptls_load316349350 = load i8*, i8** %47, align 8
%ptls_load316349350 = load i8*, i8** %47, align 8
%53 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load316349350, i32 1440, i32 32) #7
%53 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load316349350, i32 1440, i32 32) #7
%54 = bitcast {}* %53 to i64*
%54 = bitcast {}* %53 to i64*
%55 = getelementptr inbounds i64, i64* %54, i64 -1
%55 = getelementptr inbounds i64, i64* %54, i64 -1
store atomic i64 140420378530656, i64* %55 unordered, align 8
store atomic i64 140420378530656, i64* %55 unordered, align 8
%56 = bitcast {}* %53 to i8*
%56 = bitcast {}* %53 to i8*
%57 = bitcast {}** %5 to i8*
%57 = bitcast {}** %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %56, i8* noundef nonnull align 16 dereferenceable(24) %57, i64 24, i1 false)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %56, i8* noundef nonnull align 16 dereferenceable(24) %57, i64 24, i1 false)
call void @ijl_throw({}* %53)
call void @ijl_throw({}* %53)
unreachable
unreachable
L41: ; preds = %L18
L41: ; preds = %L18
%58 = fptosi double %42 to i64
%58 = fptosi double %42 to i64
%59 = freeze i64 %58
%59 = freeze i64 %58
%60 = mul i64 %59, %1
%60 = mul i64 %59, %1
%61 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420543655312 to {}*), i64 %39, i64 %60)
%61 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420543655312 to {}*), i64 %39, i64 %60)
%62 = bitcast {}* %61 to { i8*, i64, i16, i16, i32 }*
%62 = bitcast {}* %61 to { i8*, i64, i16, i16, i32 }*
%63 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %62, i64 0, i32 1
%63 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %62, i64 0, i32 1
%64 = load i64, i64* %63, align 8
%64 = load i64, i64* %63, align 8
%.not.not = icmp eq i64 %64, 0
%.not.not = icmp eq i64 %64, 0
br i1 %.not.not, label %L85, label %L69.preheader
br i1 %.not.not, label %L85, label %L69.preheader
L69.preheader: ; preds = %L41
L69.preheader: ; preds = %L41
%65 = bitcast {}* %61 to i8**
%65 = bitcast {}* %61 to i8**
%66 = load i8*, i8** %65, align 8
%66 = load i8*, i8** %65, align 8
call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %66, i8 0, i64 %64, i1 false)
call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %66, i8 0, i64 %64, i1 false)
br label %L85
br label %L85
L43: ; preds = %L18
L43: ; preds = %L18
%67 = bitcast {}** %4 to [3 x {}*]*
%67 = bitcast {}** %4 to [3 x {}*]*
%68 = bitcast {}*** %ptls_field104 to i8**
%68 = bitcast {}*** %ptls_field104 to i8**
%ptls_load319342343 = load i8*, i8** %68, align 8
%ptls_load319342343 = load i8*, i8** %68, align 8
%69 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load319342343, i32 1392, i32 16) #7
%69 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load319342343, i32 1392, i32 16) #7
%70 = bitcast {}* %69 to i64*
%70 = bitcast {}* %69 to i64*
%71 = getelementptr inbounds i64, i64* %70, i64 -1
%71 = getelementptr inbounds i64, i64* %70, i64 -1
store atomic i64 140420404136592, i64* %71 unordered, align 8
store atomic i64 140420404136592, i64* %71 unordered, align 8
%72 = bitcast {}* %69 to double*
%72 = bitcast {}* %69 to double*
store double %42, double* %72, align 8
store double %42, double* %72, align 8
%73 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%73 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
store {}* %69, {}** %73, align 16
store {}* %69, {}** %73, align 16
복사
복사됨
복사
복사됨
call void @j_InexactError_
5208
([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %67, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %69) #0
call void @j_InexactError_
5521
([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %67, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %69) #0
%ptls_load322344345 = load i8*, i8** %68, align 8
%ptls_load322344345 = load i8*, i8** %68, align 8
%74 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load322344345, i32 1440, i32 32) #7
%74 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load322344345, i32 1440, i32 32) #7
%75 = bitcast {}* %74 to i64*
%75 = bitcast {}* %74 to i64*
%76 = getelementptr inbounds i64, i64* %75, i64 -1
%76 = getelementptr inbounds i64, i64* %75, i64 -1
store atomic i64 140420378530656, i64* %76 unordered, align 8
store atomic i64 140420378530656, i64* %76 unordered, align 8
%77 = bitcast {}* %74 to i8*
%77 = bitcast {}* %74 to i8*
%78 = bitcast {}** %4 to i8*
%78 = bitcast {}** %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %77, i8* noundef nonnull align 8 dereferenceable(24) %78, i64 24, i1 false)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %77, i8* noundef nonnull align 8 dereferenceable(24) %78, i64 24, i1 false)
call void @ijl_throw({}* %74)
call void @ijl_throw({}* %74)
unreachable
unreachable
L85: ; preds = %L69.preheader, %L41
L85: ; preds = %L69.preheader, %L41
%79 = add i64 %23, %19
%79 = add i64 %23, %19
%80 = add i64 %35, %19
%80 = add i64 %35, %19
%81 = add i64 %19, 1
%81 = add i64 %19, 1
%.not = icmp sgt i64 %81, %79
%.not = icmp sgt i64 %81, %79
%value_phi11 = select i1 %.not, i64 %19, i64 %79
%value_phi11 = select i1 %.not, i64 %19, i64 %79
%.not108 = icmp sgt i64 %81, %80
%.not108 = icmp sgt i64 %81, %80
%value_phi12 = select i1 %.not108, i64 %19, i64 %80
%value_phi12 = select i1 %.not108, i64 %19, i64 %80
%.sroa.089.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 0
%.sroa.089.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 0
store i64 %81, i64* %.sroa.089.0..sroa_idx, align 8
store i64 %81, i64* %.sroa.089.0..sroa_idx, align 8
%.sroa.391.0..sroa_idx92 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 1
%.sroa.391.0..sroa_idx92 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 1
store i64 %value_phi11, i64* %.sroa.391.0..sroa_idx92, align 8
store i64 %value_phi11, i64* %.sroa.391.0..sroa_idx92, align 8
%.sroa.084.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 0
%.sroa.084.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 0
store i64 %81, i64* %.sroa.084.0..sroa_idx, align 8
store i64 %81, i64* %.sroa.084.0..sroa_idx, align 8
%.sroa.3.0..sroa_idx86 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 1
%.sroa.3.0..sroa_idx86 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 1
store i64 %value_phi12, i64* %.sroa.3.0..sroa_idx86, align 8
store i64 %value_phi12, i64* %.sroa.3.0..sroa_idx86, align 8
%82 = bitcast {}* %61 to {}**
%82 = bitcast {}* %61 to {}**
%83 = getelementptr inbounds {}*, {}** %82, i64 3
%83 = getelementptr inbounds {}*, {}** %82, i64 3
%84 = bitcast {}** %83 to i64*
%84 = bitcast {}** %83 to i64*
%85 = load i64, i64* %84, align 8
%85 = load i64, i64* %84, align 8
%86 = getelementptr inbounds {}*, {}** %82, i64 4
%86 = getelementptr inbounds {}*, {}** %82, i64 4
%87 = bitcast {}** %86 to i64*
%87 = bitcast {}** %86 to i64*
%88 = load i64, i64* %87, align 8
%88 = load i64, i64* %87, align 8
%89 = icmp slt i64 %value_phi11, %81
%89 = icmp slt i64 %value_phi11, %81
%90 = icmp ult i64 %19, 9223372036854775807
%90 = icmp ult i64 %19, 9223372036854775807
%91 = icmp sle i64 %81, %85
%91 = icmp sle i64 %81, %85
%92 = and i1 %90, %91
%92 = and i1 %90, %91
%93 = icmp sgt i64 %value_phi11, 0
%93 = icmp sgt i64 %value_phi11, 0
%94 = icmp sle i64 %value_phi11, %85
%94 = icmp sle i64 %value_phi11, %85
%95 = and i1 %93, %94
%95 = and i1 %93, %94
%96 = and i1 %92, %95
%96 = and i1 %92, %95
%97 = or i1 %89, %96
%97 = or i1 %89, %96
%98 = icmp slt i64 %value_phi12, %81
%98 = icmp slt i64 %value_phi12, %81
%99 = icmp sle i64 %81, %88
%99 = icmp sle i64 %81, %88
%100 = and i1 %90, %99
%100 = and i1 %90, %99
%101 = icmp sgt i64 %value_phi12, 0
%101 = icmp sgt i64 %value_phi12, 0
%102 = icmp sle i64 %value_phi12, %88
%102 = icmp sle i64 %value_phi12, %88
%103 = and i1 %101, %102
%103 = and i1 %101, %102
%104 = and i1 %100, %103
%104 = and i1 %100, %103
%105 = or i1 %98, %104
%105 = or i1 %98, %104
%106 = and i1 %97, %105
%106 = and i1 %97, %105
br i1 %106, label %L142, label %L139
br i1 %106, label %L142, label %L139
L139: ; preds = %L85
L139: ; preds = %L85
%107 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%107 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
store {}* %61, {}** %107, align 16
store {}* %61, {}** %107, align 16
복사
복사됨
복사
복사됨
call void @j_throw_boundserror_
520
7
({}* nonnull %61, [2 x [2 x i64]]* nocapture readonly %6) #8
call void @j_throw_boundserror_
5
520
({}* nonnull %61, [2 x [2 x i64]]* nocapture readonly %6) #8
unreachable
unreachable
L142: ; preds = %L85
L142: ; preds = %L85
%108 = sub i64 %value_phi11, %81
%108 = sub i64 %value_phi11, %81
%109 = add i64 %108, 1
%109 = add i64 %108, 1
%110 = icmp ult i64 %108, 9223372036854775807
%110 = icmp ult i64 %108, 9223372036854775807
%111 = select i1 %110, i64 %109, i64 0
%111 = select i1 %110, i64 %109, i64 0
%112 = sub i64 %value_phi12, %81
%112 = sub i64 %value_phi12, %81
%113 = add i64 %112, 1
%113 = add i64 %112, 1
%114 = icmp ult i64 %112, 9223372036854775807
%114 = icmp ult i64 %112, 9223372036854775807
%115 = select i1 %114, i64 %113, i64 0
%115 = select i1 %114, i64 %113, i64 0
%116 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 1, i64 0
%116 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 1, i64 0
store i64 %115, i64* %116, align 8
store i64 %115, i64* %116, align 8
%117 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 0, i64 0
%117 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 0, i64 0
store i64 %111, i64* %117, align 8
store i64 %111, i64* %117, align 8
%118 = icmp ne i64 %111, %23
%118 = icmp ne i64 %111, %23
%119 = icmp ne i64 %23, 1
%119 = icmp ne i64 %23, 1
%120 = and i1 %118, %119
%120 = and i1 %118, %119
br i1 %120, label %L183, label %L171
br i1 %120, label %L183, label %L171
L171: ; preds = %L142
L171: ; preds = %L142
%121 = icmp ne i64 %115, %35
%121 = icmp ne i64 %115, %35
%122 = icmp ne i64 %35, 1
%122 = icmp ne i64 %35, 1
%123 = and i1 %121, %122
%123 = and i1 %121, %122
br i1 %123, label %L179, label %L189
br i1 %123, label %L179, label %L189
L179: ; preds = %L171
L179: ; preds = %L171
복사
복사됨
복사
복사됨
%124 = call [1 x {}*] @j_DimensionMismatch_
5206
({}* inttoptr (i64 140420371138848 to {}*)) #0
%124 = call [1 x {}*] @j_DimensionMismatch_
5519
({}* inttoptr (i64 140420371138848 to {}*)) #0
%125 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%125 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%126 = extractvalue [1 x {}*] %124, 0
%126 = extractvalue [1 x {}*] %124, 0
store {}* %126, {}** %125, align 16
store {}* %126, {}** %125, align 16
%127 = bitcast {}*** %ptls_field104 to i8**
%127 = bitcast {}*** %ptls_field104 to i8**
%ptls_load325336337 = load i8*, i8** %127, align 8
%ptls_load325336337 = load i8*, i8** %127, align 8
%128 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load325336337, i32 1392, i32 16) #7
%128 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load325336337, i32 1392, i32 16) #7
%129 = bitcast {}* %128 to i64*
%129 = bitcast {}* %128 to i64*
%130 = getelementptr inbounds i64, i64* %129, i64 -1
%130 = getelementptr inbounds i64, i64* %129, i64 -1
store atomic i64 140420371121824, i64* %130 unordered, align 8
store atomic i64 140420371121824, i64* %130 unordered, align 8
%131 = bitcast {}* %128 to {}**
%131 = bitcast {}* %128 to {}**
store {}* %126, {}** %131, align 8
store {}* %126, {}** %131, align 8
call void @ijl_throw({}* %128)
call void @ijl_throw({}* %128)
unreachable
unreachable
L183: ; preds = %L142
L183: ; preds = %L142
복사
복사됨
복사
복사됨
%132 = call [1 x {}*] @j_DimensionMismatch_
5206
({}* inttoptr (i64 140420371138848 to {}*)) #0
%132 = call [1 x {}*] @j_DimensionMismatch_
5519
({}* inttoptr (i64 140420371138848 to {}*)) #0
%133 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%133 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%134 = extractvalue [1 x {}*] %132, 0
%134 = extractvalue [1 x {}*] %132, 0
store {}* %134, {}** %133, align 16
store {}* %134, {}** %133, align 16
%135 = bitcast {}*** %ptls_field104 to i8**
%135 = bitcast {}*** %ptls_field104 to i8**
%ptls_load328339340 = load i8*, i8** %135, align 8
%ptls_load328339340 = load i8*, i8** %135, align 8
%136 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load328339340, i32 1392, i32 16) #7
%136 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load328339340, i32 1392, i32 16) #7
%137 = bitcast {}* %136 to i64*
%137 = bitcast {}* %136 to i64*
%138 = getelementptr inbounds i64, i64* %137, i64 -1
%138 = getelementptr inbounds i64, i64* %137, i64 -1
store atomic i64 140420371121824, i64* %138 unordered, align 8
store atomic i64 140420371121824, i64* %138 unordered, align 8
%139 = bitcast {}* %136 to {}**
%139 = bitcast {}* %136 to {}**
store {}* %134, {}** %139, align 8
store {}* %134, {}** %139, align 8
call void @ijl_throw({}* %136)
call void @ijl_throw({}* %136)
unreachable
unreachable
L189: ; preds = %L171
L189: ; preds = %L171
%140 = icmp sgt i64 %109, 0
%140 = icmp sgt i64 %109, 0
%141 = select i1 %140, i64 %109, i64 0
%141 = select i1 %140, i64 %109, i64 0
%.not109 = icmp ne i64 %141, %111
%.not109 = icmp ne i64 %141, %111
%142 = icmp sgt i64 %113, 0
%142 = icmp sgt i64 %113, 0
%143 = select i1 %142, i64 %113, i64 0
%143 = select i1 %142, i64 %113, i64 0
%144 = icmp ne i64 %143, %115
%144 = icmp ne i64 %143, %115
%value_phi15 = select i1 %.not109, i1 true, i1 %144
%value_phi15 = select i1 %.not109, i1 true, i1 %144
br i1 %value_phi15, label %L384, label %L211
br i1 %value_phi15, label %L384, label %L211
L211: ; preds = %L189
L211: ; preds = %L189
%145 = bitcast {}* %61 to i8**
%145 = bitcast {}* %61 to i8**
%146 = load i8*, i8** %145, align 8
%146 = load i8*, i8** %145, align 8
%147 = bitcast {}* %0 to i8**
%147 = bitcast {}* %0 to i8**
%148 = load i8*, i8** %147, align 8
%148 = load i8*, i8** %147, align 8
%.not110.not = icmp eq i8* %146, %148
%.not110.not = icmp eq i8* %146, %148
br i1 %.not110.not, label %L219, label %L224
br i1 %.not110.not, label %L219, label %L224
L219: ; preds = %L211
L219: ; preds = %L211
%149 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
%149 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8
store {}* %61, {}** %149, align 16
store {}* %61, {}** %149, align 16
%150 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %0)
%150 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %0)
%.phi.trans.insert = bitcast {}* %150 to {}**
%.phi.trans.insert = bitcast {}* %150 to {}**
%.phi.trans.insert174 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 3
%.phi.trans.insert174 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 3
%.phi.trans.insert175 = bitcast {}** %.phi.trans.insert174 to i64*
%.phi.trans.insert175 = bitcast {}** %.phi.trans.insert174 to i64*
%.pre = load i64, i64* %.phi.trans.insert175, align 8
%.pre = load i64, i64* %.phi.trans.insert175, align 8
%.phi.trans.insert176 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 4
%.phi.trans.insert176 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 4
%.phi.trans.insert177 = bitcast {}** %.phi.trans.insert176 to i64*
%.phi.trans.insert177 = bitcast {}** %.phi.trans.insert176 to i64*
%.pre178 = load i64, i64* %.phi.trans.insert177, align 8
%.pre178 = load i64, i64* %.phi.trans.insert177, align 8
br label %L224
br label %L224
L224: ; preds = %L219, %L211
L224: ; preds = %L219, %L211
%151 = phi i64 [ %.pre178, %L219 ], [ %35, %L211 ]
%151 = phi i64 [ %.pre178, %L219 ], [ %35, %L211 ]
%152 = phi i64 [ %.pre, %L219 ], [ %23, %L211 ]
%152 = phi i64 [ %.pre, %L219 ], [ %23, %L211 ]
%value_phi16 = phi {}* [ %150, %L219 ], [ %0, %L211 ]
%value_phi16 = phi {}* [ %150, %L219 ], [ %0, %L211 ]
%.not113 = icmp eq i64 %151, 1
%.not113 = icmp eq i64 %151, 1
%.not112 = icmp eq i64 %152, 1
%.not112 = icmp eq i64 %152, 1
br i1 %114, label %L253.preheader, label %L400
br i1 %114, label %L253.preheader, label %L400
L253.preheader: ; preds = %L224
L253.preheader: ; preds = %L224
%.not111131.not = icmp eq i64 %111, 0
%.not111131.not = icmp eq i64 %111, 0
%153 = bitcast {}* %value_phi16 to i8**
%153 = bitcast {}* %value_phi16 to i8**
%154 = bitcast {}* %61 to i8**
%154 = bitcast {}* %61 to i8**
br i1 %110, label %L259.preheader.us.preheader, label %L400
br i1 %110, label %L259.preheader.us.preheader, label %L400
L259.preheader.us.preheader: ; preds = %L253.preheader
L259.preheader.us.preheader: ; preds = %L253.preheader
%155 = add nuw nsw i64 %85, 1
%155 = add nuw nsw i64 %85, 1
%156 = mul i64 %19, %155
%156 = mul i64 %19, %155
%157 = add i64 %111, %156
%157 = add i64 %111, %156
br label %L259.preheader.us
br label %L259.preheader.us
L259.preheader.us: ; preds = %L362.us, %L259.preheader.us.preheader
L259.preheader.us: ; preds = %L362.us, %L259.preheader.us.preheader
%indvar = phi i64 [ 0, %L259.preheader.us.preheader ], [ %indvar.next, %L362.us ]
%indvar = phi i64 [ 0, %L259.preheader.us.preheader ], [ %indvar.next, %L362.us ]
%value_phi21.us = phi i64 [ 1, %L259.preheader.us.preheader ], [ %207, %L362.us ]
%value_phi21.us = phi i64 [ 1, %L259.preheader.us.preheader ], [ %207, %L362.us ]
%158 = mul i64 %85, %indvar
%158 = mul i64 %85, %indvar
%159 = add i64 %156, %158
%159 = add i64 %156, %158
%160 = add i64 %157, %158
%160 = add i64 %157, %158
br i1 %.not111131.not, label %L362.us, label %L262.lr.ph.us
br i1 %.not111131.not, label %L362.us, label %L262.lr.ph.us
L262.lr.ph.us: ; preds = %L259.preheader.us
L262.lr.ph.us: ; preds = %L259.preheader.us
%value_phi21.op.us = add nsw i64 %value_phi21.us, -1
%value_phi21.op.us = add nsw i64 %value_phi21.us, -1
%161 = select i1 %.not113, i64 0, i64 %value_phi21.op.us
%161 = select i1 %.not113, i64 0, i64 %value_phi21.op.us
%162 = mul i64 %152, %161
%162 = mul i64 %152, %161
%163 = load i8*, i8** %153, align 8
%163 = load i8*, i8** %153, align 8
%164 = add i64 %value_phi21.op.us, %19
%164 = add i64 %value_phi21.op.us, %19
%165 = mul i64 %85, %164
%165 = mul i64 %85, %164
%166 = load i8*, i8** %154, align 8
%166 = load i8*, i8** %154, align 8
br i1 %.not112, label %iter.check, label %iter.check233
br i1 %.not112, label %iter.check, label %iter.check233
iter.check233: ; preds = %L262.lr.ph.us
iter.check233: ; preds = %L262.lr.ph.us
%min.iters.check231 = icmp ult i64 %111, 16
%min.iters.check231 = icmp ult i64 %111, 16
br i1 %min.iters.check231, label %vec.epilog.scalar.ph246, label %vector.memcheck220
br i1 %min.iters.check231, label %vec.epilog.scalar.ph246, label %vector.memcheck220
vector.memcheck220: ; preds = %iter.check233
vector.memcheck220: ; preds = %iter.check233
%scevgep221 = getelementptr i8, i8* %166, i64 %159
%scevgep221 = getelementptr i8, i8* %166, i64 %159
%scevgep222 = getelementptr i8, i8* %166, i64 %160
%scevgep222 = getelementptr i8, i8* %166, i64 %160
%scevgep223 = getelementptr i8, i8* %163, i64 %162
%scevgep223 = getelementptr i8, i8* %163, i64 %162
%scevgep224 = getelementptr i8, i8* %163, i64 %111
%scevgep224 = getelementptr i8, i8* %163, i64 %111
%scevgep225 = getelementptr i8, i8* %scevgep224, i64 %162
%scevgep225 = getelementptr i8, i8* %scevgep224, i64 %162
%bound0226 = icmp ult i8* %scevgep221, %scevgep225
%bound0226 = icmp ult i8* %scevgep221, %scevgep225
%bound1227 = icmp ult i8* %scevgep223, %scevgep222
%bound1227 = icmp ult i8* %scevgep223, %scevgep222
%found.conflict228 = and i1 %bound0226, %bound1227
%found.conflict228 = and i1 %bound0226, %bound1227
br i1 %found.conflict228, label %vec.epilog.scalar.ph246, label %vector.main.loop.iter.check235
br i1 %found.conflict228, label %vec.epilog.scalar.ph246, label %vector.main.loop.iter.check235
vector.main.loop.iter.check235: ; preds = %vector.memcheck220
vector.main.loop.iter.check235: ; preds = %vector.memcheck220
%min.iters.check234 = icmp ult i64 %111, 128
%min.iters.check234 = icmp ult i64 %111, 128
br i1 %min.iters.check234, label %vec.epilog.ph249, label %vector.ph236
br i1 %min.iters.check234, label %vec.epilog.ph249, label %vector.ph236
vector.ph236: ; preds = %vector.main.loop.iter.check235
vector.ph236: ; preds = %vector.main.loop.iter.check235
%n.vec238 = and i64 %111, -128
%n.vec238 = and i64 %111, -128
br label %vector.body230
br label %vector.body230
vector.body230: ; preds = %vector.body230, %vector.ph236
vector.body230: ; preds = %vector.body230, %vector.ph236
%index240 = phi i64 [ 0, %vector.ph236 ], [ %index.next244, %vector.body230 ]
%index240 = phi i64 [ 0, %vector.ph236 ], [ %index.next244, %vector.body230 ]
%167 = add i64 %162, %index240
%167 = add i64 %162, %index240
%168 = getelementptr inbounds i8, i8* %163, i64 %167
%168 = getelementptr inbounds i8, i8* %163, i64 %167
%169 = bitcast i8* %168 to <32 x i8>*
%169 = bitcast i8* %168 to <32 x i8>*
%wide.load = load <32 x i8>, <32 x i8>* %169, align 1
%wide.load = load <32 x i8>, <32 x i8>* %169, align 1
%170 = getelementptr inbounds i8, i8* %168, i64 32
%170 = getelementptr inbounds i8, i8* %168, i64 32
%171 = bitcast i8* %170 to <32 x i8>*
%171 = bitcast i8* %170 to <32 x i8>*
%wide.load241 = load <32 x i8>, <32 x i8>* %171, align 1
%wide.load241 = load <32 x i8>, <32 x i8>* %171, align 1
%172 = getelementptr inbounds i8, i8* %168, i64 64
%172 = getelementptr inbounds i8, i8* %168, i64 64
%173 = bitcast i8* %172 to <32 x i8>*
%173 = bitcast i8* %172 to <32 x i8>*
%wide.load242 = load <32 x i8>, <32 x i8>* %173, align 1
%wide.load242 = load <32 x i8>, <32 x i8>* %173, align 1
%174 = getelementptr inbounds i8, i8* %168, i64 96
%174 = getelementptr inbounds i8, i8* %168, i64 96
%175 = bitcast i8* %174 to <32 x i8>*
%175 = bitcast i8* %174 to <32 x i8>*
%wide.load243 = load <32 x i8>, <32 x i8>* %175, align 1
%wide.load243 = load <32 x i8>, <32 x i8>* %175, align 1
%176 = add i64 %index240, %19
%176 = add i64 %index240, %19
%177 = add i64 %176, %165
%177 = add i64 %176, %165
%178 = getelementptr inbounds i8, i8* %166, i64 %177
%178 = getelementptr inbounds i8, i8* %166, i64 %177
%179 = lshr <32 x i8> %wide.load, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%179 = lshr <32 x i8> %wide.load, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%180 = lshr <32 x i8> %wide.load241, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%180 = lshr <32 x i8> %wide.load241, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%181 = lshr <32 x i8> %wide.load242, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%181 = lshr <32 x i8> %wide.load242, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%182 = lshr <32 x i8> %wide.load243, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%182 = lshr <32 x i8> %wide.load243, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%183 = bitcast i8* %178 to <32 x i8>*
%183 = bitcast i8* %178 to <32 x i8>*
store <32 x i8> %179, <32 x i8>* %183, align 1
store <32 x i8> %179, <32 x i8>* %183, align 1
%184 = getelementptr inbounds i8, i8* %178, i64 32
%184 = getelementptr inbounds i8, i8* %178, i64 32
%185 = bitcast i8* %184 to <32 x i8>*
%185 = bitcast i8* %184 to <32 x i8>*
store <32 x i8> %180, <32 x i8>* %185, align 1
store <32 x i8> %180, <32 x i8>* %185, align 1
%186 = getelementptr inbounds i8, i8* %178, i64 64
%186 = getelementptr inbounds i8, i8* %178, i64 64
%187 = bitcast i8* %186 to <32 x i8>*
%187 = bitcast i8* %186 to <32 x i8>*
store <32 x i8> %181, <32 x i8>* %187, align 1
store <32 x i8> %181, <32 x i8>* %187, align 1
%188 = getelementptr inbounds i8, i8* %178, i64 96
%188 = getelementptr inbounds i8, i8* %178, i64 96
%189 = bitcast i8* %188 to <32 x i8>*
%189 = bitcast i8* %188 to <32 x i8>*
store <32 x i8> %182, <32 x i8>* %189, align 1
store <32 x i8> %182, <32 x i8>* %189, align 1
%index.next244 = add nuw i64 %index240, 128
%index.next244 = add nuw i64 %index240, 128
%190 = icmp eq i64 %index.next244, %n.vec238
%190 = icmp eq i64 %index.next244, %n.vec238
br i1 %190, label %middle.block229, label %vector.body230
br i1 %190, label %middle.block229, label %vector.body230
middle.block229: ; preds = %vector.body230
middle.block229: ; preds = %vector.body230
%cmp.n239 = icmp eq i64 %111, %n.vec238
%cmp.n239 = icmp eq i64 %111, %n.vec238
br i1 %cmp.n239, label %L362.us, label %vec.epilog.iter.check248
br i1 %cmp.n239, label %L362.us, label %vec.epilog.iter.check248
vec.epilog.iter.check248: ; preds = %middle.block229
vec.epilog.iter.check248: ; preds = %middle.block229
%n.vec.remaining250 = and i64 %111, 112
%n.vec.remaining250 = and i64 %111, 112
%min.epilog.iters.check251 = icmp eq i64 %n.vec.remaining250, 0
%min.epilog.iters.check251 = icmp eq i64 %n.vec.remaining250, 0
br i1 %min.epilog.iters.check251, label %vec.epilog.scalar.ph246, label %vec.epilog.ph249
br i1 %min.epilog.iters.check251, label %vec.epilog.scalar.ph246, label %vec.epilog.ph249
vec.epilog.ph249: ; preds = %vec.epilog.iter.check248, %vector.main.loop.iter.check235
vec.epilog.ph249: ; preds = %vec.epilog.iter.check248, %vector.main.loop.iter.check235
%vec.epilog.resume.val252 = phi i64 [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.main.loop.iter.check235 ]
%vec.epilog.resume.val252 = phi i64 [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.main.loop.iter.check235 ]
%n.vec254 = and i64 %111, -16
%n.vec254 = and i64 %111, -16
br label %vec.epilog.vector.body247
br label %vec.epilog.vector.body247
vec.epilog.vector.body247: ; preds = %vec.epilog.vector.body247, %vec.epilog.ph249
vec.epilog.vector.body247: ; preds = %vec.epilog.vector.body247, %vec.epilog.ph249
%index257 = phi i64 [ %vec.epilog.resume.val252, %vec.epilog.ph249 ], [ %index.next259, %vec.epilog.vector.body247 ]
%index257 = phi i64 [ %vec.epilog.resume.val252, %vec.epilog.ph249 ], [ %index.next259, %vec.epilog.vector.body247 ]
%191 = add i64 %162, %index257
%191 = add i64 %162, %index257
%192 = getelementptr inbounds i8, i8* %163, i64 %191
%192 = getelementptr inbounds i8, i8* %163, i64 %191
%193 = bitcast i8* %192 to <16 x i8>*
%193 = bitcast i8* %192 to <16 x i8>*
%wide.load258 = load <16 x i8>, <16 x i8>* %193, align 1
%wide.load258 = load <16 x i8>, <16 x i8>* %193, align 1
%194 = add i64 %index257, %19
%194 = add i64 %index257, %19
%195 = add i64 %194, %165
%195 = add i64 %194, %165
%196 = getelementptr inbounds i8, i8* %166, i64 %195
%196 = getelementptr inbounds i8, i8* %166, i64 %195
%197 = lshr <16 x i8> %wide.load258, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%197 = lshr <16 x i8> %wide.load258, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%198 = bitcast i8* %196 to <16 x i8>*
%198 = bitcast i8* %196 to <16 x i8>*
store <16 x i8> %197, <16 x i8>* %198, align 1
store <16 x i8> %197, <16 x i8>* %198, align 1
%index.next259 = add nuw i64 %index257, 16
%index.next259 = add nuw i64 %index257, 16
%199 = icmp eq i64 %index.next259, %n.vec254
%199 = icmp eq i64 %index.next259, %n.vec254
br i1 %199, label %vec.epilog.middle.block245, label %vec.epilog.vector.body247
br i1 %199, label %vec.epilog.middle.block245, label %vec.epilog.vector.body247
vec.epilog.middle.block245: ; preds = %vec.epilog.vector.body247
vec.epilog.middle.block245: ; preds = %vec.epilog.vector.body247
%cmp.n256 = icmp eq i64 %111, %n.vec254
%cmp.n256 = icmp eq i64 %111, %n.vec254
br i1 %cmp.n256, label %L362.us, label %vec.epilog.scalar.ph246
br i1 %cmp.n256, label %L362.us, label %vec.epilog.scalar.ph246
vec.epilog.scalar.ph246: ; preds = %vec.epilog.middle.block245, %vec.epilog.iter.check248, %vector.memcheck220, %iter.check233
vec.epilog.scalar.ph246: ; preds = %vec.epilog.middle.block245, %vec.epilog.iter.check248, %vector.memcheck220, %iter.check233
%bc.resume.val255 = phi i64 [ %n.vec254, %vec.epilog.middle.block245 ], [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.memcheck220 ], [ 0, %iter.check233 ]
%bc.resume.val255 = phi i64 [ %n.vec254, %vec.epilog.middle.block245 ], [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.memcheck220 ], [ 0, %iter.check233 ]
br label %L262.us159
br label %L262.us159
L262.us159: ; preds = %L262.us159, %vec.epilog.scalar.ph246
L262.us159: ; preds = %L262.us159, %vec.epilog.scalar.ph246
%value_phi24132.us160 = phi i64 [ %206, %L262.us159 ], [ %bc.resume.val255, %vec.epilog.scalar.ph246 ]
%value_phi24132.us160 = phi i64 [ %206, %L262.us159 ], [ %bc.resume.val255, %vec.epilog.scalar.ph246 ]
%200 = add i64 %162, %value_phi24132.us160
%200 = add i64 %162, %value_phi24132.us160
%201 = getelementptr inbounds i8, i8* %163, i64 %200
%201 = getelementptr inbounds i8, i8* %163, i64 %200
%202 = load i8, i8* %201, align 1
%202 = load i8, i8* %201, align 1
%203 = add i64 %value_phi24132.us160, %19
%203 = add i64 %value_phi24132.us160, %19
%204 = add i64 %203, %165
%204 = add i64 %203, %165
%205 = getelementptr inbounds i8, i8* %166, i64 %204
%205 = getelementptr inbounds i8, i8* %166, i64 %204
%.lobit.us161 = lshr i8 %202, 7
%.lobit.us161 = lshr i8 %202, 7
store i8 %.lobit.us161, i8* %205, align 1
store i8 %.lobit.us161, i8* %205, align 1
%206 = add nuw nsw i64 %value_phi24132.us160, 1
%206 = add nuw nsw i64 %value_phi24132.us160, 1
%exitcond171.not = icmp eq i64 %206, %111
%exitcond171.not = icmp eq i64 %206, %111
br i1 %exitcond171.not, label %L362.us, label %L262.us159
br i1 %exitcond171.not, label %L362.us, label %L262.us159
L362.us: ; preds = %vec.epilog.middle.block, %middle.block, %L262.us.us, %L262.us159, %vec.epilog.middle.block245, %middle.block229, %L259.preheader.us
L362.us: ; preds = %vec.epilog.middle.block, %middle.block, %L262.us.us, %L262.us159, %vec.epilog.middle.block245, %middle.block229, %L259.preheader.us
%207 = add nuw i64 %value_phi21.us, 1
%207 = add nuw i64 %value_phi21.us, 1
%208 = icmp ult i64 %value_phi21.us, 9223372036854775807
%208 = icmp ult i64 %value_phi21.us, 9223372036854775807
%209 = icmp sle i64 %207, %115
%209 = icmp sle i64 %207, %115
%210 = icmp ne i64 %value_phi21.us, %115
%210 = icmp ne i64 %value_phi21.us, %115
%not..us = and i1 %208, %209
%not..us = and i1 %208, %209
%narrow.us = and i1 %210, %not..us
%narrow.us = and i1 %210, %not..us
%indvar.next = add i64 %indvar, 1
%indvar.next = add i64 %indvar, 1
br i1 %narrow.us, label %L259.preheader.us, label %L400
br i1 %narrow.us, label %L259.preheader.us, label %L400
L262.us.us: ; preds = %vec.epilog.scalar.ph, %L262.us.us
L262.us.us: ; preds = %vec.epilog.scalar.ph, %L262.us.us
%value_phi24132.us.us = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %215, %L262.us.us ]
%value_phi24132.us.us = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %215, %L262.us.us ]
%211 = load i8, i8* %216, align 1
%211 = load i8, i8* %216, align 1
%212 = add i64 %value_phi24132.us.us, %19
%212 = add i64 %value_phi24132.us.us, %19
%213 = add i64 %212, %165
%213 = add i64 %212, %165
%214 = getelementptr inbounds i8, i8* %166, i64 %213
%214 = getelementptr inbounds i8, i8* %166, i64 %213
%.lobit.us.us = lshr i8 %211, 7
%.lobit.us.us = lshr i8 %211, 7
store i8 %.lobit.us.us, i8* %214, align 1
store i8 %.lobit.us.us, i8* %214, align 1
%215 = add nuw nsw i64 %value_phi24132.us.us, 1
%215 = add nuw nsw i64 %value_phi24132.us.us, 1
%exitcond172.not = icmp eq i64 %215, %111
%exitcond172.not = icmp eq i64 %215, %111
br i1 %exitcond172.not, label %L362.us, label %L262.us.us
br i1 %exitcond172.not, label %L362.us, label %L262.us.us
iter.check: ; preds = %L262.lr.ph.us
iter.check: ; preds = %L262.lr.ph.us
%216 = getelementptr inbounds i8, i8* %163, i64 %162
%216 = getelementptr inbounds i8, i8* %163, i64 %162
%min.iters.check = icmp ult i64 %111, 16
%min.iters.check = icmp ult i64 %111, 16
br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.memcheck
br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.memcheck
vector.memcheck: ; preds = %iter.check
vector.memcheck: ; preds = %iter.check
%scevgep = getelementptr i8, i8* %166, i64 %159
%scevgep = getelementptr i8, i8* %166, i64 %159
%scevgep203 = getelementptr i8, i8* %166, i64 %160
%scevgep203 = getelementptr i8, i8* %166, i64 %160
%scevgep204 = getelementptr i8, i8* %163, i64 1
%scevgep204 = getelementptr i8, i8* %163, i64 1
%scevgep205 = getelementptr i8, i8* %scevgep204, i64 %162
%scevgep205 = getelementptr i8, i8* %scevgep204, i64 %162
%bound0 = icmp ult i8* %scevgep, %scevgep205
%bound0 = icmp ult i8* %scevgep, %scevgep205
%bound1 = icmp ult i8* %216, %scevgep203
%bound1 = icmp ult i8* %216, %scevgep203
%found.conflict = and i1 %bound0, %bound1
%found.conflict = and i1 %bound0, %bound1
br i1 %found.conflict, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
br i1 %found.conflict, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
vector.main.loop.iter.check: ; preds = %vector.memcheck
vector.main.loop.iter.check: ; preds = %vector.memcheck
%min.iters.check206 = icmp ult i64 %111, 128
%min.iters.check206 = icmp ult i64 %111, 128
br i1 %min.iters.check206, label %vec.epilog.ph, label %vector.ph
br i1 %min.iters.check206, label %vec.epilog.ph, label %vector.ph
vector.ph: ; preds = %vector.main.loop.iter.check
vector.ph: ; preds = %vector.main.loop.iter.check
%n.vec = and i64 %111, -128
%n.vec = and i64 %111, -128
%.pre330 = load i8, i8* %216, align 1
%.pre330 = load i8, i8* %216, align 1
br label %vector.body
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%broadcast.splatinsert = insertelement <32 x i8> poison, i8 %.pre330, i64 0
%broadcast.splatinsert = insertelement <32 x i8> poison, i8 %.pre330, i64 0
%217 = add i64 %index, %19
%217 = add i64 %index, %19
%218 = add i64 %217, %165
%218 = add i64 %217, %165
%219 = getelementptr inbounds i8, i8* %166, i64 %218
%219 = getelementptr inbounds i8, i8* %166, i64 %218
%220 = lshr <32 x i8> %broadcast.splatinsert, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
%220 = lshr <32 x i8> %broadcast.splatinsert, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
%221 = shufflevector <32 x i8> %220, <32 x i8> poison, <32 x i32> zeroinitializer
%221 = shufflevector <32 x i8> %220, <32 x i8> poison, <32 x i32> zeroinitializer
%222 = bitcast i8* %219 to <32 x i8>*
%222 = bitcast i8* %219 to <32 x i8>*
store <32 x i8> %221, <32 x i8>* %222, align 1
store <32 x i8> %221, <32 x i8>* %222, align 1
%223 = getelementptr inbounds i8, i8* %219, i64 32
%223 = getelementptr inbounds i8, i8* %219, i64 32
%224 = bitcast i8* %223 to <32 x i8>*
%224 = bitcast i8* %223 to <32 x i8>*
store <32 x i8> %221, <32 x i8>* %224, align 1
store <32 x i8> %221, <32 x i8>* %224, align 1
%225 = getelementptr inbounds i8, i8* %219, i64 64
%225 = getelementptr inbounds i8, i8* %219, i64 64
%226 = bitcast i8* %225 to <32 x i8>*
%226 = bitcast i8* %225 to <32 x i8>*
store <32 x i8> %221, <32 x i8>* %226, align 1
store <32 x i8> %221, <32 x i8>* %226, align 1
%227 = getelementptr inbounds i8, i8* %219, i64 96
%227 = getelementptr inbounds i8, i8* %219, i64 96
%228 = bitcast i8* %227 to <32 x i8>*
%228 = bitcast i8* %227 to <32 x i8>*
store <32 x i8> %221, <32 x i8>* %228, align 1
store <32 x i8> %221, <32 x i8>* %228, align 1
%index.next = add nuw i64 %index, 128
%index.next = add nuw i64 %index, 128
%229 = icmp eq i64 %index.next, %n.vec
%229 = icmp eq i64 %index.next, %n.vec
br i1 %229, label %middle.block, label %vector.body
br i1 %229, label %middle.block, label %vector.body
middle.block: ; preds = %vector.body
middle.block: ; preds = %vector.body
%cmp.n = icmp eq i64 %111, %n.vec
%cmp.n = icmp eq i64 %111, %n.vec
br i1 %cmp.n, label %L362.us, label %vec.epilog.iter.check
br i1 %cmp.n, label %L362.us, label %vec.epilog.iter.check
vec.epilog.iter.check: ; preds = %middle.block
vec.epilog.iter.check: ; preds = %middle.block
%n.vec.remaining = and i64 %111, 112
%n.vec.remaining = and i64 %111, 112
%min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
%min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph
br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph
vec.epilog.ph: ; preds = %vec.epilog.i
vec.epilog.ph: ; preds = %vec.epilog.i
저장된 비교 결과
원본
파일 열기
define nonnull {}* @julia_sdistancefield_5196({}* noundef nonnull align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) #0 { top: %gcframe334 = alloca [10 x {}*], align 16 %gcframe334.sub = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 0 %3 = bitcast [10 x {}*]* %gcframe334 to i8* call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 16 dereferenceable(80) %3, i8 0, i32 80, i1 false) %4 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 5 %5 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 2 %6 = alloca [2 x [2 x i64]], align 8 %7 = alloca [2 x [1 x i64]], align 8 %8 = alloca [2 x [1 x i64]], align 8 %9 = alloca [2 x [1 x i64]], align 8 %10 = alloca [2 x [1 x i64]], align 8 %thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #6 %ppgcstack_i8 = getelementptr i8, i8* %thread_ptr, i64 -8 %ppgcstack = bitcast i8* %ppgcstack_i8 to {}**** %pgcstack = load {}***, {}**** %ppgcstack, align 8 %11 = bitcast [10 x {}*]* %gcframe334 to i64* store i64 32, i64* %11, align 16 %12 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 1 %13 = bitcast {}** %12 to {}*** %14 = load {}**, {}*** %pgcstack, align 8 store {}** %14, {}*** %13, align 8 %15 = bitcast {}*** %pgcstack to {}*** store {}** %gcframe334.sub, {}*** %15, align 8 %ptls_field104 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2 %16 = bitcast {}*** %ptls_field104 to i64*** %ptls_load105106 = load i64**, i64*** %16, align 8 fence syncscope("singlethread") seq_cst %17 = getelementptr inbounds i64*, i64** %ptls_load105106, i64 2 %safepoint = load i64*, i64** %17, align 8 %18 = load volatile i64, i64* %safepoint, align 8 fence syncscope("singlethread") seq_cst %19 = mul i64 %2, %1 %20 = bitcast {}* %0 to {}** %21 = getelementptr inbounds {}*, {}** %20, i64 3 %22 = bitcast {}** %21 to i64* %23 = load i64, i64* %22, align 8 %24 = shl i64 %19, 1 %25 = add i64 %23, %24 %26 = sitofp i64 %25 to double %27 = sitofp i64 %1 to double %28 = fdiv double %26, %27 %29 = call double @llvm.ceil.f64(double %28) %30 = fcmp ult double %29, 0xC3E0000000000000 %31 = fcmp uge double %29, 0x43E0000000000000 %32 = or i1 %30, %31 br i1 %32, label %L20, label %L18 L18: ; preds = %top %33 = getelementptr inbounds {}*, {}** %20, i64 4 %34 = bitcast {}** %33 to i64* %35 = load i64, i64* %34, align 8 %36 = add i64 %35, %24 %37 = fptosi double %29 to i64 %38 = freeze i64 %37 %39 = mul i64 %38, %1 %40 = sitofp i64 %36 to double %41 = fdiv double %40, %27 %42 = call double @llvm.ceil.f64(double %41) %43 = fcmp ult double %42, 0xC3E0000000000000 %44 = fcmp uge double %42, 0x43E0000000000000 %45 = or i1 %43, %44 br i1 %45, label %L43, label %L41 L20: ; preds = %top %46 = bitcast {}** %5 to [3 x {}*]* %47 = bitcast {}*** %ptls_field104 to i8** %ptls_load347348 = load i8*, i8** %47, align 8 %48 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load347348, i32 1392, i32 16) #7 %49 = bitcast {}* %48 to i64* %50 = getelementptr inbounds i64, i64* %49, i64 -1 store atomic i64 140420404136592, i64* %50 unordered, align 8 %51 = bitcast {}* %48 to double* store double %29, double* %51, align 8 %52 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %48, {}** %52, align 16 call void @j_InexactError_5208([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %46, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %48) #0 %ptls_load316349350 = load i8*, i8** %47, align 8 %53 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load316349350, i32 1440, i32 32) #7 %54 = bitcast {}* %53 to i64* %55 = getelementptr inbounds i64, i64* %54, i64 -1 store atomic i64 140420378530656, i64* %55 unordered, align 8 %56 = bitcast {}* %53 to i8* %57 = bitcast {}** %5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %56, i8* noundef nonnull align 16 dereferenceable(24) %57, i64 24, i1 false) call void @ijl_throw({}* %53) unreachable L41: ; preds = %L18 %58 = fptosi double %42 to i64 %59 = freeze i64 %58 %60 = mul i64 %59, %1 %61 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420543655312 to {}*), i64 %39, i64 %60) %62 = bitcast {}* %61 to { i8*, i64, i16, i16, i32 }* %63 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %62, i64 0, i32 1 %64 = load i64, i64* %63, align 8 %.not.not = icmp eq i64 %64, 0 br i1 %.not.not, label %L85, label %L69.preheader L69.preheader: ; preds = %L41 %65 = bitcast {}* %61 to i8** %66 = load i8*, i8** %65, align 8 call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %66, i8 0, i64 %64, i1 false) br label %L85 L43: ; preds = %L18 %67 = bitcast {}** %4 to [3 x {}*]* %68 = bitcast {}*** %ptls_field104 to i8** %ptls_load319342343 = load i8*, i8** %68, align 8 %69 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load319342343, i32 1392, i32 16) #7 %70 = bitcast {}* %69 to i64* %71 = getelementptr inbounds i64, i64* %70, i64 -1 store atomic i64 140420404136592, i64* %71 unordered, align 8 %72 = bitcast {}* %69 to double* store double %42, double* %72, align 8 %73 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %69, {}** %73, align 16 call void @j_InexactError_5208([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %67, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %69) #0 %ptls_load322344345 = load i8*, i8** %68, align 8 %74 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load322344345, i32 1440, i32 32) #7 %75 = bitcast {}* %74 to i64* %76 = getelementptr inbounds i64, i64* %75, i64 -1 store atomic i64 140420378530656, i64* %76 unordered, align 8 %77 = bitcast {}* %74 to i8* %78 = bitcast {}** %4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %77, i8* noundef nonnull align 8 dereferenceable(24) %78, i64 24, i1 false) call void @ijl_throw({}* %74) unreachable L85: ; preds = %L69.preheader, %L41 %79 = add i64 %23, %19 %80 = add i64 %35, %19 %81 = add i64 %19, 1 %.not = icmp sgt i64 %81, %79 %value_phi11 = select i1 %.not, i64 %19, i64 %79 %.not108 = icmp sgt i64 %81, %80 %value_phi12 = select i1 %.not108, i64 %19, i64 %80 %.sroa.089.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 0 store i64 %81, i64* %.sroa.089.0..sroa_idx, align 8 %.sroa.391.0..sroa_idx92 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 1 store i64 %value_phi11, i64* %.sroa.391.0..sroa_idx92, align 8 %.sroa.084.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 0 store i64 %81, i64* %.sroa.084.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx86 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 1 store i64 %value_phi12, i64* %.sroa.3.0..sroa_idx86, align 8 %82 = bitcast {}* %61 to {}** %83 = getelementptr inbounds {}*, {}** %82, i64 3 %84 = bitcast {}** %83 to i64* %85 = load i64, i64* %84, align 8 %86 = getelementptr inbounds {}*, {}** %82, i64 4 %87 = bitcast {}** %86 to i64* %88 = load i64, i64* %87, align 8 %89 = icmp slt i64 %value_phi11, %81 %90 = icmp ult i64 %19, 9223372036854775807 %91 = icmp sle i64 %81, %85 %92 = and i1 %90, %91 %93 = icmp sgt i64 %value_phi11, 0 %94 = icmp sle i64 %value_phi11, %85 %95 = and i1 %93, %94 %96 = and i1 %92, %95 %97 = or i1 %89, %96 %98 = icmp slt i64 %value_phi12, %81 %99 = icmp sle i64 %81, %88 %100 = and i1 %90, %99 %101 = icmp sgt i64 %value_phi12, 0 %102 = icmp sle i64 %value_phi12, %88 %103 = and i1 %101, %102 %104 = and i1 %100, %103 %105 = or i1 %98, %104 %106 = and i1 %97, %105 br i1 %106, label %L142, label %L139 L139: ; preds = %L85 %107 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %61, {}** %107, align 16 call void @j_throw_boundserror_5207({}* nonnull %61, [2 x [2 x i64]]* nocapture readonly %6) #8 unreachable L142: ; preds = %L85 %108 = sub i64 %value_phi11, %81 %109 = add i64 %108, 1 %110 = icmp ult i64 %108, 9223372036854775807 %111 = select i1 %110, i64 %109, i64 0 %112 = sub i64 %value_phi12, %81 %113 = add i64 %112, 1 %114 = icmp ult i64 %112, 9223372036854775807 %115 = select i1 %114, i64 %113, i64 0 %116 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 1, i64 0 store i64 %115, i64* %116, align 8 %117 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 0, i64 0 store i64 %111, i64* %117, align 8 %118 = icmp ne i64 %111, %23 %119 = icmp ne i64 %23, 1 %120 = and i1 %118, %119 br i1 %120, label %L183, label %L171 L171: ; preds = %L142 %121 = icmp ne i64 %115, %35 %122 = icmp ne i64 %35, 1 %123 = and i1 %121, %122 br i1 %123, label %L179, label %L189 L179: ; preds = %L171 %124 = call [1 x {}*] @j_DimensionMismatch_5206({}* inttoptr (i64 140420371138848 to {}*)) #0 %125 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 %126 = extractvalue [1 x {}*] %124, 0 store {}* %126, {}** %125, align 16 %127 = bitcast {}*** %ptls_field104 to i8** %ptls_load325336337 = load i8*, i8** %127, align 8 %128 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load325336337, i32 1392, i32 16) #7 %129 = bitcast {}* %128 to i64* %130 = getelementptr inbounds i64, i64* %129, i64 -1 store atomic i64 140420371121824, i64* %130 unordered, align 8 %131 = bitcast {}* %128 to {}** store {}* %126, {}** %131, align 8 call void @ijl_throw({}* %128) unreachable L183: ; preds = %L142 %132 = call [1 x {}*] @j_DimensionMismatch_5206({}* inttoptr (i64 140420371138848 to {}*)) #0 %133 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 %134 = extractvalue [1 x {}*] %132, 0 store {}* %134, {}** %133, align 16 %135 = bitcast {}*** %ptls_field104 to i8** %ptls_load328339340 = load i8*, i8** %135, align 8 %136 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load328339340, i32 1392, i32 16) #7 %137 = bitcast {}* %136 to i64* %138 = getelementptr inbounds i64, i64* %137, i64 -1 store atomic i64 140420371121824, i64* %138 unordered, align 8 %139 = bitcast {}* %136 to {}** store {}* %134, {}** %139, align 8 call void @ijl_throw({}* %136) unreachable L189: ; preds = %L171 %140 = icmp sgt i64 %109, 0 %141 = select i1 %140, i64 %109, i64 0 %.not109 = icmp ne i64 %141, %111 %142 = icmp sgt i64 %113, 0 %143 = select i1 %142, i64 %113, i64 0 %144 = icmp ne i64 %143, %115 %value_phi15 = select i1 %.not109, i1 true, i1 %144 br i1 %value_phi15, label %L384, label %L211 L211: ; preds = %L189 %145 = bitcast {}* %61 to i8** %146 = load i8*, i8** %145, align 8 %147 = bitcast {}* %0 to i8** %148 = load i8*, i8** %147, align 8 %.not110.not = icmp eq i8* %146, %148 br i1 %.not110.not, label %L219, label %L224 L219: ; preds = %L211 %149 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %61, {}** %149, align 16 %150 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %0) %.phi.trans.insert = bitcast {}* %150 to {}** %.phi.trans.insert174 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 3 %.phi.trans.insert175 = bitcast {}** %.phi.trans.insert174 to i64* %.pre = load i64, i64* %.phi.trans.insert175, align 8 %.phi.trans.insert176 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 4 %.phi.trans.insert177 = bitcast {}** %.phi.trans.insert176 to i64* %.pre178 = load i64, i64* %.phi.trans.insert177, align 8 br label %L224 L224: ; preds = %L219, %L211 %151 = phi i64 [ %.pre178, %L219 ], [ %35, %L211 ] %152 = phi i64 [ %.pre, %L219 ], [ %23, %L211 ] %value_phi16 = phi {}* [ %150, %L219 ], [ %0, %L211 ] %.not113 = icmp eq i64 %151, 1 %.not112 = icmp eq i64 %152, 1 br i1 %114, label %L253.preheader, label %L400 L253.preheader: ; preds = %L224 %.not111131.not = icmp eq i64 %111, 0 %153 = bitcast {}* %value_phi16 to i8** %154 = bitcast {}* %61 to i8** br i1 %110, label %L259.preheader.us.preheader, label %L400 L259.preheader.us.preheader: ; preds = %L253.preheader %155 = add nuw nsw i64 %85, 1 %156 = mul i64 %19, %155 %157 = add i64 %111, %156 br label %L259.preheader.us L259.preheader.us: ; preds = %L362.us, %L259.preheader.us.preheader %indvar = phi i64 [ 0, %L259.preheader.us.preheader ], [ %indvar.next, %L362.us ] %value_phi21.us = phi i64 [ 1, %L259.preheader.us.preheader ], [ %207, %L362.us ] %158 = mul i64 %85, %indvar %159 = add i64 %156, %158 %160 = add i64 %157, %158 br i1 %.not111131.not, label %L362.us, label %L262.lr.ph.us L262.lr.ph.us: ; preds = %L259.preheader.us %value_phi21.op.us = add nsw i64 %value_phi21.us, -1 %161 = select i1 %.not113, i64 0, i64 %value_phi21.op.us %162 = mul i64 %152, %161 %163 = load i8*, i8** %153, align 8 %164 = add i64 %value_phi21.op.us, %19 %165 = mul i64 %85, %164 %166 = load i8*, i8** %154, align 8 br i1 %.not112, label %iter.check, label %iter.check233 iter.check233: ; preds = %L262.lr.ph.us %min.iters.check231 = icmp ult i64 %111, 16 br i1 %min.iters.check231, label %vec.epilog.scalar.ph246, label %vector.memcheck220 vector.memcheck220: ; preds = %iter.check233 %scevgep221 = getelementptr i8, i8* %166, i64 %159 %scevgep222 = getelementptr i8, i8* %166, i64 %160 %scevgep223 = getelementptr i8, i8* %163, i64 %162 %scevgep224 = getelementptr i8, i8* %163, i64 %111 %scevgep225 = getelementptr i8, i8* %scevgep224, i64 %162 %bound0226 = icmp ult i8* %scevgep221, %scevgep225 %bound1227 = icmp ult i8* %scevgep223, %scevgep222 %found.conflict228 = and i1 %bound0226, %bound1227 br i1 %found.conflict228, label %vec.epilog.scalar.ph246, label %vector.main.loop.iter.check235 vector.main.loop.iter.check235: ; preds = %vector.memcheck220 %min.iters.check234 = icmp ult i64 %111, 128 br i1 %min.iters.check234, label %vec.epilog.ph249, label %vector.ph236 vector.ph236: ; preds = %vector.main.loop.iter.check235 %n.vec238 = and i64 %111, -128 br label %vector.body230 vector.body230: ; preds = %vector.body230, %vector.ph236 %index240 = phi i64 [ 0, %vector.ph236 ], [ %index.next244, %vector.body230 ] %167 = add i64 %162, %index240 %168 = getelementptr inbounds i8, i8* %163, i64 %167 %169 = bitcast i8* %168 to <32 x i8>* %wide.load = load <32 x i8>, <32 x i8>* %169, align 1 %170 = getelementptr inbounds i8, i8* %168, i64 32 %171 = bitcast i8* %170 to <32 x i8>* %wide.load241 = load <32 x i8>, <32 x i8>* %171, align 1 %172 = getelementptr inbounds i8, i8* %168, i64 64 %173 = bitcast i8* %172 to <32 x i8>* %wide.load242 = load <32 x i8>, <32 x i8>* %173, align 1 %174 = getelementptr inbounds i8, i8* %168, i64 96 %175 = bitcast i8* %174 to <32 x i8>* %wide.load243 = load <32 x i8>, <32 x i8>* %175, align 1 %176 = add i64 %index240, %19 %177 = add i64 %176, %165 %178 = getelementptr inbounds i8, i8* %166, i64 %177 %179 = lshr <32 x i8> %wide.load, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %180 = lshr <32 x i8> %wide.load241, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %181 = lshr <32 x i8> %wide.load242, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %182 = lshr <32 x i8> %wide.load243, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %183 = bitcast i8* %178 to <32 x i8>* store <32 x i8> %179, <32 x i8>* %183, align 1 %184 = getelementptr inbounds i8, i8* %178, i64 32 %185 = bitcast i8* %184 to <32 x i8>* store <32 x i8> %180, <32 x i8>* %185, align 1 %186 = getelementptr inbounds i8, i8* %178, i64 64 %187 = bitcast i8* %186 to <32 x i8>* store <32 x i8> %181, <32 x i8>* %187, align 1 %188 = getelementptr inbounds i8, i8* %178, i64 96 %189 = bitcast i8* %188 to <32 x i8>* store <32 x i8> %182, <32 x i8>* %189, align 1 %index.next244 = add nuw i64 %index240, 128 %190 = icmp eq i64 %index.next244, %n.vec238 br i1 %190, label %middle.block229, label %vector.body230 middle.block229: ; preds = %vector.body230 %cmp.n239 = icmp eq i64 %111, %n.vec238 br i1 %cmp.n239, label %L362.us, label %vec.epilog.iter.check248 vec.epilog.iter.check248: ; preds = %middle.block229 %n.vec.remaining250 = and i64 %111, 112 %min.epilog.iters.check251 = icmp eq i64 %n.vec.remaining250, 0 br i1 %min.epilog.iters.check251, label %vec.epilog.scalar.ph246, label %vec.epilog.ph249 vec.epilog.ph249: ; preds = %vec.epilog.iter.check248, %vector.main.loop.iter.check235 %vec.epilog.resume.val252 = phi i64 [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.main.loop.iter.check235 ] %n.vec254 = and i64 %111, -16 br label %vec.epilog.vector.body247 vec.epilog.vector.body247: ; preds = %vec.epilog.vector.body247, %vec.epilog.ph249 %index257 = phi i64 [ %vec.epilog.resume.val252, %vec.epilog.ph249 ], [ %index.next259, %vec.epilog.vector.body247 ] %191 = add i64 %162, %index257 %192 = getelementptr inbounds i8, i8* %163, i64 %191 %193 = bitcast i8* %192 to <16 x i8>* %wide.load258 = load <16 x i8>, <16 x i8>* %193, align 1 %194 = add i64 %index257, %19 %195 = add i64 %194, %165 %196 = getelementptr inbounds i8, i8* %166, i64 %195 %197 = lshr <16 x i8> %wide.load258, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %198 = bitcast i8* %196 to <16 x i8>* store <16 x i8> %197, <16 x i8>* %198, align 1 %index.next259 = add nuw i64 %index257, 16 %199 = icmp eq i64 %index.next259, %n.vec254 br i1 %199, label %vec.epilog.middle.block245, label %vec.epilog.vector.body247 vec.epilog.middle.block245: ; preds = %vec.epilog.vector.body247 %cmp.n256 = icmp eq i64 %111, %n.vec254 br i1 %cmp.n256, label %L362.us, label %vec.epilog.scalar.ph246 vec.epilog.scalar.ph246: ; preds = %vec.epilog.middle.block245, %vec.epilog.iter.check248, %vector.memcheck220, %iter.check233 %bc.resume.val255 = phi i64 [ %n.vec254, %vec.epilog.middle.block245 ], [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.memcheck220 ], [ 0, %iter.check233 ] br label %L262.us159 L262.us159: ; preds = %L262.us159, %vec.epilog.scalar.ph246 %value_phi24132.us160 = phi i64 [ %206, %L262.us159 ], [ %bc.resume.val255, %vec.epilog.scalar.ph246 ] %200 = add i64 %162, %value_phi24132.us160 %201 = getelementptr inbounds i8, i8* %163, i64 %200 %202 = load i8, i8* %201, align 1 %203 = add i64 %value_phi24132.us160, %19 %204 = add i64 %203, %165 %205 = getelementptr inbounds i8, i8* %166, i64 %204 %.lobit.us161 = lshr i8 %202, 7 store i8 %.lobit.us161, i8* %205, align 1 %206 = add nuw nsw i64 %value_phi24132.us160, 1 %exitcond171.not = icmp eq i64 %206, %111 br i1 %exitcond171.not, label %L362.us, label %L262.us159 L362.us: ; preds = %vec.epilog.middle.block, %middle.block, %L262.us.us, %L262.us159, %vec.epilog.middle.block245, %middle.block229, %L259.preheader.us %207 = add nuw i64 %value_phi21.us, 1 %208 = icmp ult i64 %value_phi21.us, 9223372036854775807 %209 = icmp sle i64 %207, %115 %210 = icmp ne i64 %value_phi21.us, %115 %not..us = and i1 %208, %209 %narrow.us = and i1 %210, %not..us %indvar.next = add i64 %indvar, 1 br i1 %narrow.us, label %L259.preheader.us, label %L400 L262.us.us: ; preds = %vec.epilog.scalar.ph, %L262.us.us %value_phi24132.us.us = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %215, %L262.us.us ] %211 = load i8, i8* %216, align 1 %212 = add i64 %value_phi24132.us.us, %19 %213 = add i64 %212, %165 %214 = getelementptr inbounds i8, i8* %166, i64 %213 %.lobit.us.us = lshr i8 %211, 7 store i8 %.lobit.us.us, i8* %214, align 1 %215 = add nuw nsw i64 %value_phi24132.us.us, 1 %exitcond172.not = icmp eq i64 %215, %111 br i1 %exitcond172.not, label %L362.us, label %L262.us.us iter.check: ; preds = %L262.lr.ph.us %216 = getelementptr inbounds i8, i8* %163, i64 %162 %min.iters.check = icmp ult i64 %111, 16 br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.memcheck vector.memcheck: ; preds = %iter.check %scevgep = getelementptr i8, i8* %166, i64 %159 %scevgep203 = getelementptr i8, i8* %166, i64 %160 %scevgep204 = getelementptr i8, i8* %163, i64 1 %scevgep205 = getelementptr i8, i8* %scevgep204, i64 %162 %bound0 = icmp ult i8* %scevgep, %scevgep205 %bound1 = icmp ult i8* %216, %scevgep203 %found.conflict = and i1 %bound0, %bound1 br i1 %found.conflict, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check vector.main.loop.iter.check: ; preds = %vector.memcheck %min.iters.check206 = icmp ult i64 %111, 128 br i1 %min.iters.check206, label %vec.epilog.ph, label %vector.ph vector.ph: ; preds = %vector.main.loop.iter.check %n.vec = and i64 %111, -128 %.pre330 = load i8, i8* %216, align 1 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] %broadcast.splatinsert = insertelement <32 x i8> poison, i8 %.pre330, i64 0 %217 = add i64 %index, %19 %218 = add i64 %217, %165 %219 = getelementptr inbounds i8, i8* %166, i64 %218 %220 = lshr <32 x i8> %broadcast.splatinsert, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0> %221 = shufflevector <32 x i8> %220, <32 x i8> poison, <32 x i32> zeroinitializer %222 = bitcast i8* %219 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %222, align 1 %223 = getelementptr inbounds i8, i8* %219, i64 32 %224 = bitcast i8* %223 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %224, align 1 %225 = getelementptr inbounds i8, i8* %219, i64 64 %226 = bitcast i8* %225 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %226, align 1 %227 = getelementptr inbounds i8, i8* %219, i64 96 %228 = bitcast i8* %227 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %228, align 1 %index.next = add nuw i64 %index, 128 %229 = icmp eq i64 %index.next, %n.vec br i1 %229, label %middle.block, label %vector.body middle.block: ; preds = %vector.body %cmp.n = icmp eq i64 %111, %n.vec br i1 %cmp.n, label %L362.us, label %vec.epilog.iter.check vec.epilog.iter.check: ; preds = %middle.block %n.vec.remaining = and i64 %111, 112 %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0 br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph vec.epilog.ph: ; preds = %vec.epilog.iter.check, %vector.main.loop.iter.check %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ] %n.vec214 = and i64 %111, -16 br label %vec.epilog.vector.body vec.epilog.vector.body: ; preds = %vec.epilog.vector.body, %vec.epilog.ph %index216 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next219, %vec.epilog.vector.body ] %230 = load i8, i8* %216, align 1 %broadcast.splatinsert217 = insertelement <16 x i8> poison, i8 %230, i64 0 %231 = add i64 %index216, %19 %232 = add i64 %231, %165 %233 = getelementptr inbounds i8, i8* %166, i64 %232 %234 = lshr <16 x i8> %broadcast.splatinsert217, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0> %235 = shufflevector <16 x i8> %234, <16 x i8> poison, <16 x i32> zeroinitializer %236 = bitcast i8* %233 to <16 x i8>* store <16 x i8> %235, <16 x i8>* %236, align 1 %index.next219 = add nuw i64 %index216, 16 %237 = icmp eq i64 %index.next219, %n.vec214 br i1 %237, label %vec.epilog.middle.block, label %vec.epilog.vector.body vec.epilog.middle.block: ; preds = %vec.epilog.vector.body %cmp.n215 = icmp eq i64 %111, %n.vec214 br i1 %cmp.n215, label %L362.us, label %vec.epilog.scalar.ph vec.epilog.scalar.ph: ; preds = %vec.epilog.middle.block, %vec.epilog.iter.check, %vector.memcheck, %iter.check %bc.resume.val = phi i64 [ %n.vec214, %vec.epilog.middle.block ], [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.memcheck ], [ 0, %iter.check ] br label %L262.us.us L384: ; preds = %L189 %238 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %10, i64 0, i64 0, i64 0 store i64 %141, i64* %238, align 8 %239 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %10, i64 0, i64 1, i64 0 store i64 %143, i64* %239, align 8 call void @j_throwdm_5205([2 x [1 x i64]]* nocapture readonly %10, [2 x [1 x i64]]* nocapture readonly %7) #8 unreachable L400: ; preds = %L362.us, %L253.preheader, %L224 %240 = icmp ne i64 %39, -9223372036854775808 %241 = icmp ne i64 %1, -1 %242 = or i1 %241, %240 %243 = icmp ne i64 %1, 0 %244 = and i1 %243, %242 br i1 %244, label %pass, label %fail L434: ; preds = %pass37 %245 = bitcast {}* %316 to i8** %246 = load i8*, i8** %245, align 8 %247 = bitcast {}* %305 to i8** %248 = load i8*, i8** %247, align 8 %.not115.not = icmp eq i8* %246, %248 br i1 %.not115.not, label %L442, label %L447 L442: ; preds = %L434 store {}* %316, {}** %303, align 16 %249 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %305) %.phi.trans.insert179 = bitcast {}* %249 to {}** %.phi.trans.insert181 = getelementptr inbounds {}*, {}** %.phi.trans.insert179, i64 3 %.phi.trans.insert182 = bitcast {}** %.phi.trans.insert181 to i64* %.pre183 = load i64, i64* %.phi.trans.insert182, align 8 %.phi.trans.insert184 = getelementptr inbounds {}*, {}** %.phi.trans.insert179, i64 4 %.phi.trans.insert185 = bitcast {}** %.phi.trans.insert184 to i64* %.pre186 = load i64, i64* %.phi.trans.insert185, align 8 br label %L447 L447: ; preds = %L442, %L434 %250 = phi i64 [ %.pre186, %L442 ], [ %312, %L434 ] %251 = phi i64 [ %.pre183, %L442 ], [ %309, %L434 ] %value_phi39 = phi {}* [ %249, %L442 ], [ %305, %L434 ] %.not120 = icmp eq i64 %250, 1 %.not119 = icmp eq i64 %251, 1 %.not116.not.not = icmp eq i64 %312, 0 %.not117 = icmp eq i64 %309, 0 %or.cond351 = select i1 %.not116.not.not, i1 true, i1 %.not117 br i1 %or.cond351, label %L564, label %L480.preheader.L489.lr.ph.us141_crit_edge L480.preheader.L489.lr.ph.us141_crit_edge: ; preds = %L447 %252 = bitcast {}* %316 to half** %253 = bitcast {}* %value_phi39 to double** %.pre331 = load double*, double** %253, align 8 %.pre332 = load half*, half** %252, align 8 br label %L489.lr.ph.us141 L489.lr.ph.us141: ; preds = %L528.us148, %L480.preheader.L489.lr.ph.us141_crit_edge %indvar261 = phi i64 [ %indvar.next262, %L528.us148 ], [ 0, %L480.preheader.L489.lr.ph.us141_crit_edge ] %value_phi44.us139 = phi i64 [ %278, %L528.us148 ], [ 1, %L480.preheader.L489.lr.ph.us141_crit_edge ] %254 = mul i64 %309, %indvar261 %255 = add i64 %309, %254 %value_phi44.op.us142 = add nsw i64 %value_phi44.us139, -1 %256 = select i1 %.not120, i64 0, i64 %value_phi44.op.us142 %257 = mul i64 %251, %256 %258 = mul i64 %309, %value_phi44.op.us142 br i1 %.not119, label %L489.lr.ph.split.us.us156, label %L489.us143.preheader L489.us143.preheader: ; preds = %L489.lr.ph.us141 %min.iters.check303 = icmp ult i64 %309, 4 br i1 %min.iters.check303, label %scalar.ph301, label %vector.memcheck287 vector.memcheck287: ; preds = %L489.us143.preheader %scevgep288 = getelementptr half, half* %.pre332, i64 %254 %scevgep290 = getelementptr half, half* %.pre332, i64 %255 %scevgep292 = getelementptr double, double* %.pre331, i64 %257 %scevgep294 = getelementptr double, double* %.pre331, i64 %309 %scevgep295 = getelementptr double, double* %scevgep294, i64 %257 %259 = bitcast double* %scevgep295 to half* %bound0297 = icmp ult half* %scevgep288, %259 %260 = bitcast half* %scevgep290 to double* %bound1298 = icmp ult double* %scevgep292, %260 %found.conflict299 = and i1 %bound0297, %bound1298 br i1 %found.conflict299, label %scalar.ph301, label %vector.ph304 vector.ph304: ; preds = %vector.memcheck287 %n.vec306 = and i64 %309, 9223372036854775804 %broadcast.splatinsert311 = insertelement <4 x double> poison, double %27, i64 0 %broadcast.splat312 = shufflevector <4 x double> %broadcast.splatinsert311, <4 x double> poison, <4 x i32> zeroinitializer br label %vector.body302 vector.body302: ; preds = %vector.body302, %vector.ph304 %index309 = phi i64 [ 0, %vector.ph304 ], [ %index.next313, %vector.body302 ] %261 = add i64 %257, %index309 %262 = getelementptr inbounds double, double* %.pre331, i64 %261 %263 = bitcast double* %262 to <4 x double>* %wide.load310 = load <4 x double>, <4 x double>* %263, align 8 %264 = fdiv <4 x double> %wide.load310, %broadcast.splat312 %265 = fptrunc <4 x double> %264 to <4 x half> %266 = add i64 %258, %index309 %267 = getelementptr inbounds half, half* %.pre332, i64 %266 %268 = bitcast half* %267 to <4 x half>* store <4 x half> %265, <4 x half>* %268, align 2 %index.next313 = add nuw i64 %index309, 4 %269 = icmp eq i64 %index.next313, %n.vec306 br i1 %269, label %middle.block300, label %vector.body302 middle.block300: ; preds = %vector.body302 %cmp.n308 = icmp eq i64 %309, %n.vec306 br i1 %cmp.n308, label %L528.us148, label %scalar.ph301 scalar.ph301: ; preds = %middle.block300, %vector.memcheck287, %L489.us143.preheader %bc.resume.val307 = phi i64 [ %n.vec306, %middle.block300 ], [ 0, %L489.us143.preheader ], [ 0, %vector.memcheck287 ] br label %L489.us143 L489.us143: ; preds = %L489.us143, %scalar.ph301 %value_phi47130.us144 = phi i64 [ %277, %L489.us143 ], [ %bc.resume.val307, %scalar.ph301 ] %270 = add i64 %257, %value_phi47130.us144 %271 = getelementptr inbounds double, double* %.pre331, i64 %270 %272 = load double, double* %271, align 8 %273 = fdiv double %272, %27 %274 = fptrunc double %273 to half %275 = add i64 %258, %value_phi47130.us144 %276 = getelementptr inbounds half, half* %.pre332, i64 %275 store half %274, half* %276, align 2 %277 = add nuw nsw i64 %value_phi47130.us144, 1 %exitcond167.not = icmp eq i64 %277, %309 br i1 %exitcond167.not, label %L528.us148, label %L489.us143 L528.us148: ; preds = %middle.block273, %L489.us.us153, %L489.us143, %middle.block300 %278 = add nuw nsw i64 %value_phi44.us139, 1 %exitcond170.not = icmp eq i64 %value_phi44.us139, %312 %indvar.next262 = add i64 %indvar261, 1 br i1 %exitcond170.not, label %L564, label %L489.lr.ph.us141 L489.us.us153: ; preds = %scalar.ph, %L489.us.us153 %value_phi47130.us.us154 = phi i64 [ %bc.resume.val279, %scalar.ph ], [ %284, %L489.us.us153 ] %279 = load double, double* %285, align 8 %280 = fdiv double %279, %27 %281 = fptrunc double %280 to half %282 = add i64 %258, %value_phi47130.us.us154 %283 = getelementptr inbounds half, half* %.pre332, i64 %282 store half %281, half* %283, align 2 %284 = add nuw nsw i64 %value_phi47130.us.us154, 1 %exitcond168.not = icmp eq i64 %284, %309 br i1 %exitcond168.not, label %L528.us148, label %L489.us.us153 L489.lr.ph.split.us.us156: ; preds = %L489.lr.ph.us141 %285 = getelementptr inbounds double, double* %.pre331, i64 %257 %min.iters.check275 = icmp ult i64 %309, 4 br i1 %min.iters.check275, label %scalar.ph, label %vector.memcheck260 vector.memcheck260: ; preds = %L489.lr.ph.split.us.us156 %scevgep263 = getelementptr half, half* %.pre332, i64 %254 %scevgep265 = getelementptr half, half* %.pre332, i64 %255 %scevgep267 = getelementptr double, double* %.pre331, i64 1 %scevgep268 = getelementptr double, double* %scevgep267, i64 %257 %286 = bitcast double* %scevgep268 to half* %bound0270 = icmp ult half* %scevgep263, %286 %287 = bitcast half* %scevgep265 to double* %bound1271 = icmp ult double* %285, %287 %found.conflict272 = and i1 %bound0270, %bound1271 br i1 %found.conflict272, label %scalar.ph, label %vector.ph276 vector.ph276: ; preds = %vector.memcheck260 %n.vec278 = and i64 %309, 9223372036854775804 %broadcast.splatinsert284 = insertelement <4 x double> poison, double %27, i64 0 %.pre333 = load double, double* %285, align 8 br label %vector.body274 vector.body274: ; preds = %vector.body274, %vector.ph276 %index281 = phi i64 [ 0, %vector.ph276 ], [ %index.next286, %vector.body274 ] %broadcast.splatinsert282 = insertelement <4 x double> poison, double %.pre333, i64 0 %288 = fdiv <4 x double> %broadcast.splatinsert282, %broadcast.splatinsert284 %289 = shufflevector <4 x double> %288, <4 x double> poison, <4 x i32> zeroinitializer %290 = fptrunc <4 x double> %289 to <4 x half> %291 = add i64 %258, %index281 %292 = getelementptr inbounds half, half* %.pre332, i64 %291 %293 = bitcast half* %292 to <4 x half>* store <4 x half> %290, <4 x half>* %293, align 2 %index.next286 = add nuw i64 %index281, 4 %294 = icmp eq i64 %index.next286, %n.vec278 br i1 %294, label %middle.block273, label %vector.body274 middle.block273: ; preds = %vector.body274 %cmp.n280 = icmp eq i64 %309, %n.vec278 br i1 %cmp.n280, label %L528.us148, label %scalar.ph scalar.ph: ; preds = %middle.block273, %vector.memcheck260, %L489.lr.ph.split.us.us156 %bc.resume.val279 = phi i64 [ %n.vec278, %middle.block273 ], [ 0, %L489.lr.ph.split.us.us156 ], [ 0, %vector.memcheck260 ] br label %L489.us.us153 L550: ; preds = %pass37 %295 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %9, i64 0, i64 0, i64 0 store i64 %320, i64* %295, align 8 %296 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %9, i64 0, i64 1, i64 0 store i64 %323, i64* %296, align 8 call void @j_throwdm_5205([2 x [1 x i64]]* nocapture readonly %9, [2 x [1 x i64]]* nocapture readonly %8) #8 unreachable L564: ; preds = %L528.us148, %L447 %297 = load {}*, {}** %12, align 8 %298 = bitcast {}*** %pgcstack to {}** store {}* %297, {}** %298, align 8 ret {}* %316 fail: ; preds = %L400 call void @ijl_throw({}* inttoptr (i64 140420402974672 to {}*)) unreachable pass: ; preds = %L400 %299 = icmp ne i64 %60, -9223372036854775808 %300 = or i1 %241, %299 br i1 %300, label %pass37, label %fail36 fail36: ; preds = %pass call void @ijl_throw({}* inttoptr (i64 140420402974672 to {}*)) unreachable pass37: ; preds = %pass %301 = sdiv i64 %39, %1 %302 = sdiv i64 %60, %1 %303 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %61, {}** %303, align 16 %304 = call nonnull {}* @j_sdf_5202({}* nonnull %61) #0 store {}* %304, {}** %303, align 16 %305 = call nonnull {}* @j_downsample_5203({}* nonnull %304, i64 signext %302, i64 signext %301) #0 %306 = bitcast {}* %305 to {}** %307 = getelementptr inbounds {}*, {}** %306, i64 3 %308 = bitcast {}** %307 to i64* %309 = load i64, i64* %308, align 8 %310 = getelementptr inbounds {}*, {}** %306, i64 4 %311 = bitcast {}** %310 to i64* %312 = load i64, i64* %311, align 8 %313 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %8, i64 0, i64 1, i64 0 store i64 %312, i64* %313, align 8 %314 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %8, i64 0, i64 0, i64 0 store i64 %309, i64* %314, align 8 %315 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 9 store {}* %305, {}** %315, align 8 %316 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420507365008 to {}*), i64 %309, i64 %312) %317 = bitcast {}* %316 to {}** %318 = getelementptr inbounds {}*, {}** %317, i64 3 %319 = bitcast {}** %318 to i64* %320 = load i64, i64* %319, align 8 %.not114 = icmp eq i64 %320, %309 %321 = getelementptr inbounds {}*, {}** %317, i64 4 %322 = bitcast {}** %321 to i64* %323 = load i64, i64* %322, align 8 %.not198 = icmp eq i64 %323, %312 %or.cond = select i1 %.not114, i1 %.not198, i1 false br i1 %or.cond, label %L434, label %L550 }
수정본
파일 열기
define nonnull {}* @julia_sdistancefield_5509({}* noundef nonnull align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) #0 { top: %gcframe334 = alloca [10 x {}*], align 16 %gcframe334.sub = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 0 %3 = bitcast [10 x {}*]* %gcframe334 to i8* call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 16 dereferenceable(80) %3, i8 0, i32 80, i1 false) %4 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 5 %5 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 2 %6 = alloca [2 x [2 x i64]], align 8 %7 = alloca [2 x [1 x i64]], align 8 %8 = alloca [2 x [1 x i64]], align 8 %9 = alloca [2 x [1 x i64]], align 8 %10 = alloca [2 x [1 x i64]], align 8 %thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() #6 %ppgcstack_i8 = getelementptr i8, i8* %thread_ptr, i64 -8 %ppgcstack = bitcast i8* %ppgcstack_i8 to {}**** %pgcstack = load {}***, {}**** %ppgcstack, align 8 %11 = bitcast [10 x {}*]* %gcframe334 to i64* store i64 32, i64* %11, align 16 %12 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 1 %13 = bitcast {}** %12 to {}*** %14 = load {}**, {}*** %pgcstack, align 8 store {}** %14, {}*** %13, align 8 %15 = bitcast {}*** %pgcstack to {}*** store {}** %gcframe334.sub, {}*** %15, align 8 %ptls_field104 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2 %16 = bitcast {}*** %ptls_field104 to i64*** %ptls_load105106 = load i64**, i64*** %16, align 8 fence syncscope("singlethread") seq_cst %17 = getelementptr inbounds i64*, i64** %ptls_load105106, i64 2 %safepoint = load i64*, i64** %17, align 8 %18 = load volatile i64, i64* %safepoint, align 8 fence syncscope("singlethread") seq_cst %19 = mul i64 %2, %1 %20 = bitcast {}* %0 to {}** %21 = getelementptr inbounds {}*, {}** %20, i64 3 %22 = bitcast {}** %21 to i64* %23 = load i64, i64* %22, align 8 %24 = shl i64 %19, 1 %25 = add i64 %23, %24 %26 = sitofp i64 %25 to double %27 = sitofp i64 %1 to double %28 = fdiv double %26, %27 %29 = call double @llvm.ceil.f64(double %28) %30 = fcmp ult double %29, 0xC3E0000000000000 %31 = fcmp uge double %29, 0x43E0000000000000 %32 = or i1 %30, %31 br i1 %32, label %L20, label %L18 L18: ; preds = %top %33 = getelementptr inbounds {}*, {}** %20, i64 4 %34 = bitcast {}** %33 to i64* %35 = load i64, i64* %34, align 8 %36 = add i64 %35, %24 %37 = fptosi double %29 to i64 %38 = freeze i64 %37 %39 = mul i64 %38, %1 %40 = sitofp i64 %36 to double %41 = fdiv double %40, %27 %42 = call double @llvm.ceil.f64(double %41) %43 = fcmp ult double %42, 0xC3E0000000000000 %44 = fcmp uge double %42, 0x43E0000000000000 %45 = or i1 %43, %44 br i1 %45, label %L43, label %L41 L20: ; preds = %top %46 = bitcast {}** %5 to [3 x {}*]* %47 = bitcast {}*** %ptls_field104 to i8** %ptls_load347348 = load i8*, i8** %47, align 8 %48 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load347348, i32 1392, i32 16) #7 %49 = bitcast {}* %48 to i64* %50 = getelementptr inbounds i64, i64* %49, i64 -1 store atomic i64 140420404136592, i64* %50 unordered, align 8 %51 = bitcast {}* %48 to double* store double %29, double* %51, align 8 %52 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %48, {}** %52, align 16 call void @j_InexactError_5521([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %46, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %48) #0 %ptls_load316349350 = load i8*, i8** %47, align 8 %53 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load316349350, i32 1440, i32 32) #7 %54 = bitcast {}* %53 to i64* %55 = getelementptr inbounds i64, i64* %54, i64 -1 store atomic i64 140420378530656, i64* %55 unordered, align 8 %56 = bitcast {}* %53 to i8* %57 = bitcast {}** %5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %56, i8* noundef nonnull align 16 dereferenceable(24) %57, i64 24, i1 false) call void @ijl_throw({}* %53) unreachable L41: ; preds = %L18 %58 = fptosi double %42 to i64 %59 = freeze i64 %58 %60 = mul i64 %59, %1 %61 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420543655312 to {}*), i64 %39, i64 %60) %62 = bitcast {}* %61 to { i8*, i64, i16, i16, i32 }* %63 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %62, i64 0, i32 1 %64 = load i64, i64* %63, align 8 %.not.not = icmp eq i64 %64, 0 br i1 %.not.not, label %L85, label %L69.preheader L69.preheader: ; preds = %L41 %65 = bitcast {}* %61 to i8** %66 = load i8*, i8** %65, align 8 call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %66, i8 0, i64 %64, i1 false) br label %L85 L43: ; preds = %L18 %67 = bitcast {}** %4 to [3 x {}*]* %68 = bitcast {}*** %ptls_field104 to i8** %ptls_load319342343 = load i8*, i8** %68, align 8 %69 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load319342343, i32 1392, i32 16) #7 %70 = bitcast {}* %69 to i64* %71 = getelementptr inbounds i64, i64* %70, i64 -1 store atomic i64 140420404136592, i64* %71 unordered, align 8 %72 = bitcast {}* %69 to double* store double %42, double* %72, align 8 %73 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %69, {}** %73, align 16 call void @j_InexactError_5521([3 x {}*]* noalias nocapture noundef nonnull sret([3 x {}*]) %67, {}* inttoptr (i64 140420548171496 to {}*), {}* readonly inttoptr (i64 140420404138768 to {}*), {}* nonnull readonly %69) #0 %ptls_load322344345 = load i8*, i8** %68, align 8 %74 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load322344345, i32 1440, i32 32) #7 %75 = bitcast {}* %74 to i64* %76 = getelementptr inbounds i64, i64* %75, i64 -1 store atomic i64 140420378530656, i64* %76 unordered, align 8 %77 = bitcast {}* %74 to i8* %78 = bitcast {}** %4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %77, i8* noundef nonnull align 8 dereferenceable(24) %78, i64 24, i1 false) call void @ijl_throw({}* %74) unreachable L85: ; preds = %L69.preheader, %L41 %79 = add i64 %23, %19 %80 = add i64 %35, %19 %81 = add i64 %19, 1 %.not = icmp sgt i64 %81, %79 %value_phi11 = select i1 %.not, i64 %19, i64 %79 %.not108 = icmp sgt i64 %81, %80 %value_phi12 = select i1 %.not108, i64 %19, i64 %80 %.sroa.089.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 0 store i64 %81, i64* %.sroa.089.0..sroa_idx, align 8 %.sroa.391.0..sroa_idx92 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 0, i64 1 store i64 %value_phi11, i64* %.sroa.391.0..sroa_idx92, align 8 %.sroa.084.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 0 store i64 %81, i64* %.sroa.084.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx86 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %6, i64 0, i64 1, i64 1 store i64 %value_phi12, i64* %.sroa.3.0..sroa_idx86, align 8 %82 = bitcast {}* %61 to {}** %83 = getelementptr inbounds {}*, {}** %82, i64 3 %84 = bitcast {}** %83 to i64* %85 = load i64, i64* %84, align 8 %86 = getelementptr inbounds {}*, {}** %82, i64 4 %87 = bitcast {}** %86 to i64* %88 = load i64, i64* %87, align 8 %89 = icmp slt i64 %value_phi11, %81 %90 = icmp ult i64 %19, 9223372036854775807 %91 = icmp sle i64 %81, %85 %92 = and i1 %90, %91 %93 = icmp sgt i64 %value_phi11, 0 %94 = icmp sle i64 %value_phi11, %85 %95 = and i1 %93, %94 %96 = and i1 %92, %95 %97 = or i1 %89, %96 %98 = icmp slt i64 %value_phi12, %81 %99 = icmp sle i64 %81, %88 %100 = and i1 %90, %99 %101 = icmp sgt i64 %value_phi12, 0 %102 = icmp sle i64 %value_phi12, %88 %103 = and i1 %101, %102 %104 = and i1 %100, %103 %105 = or i1 %98, %104 %106 = and i1 %97, %105 br i1 %106, label %L142, label %L139 L139: ; preds = %L85 %107 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %61, {}** %107, align 16 call void @j_throw_boundserror_5520({}* nonnull %61, [2 x [2 x i64]]* nocapture readonly %6) #8 unreachable L142: ; preds = %L85 %108 = sub i64 %value_phi11, %81 %109 = add i64 %108, 1 %110 = icmp ult i64 %108, 9223372036854775807 %111 = select i1 %110, i64 %109, i64 0 %112 = sub i64 %value_phi12, %81 %113 = add i64 %112, 1 %114 = icmp ult i64 %112, 9223372036854775807 %115 = select i1 %114, i64 %113, i64 0 %116 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 1, i64 0 store i64 %115, i64* %116, align 8 %117 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %7, i64 0, i64 0, i64 0 store i64 %111, i64* %117, align 8 %118 = icmp ne i64 %111, %23 %119 = icmp ne i64 %23, 1 %120 = and i1 %118, %119 br i1 %120, label %L183, label %L171 L171: ; preds = %L142 %121 = icmp ne i64 %115, %35 %122 = icmp ne i64 %35, 1 %123 = and i1 %121, %122 br i1 %123, label %L179, label %L189 L179: ; preds = %L171 %124 = call [1 x {}*] @j_DimensionMismatch_5519({}* inttoptr (i64 140420371138848 to {}*)) #0 %125 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 %126 = extractvalue [1 x {}*] %124, 0 store {}* %126, {}** %125, align 16 %127 = bitcast {}*** %ptls_field104 to i8** %ptls_load325336337 = load i8*, i8** %127, align 8 %128 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load325336337, i32 1392, i32 16) #7 %129 = bitcast {}* %128 to i64* %130 = getelementptr inbounds i64, i64* %129, i64 -1 store atomic i64 140420371121824, i64* %130 unordered, align 8 %131 = bitcast {}* %128 to {}** store {}* %126, {}** %131, align 8 call void @ijl_throw({}* %128) unreachable L183: ; preds = %L142 %132 = call [1 x {}*] @j_DimensionMismatch_5519({}* inttoptr (i64 140420371138848 to {}*)) #0 %133 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 %134 = extractvalue [1 x {}*] %132, 0 store {}* %134, {}** %133, align 16 %135 = bitcast {}*** %ptls_field104 to i8** %ptls_load328339340 = load i8*, i8** %135, align 8 %136 = call noalias nonnull {}* @ijl_gc_pool_alloc(i8* %ptls_load328339340, i32 1392, i32 16) #7 %137 = bitcast {}* %136 to i64* %138 = getelementptr inbounds i64, i64* %137, i64 -1 store atomic i64 140420371121824, i64* %138 unordered, align 8 %139 = bitcast {}* %136 to {}** store {}* %134, {}** %139, align 8 call void @ijl_throw({}* %136) unreachable L189: ; preds = %L171 %140 = icmp sgt i64 %109, 0 %141 = select i1 %140, i64 %109, i64 0 %.not109 = icmp ne i64 %141, %111 %142 = icmp sgt i64 %113, 0 %143 = select i1 %142, i64 %113, i64 0 %144 = icmp ne i64 %143, %115 %value_phi15 = select i1 %.not109, i1 true, i1 %144 br i1 %value_phi15, label %L384, label %L211 L211: ; preds = %L189 %145 = bitcast {}* %61 to i8** %146 = load i8*, i8** %145, align 8 %147 = bitcast {}* %0 to i8** %148 = load i8*, i8** %147, align 8 %.not110.not = icmp eq i8* %146, %148 br i1 %.not110.not, label %L219, label %L224 L219: ; preds = %L211 %149 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %61, {}** %149, align 16 %150 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %0) %.phi.trans.insert = bitcast {}* %150 to {}** %.phi.trans.insert174 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 3 %.phi.trans.insert175 = bitcast {}** %.phi.trans.insert174 to i64* %.pre = load i64, i64* %.phi.trans.insert175, align 8 %.phi.trans.insert176 = getelementptr inbounds {}*, {}** %.phi.trans.insert, i64 4 %.phi.trans.insert177 = bitcast {}** %.phi.trans.insert176 to i64* %.pre178 = load i64, i64* %.phi.trans.insert177, align 8 br label %L224 L224: ; preds = %L219, %L211 %151 = phi i64 [ %.pre178, %L219 ], [ %35, %L211 ] %152 = phi i64 [ %.pre, %L219 ], [ %23, %L211 ] %value_phi16 = phi {}* [ %150, %L219 ], [ %0, %L211 ] %.not113 = icmp eq i64 %151, 1 %.not112 = icmp eq i64 %152, 1 br i1 %114, label %L253.preheader, label %L400 L253.preheader: ; preds = %L224 %.not111131.not = icmp eq i64 %111, 0 %153 = bitcast {}* %value_phi16 to i8** %154 = bitcast {}* %61 to i8** br i1 %110, label %L259.preheader.us.preheader, label %L400 L259.preheader.us.preheader: ; preds = %L253.preheader %155 = add nuw nsw i64 %85, 1 %156 = mul i64 %19, %155 %157 = add i64 %111, %156 br label %L259.preheader.us L259.preheader.us: ; preds = %L362.us, %L259.preheader.us.preheader %indvar = phi i64 [ 0, %L259.preheader.us.preheader ], [ %indvar.next, %L362.us ] %value_phi21.us = phi i64 [ 1, %L259.preheader.us.preheader ], [ %207, %L362.us ] %158 = mul i64 %85, %indvar %159 = add i64 %156, %158 %160 = add i64 %157, %158 br i1 %.not111131.not, label %L362.us, label %L262.lr.ph.us L262.lr.ph.us: ; preds = %L259.preheader.us %value_phi21.op.us = add nsw i64 %value_phi21.us, -1 %161 = select i1 %.not113, i64 0, i64 %value_phi21.op.us %162 = mul i64 %152, %161 %163 = load i8*, i8** %153, align 8 %164 = add i64 %value_phi21.op.us, %19 %165 = mul i64 %85, %164 %166 = load i8*, i8** %154, align 8 br i1 %.not112, label %iter.check, label %iter.check233 iter.check233: ; preds = %L262.lr.ph.us %min.iters.check231 = icmp ult i64 %111, 16 br i1 %min.iters.check231, label %vec.epilog.scalar.ph246, label %vector.memcheck220 vector.memcheck220: ; preds = %iter.check233 %scevgep221 = getelementptr i8, i8* %166, i64 %159 %scevgep222 = getelementptr i8, i8* %166, i64 %160 %scevgep223 = getelementptr i8, i8* %163, i64 %162 %scevgep224 = getelementptr i8, i8* %163, i64 %111 %scevgep225 = getelementptr i8, i8* %scevgep224, i64 %162 %bound0226 = icmp ult i8* %scevgep221, %scevgep225 %bound1227 = icmp ult i8* %scevgep223, %scevgep222 %found.conflict228 = and i1 %bound0226, %bound1227 br i1 %found.conflict228, label %vec.epilog.scalar.ph246, label %vector.main.loop.iter.check235 vector.main.loop.iter.check235: ; preds = %vector.memcheck220 %min.iters.check234 = icmp ult i64 %111, 128 br i1 %min.iters.check234, label %vec.epilog.ph249, label %vector.ph236 vector.ph236: ; preds = %vector.main.loop.iter.check235 %n.vec238 = and i64 %111, -128 br label %vector.body230 vector.body230: ; preds = %vector.body230, %vector.ph236 %index240 = phi i64 [ 0, %vector.ph236 ], [ %index.next244, %vector.body230 ] %167 = add i64 %162, %index240 %168 = getelementptr inbounds i8, i8* %163, i64 %167 %169 = bitcast i8* %168 to <32 x i8>* %wide.load = load <32 x i8>, <32 x i8>* %169, align 1 %170 = getelementptr inbounds i8, i8* %168, i64 32 %171 = bitcast i8* %170 to <32 x i8>* %wide.load241 = load <32 x i8>, <32 x i8>* %171, align 1 %172 = getelementptr inbounds i8, i8* %168, i64 64 %173 = bitcast i8* %172 to <32 x i8>* %wide.load242 = load <32 x i8>, <32 x i8>* %173, align 1 %174 = getelementptr inbounds i8, i8* %168, i64 96 %175 = bitcast i8* %174 to <32 x i8>* %wide.load243 = load <32 x i8>, <32 x i8>* %175, align 1 %176 = add i64 %index240, %19 %177 = add i64 %176, %165 %178 = getelementptr inbounds i8, i8* %166, i64 %177 %179 = lshr <32 x i8> %wide.load, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %180 = lshr <32 x i8> %wide.load241, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %181 = lshr <32 x i8> %wide.load242, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %182 = lshr <32 x i8> %wide.load243, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %183 = bitcast i8* %178 to <32 x i8>* store <32 x i8> %179, <32 x i8>* %183, align 1 %184 = getelementptr inbounds i8, i8* %178, i64 32 %185 = bitcast i8* %184 to <32 x i8>* store <32 x i8> %180, <32 x i8>* %185, align 1 %186 = getelementptr inbounds i8, i8* %178, i64 64 %187 = bitcast i8* %186 to <32 x i8>* store <32 x i8> %181, <32 x i8>* %187, align 1 %188 = getelementptr inbounds i8, i8* %178, i64 96 %189 = bitcast i8* %188 to <32 x i8>* store <32 x i8> %182, <32 x i8>* %189, align 1 %index.next244 = add nuw i64 %index240, 128 %190 = icmp eq i64 %index.next244, %n.vec238 br i1 %190, label %middle.block229, label %vector.body230 middle.block229: ; preds = %vector.body230 %cmp.n239 = icmp eq i64 %111, %n.vec238 br i1 %cmp.n239, label %L362.us, label %vec.epilog.iter.check248 vec.epilog.iter.check248: ; preds = %middle.block229 %n.vec.remaining250 = and i64 %111, 112 %min.epilog.iters.check251 = icmp eq i64 %n.vec.remaining250, 0 br i1 %min.epilog.iters.check251, label %vec.epilog.scalar.ph246, label %vec.epilog.ph249 vec.epilog.ph249: ; preds = %vec.epilog.iter.check248, %vector.main.loop.iter.check235 %vec.epilog.resume.val252 = phi i64 [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.main.loop.iter.check235 ] %n.vec254 = and i64 %111, -16 br label %vec.epilog.vector.body247 vec.epilog.vector.body247: ; preds = %vec.epilog.vector.body247, %vec.epilog.ph249 %index257 = phi i64 [ %vec.epilog.resume.val252, %vec.epilog.ph249 ], [ %index.next259, %vec.epilog.vector.body247 ] %191 = add i64 %162, %index257 %192 = getelementptr inbounds i8, i8* %163, i64 %191 %193 = bitcast i8* %192 to <16 x i8>* %wide.load258 = load <16 x i8>, <16 x i8>* %193, align 1 %194 = add i64 %index257, %19 %195 = add i64 %194, %165 %196 = getelementptr inbounds i8, i8* %166, i64 %195 %197 = lshr <16 x i8> %wide.load258, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> %198 = bitcast i8* %196 to <16 x i8>* store <16 x i8> %197, <16 x i8>* %198, align 1 %index.next259 = add nuw i64 %index257, 16 %199 = icmp eq i64 %index.next259, %n.vec254 br i1 %199, label %vec.epilog.middle.block245, label %vec.epilog.vector.body247 vec.epilog.middle.block245: ; preds = %vec.epilog.vector.body247 %cmp.n256 = icmp eq i64 %111, %n.vec254 br i1 %cmp.n256, label %L362.us, label %vec.epilog.scalar.ph246 vec.epilog.scalar.ph246: ; preds = %vec.epilog.middle.block245, %vec.epilog.iter.check248, %vector.memcheck220, %iter.check233 %bc.resume.val255 = phi i64 [ %n.vec254, %vec.epilog.middle.block245 ], [ %n.vec238, %vec.epilog.iter.check248 ], [ 0, %vector.memcheck220 ], [ 0, %iter.check233 ] br label %L262.us159 L262.us159: ; preds = %L262.us159, %vec.epilog.scalar.ph246 %value_phi24132.us160 = phi i64 [ %206, %L262.us159 ], [ %bc.resume.val255, %vec.epilog.scalar.ph246 ] %200 = add i64 %162, %value_phi24132.us160 %201 = getelementptr inbounds i8, i8* %163, i64 %200 %202 = load i8, i8* %201, align 1 %203 = add i64 %value_phi24132.us160, %19 %204 = add i64 %203, %165 %205 = getelementptr inbounds i8, i8* %166, i64 %204 %.lobit.us161 = lshr i8 %202, 7 store i8 %.lobit.us161, i8* %205, align 1 %206 = add nuw nsw i64 %value_phi24132.us160, 1 %exitcond171.not = icmp eq i64 %206, %111 br i1 %exitcond171.not, label %L362.us, label %L262.us159 L362.us: ; preds = %vec.epilog.middle.block, %middle.block, %L262.us.us, %L262.us159, %vec.epilog.middle.block245, %middle.block229, %L259.preheader.us %207 = add nuw i64 %value_phi21.us, 1 %208 = icmp ult i64 %value_phi21.us, 9223372036854775807 %209 = icmp sle i64 %207, %115 %210 = icmp ne i64 %value_phi21.us, %115 %not..us = and i1 %208, %209 %narrow.us = and i1 %210, %not..us %indvar.next = add i64 %indvar, 1 br i1 %narrow.us, label %L259.preheader.us, label %L400 L262.us.us: ; preds = %vec.epilog.scalar.ph, %L262.us.us %value_phi24132.us.us = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %215, %L262.us.us ] %211 = load i8, i8* %216, align 1 %212 = add i64 %value_phi24132.us.us, %19 %213 = add i64 %212, %165 %214 = getelementptr inbounds i8, i8* %166, i64 %213 %.lobit.us.us = lshr i8 %211, 7 store i8 %.lobit.us.us, i8* %214, align 1 %215 = add nuw nsw i64 %value_phi24132.us.us, 1 %exitcond172.not = icmp eq i64 %215, %111 br i1 %exitcond172.not, label %L362.us, label %L262.us.us iter.check: ; preds = %L262.lr.ph.us %216 = getelementptr inbounds i8, i8* %163, i64 %162 %min.iters.check = icmp ult i64 %111, 16 br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.memcheck vector.memcheck: ; preds = %iter.check %scevgep = getelementptr i8, i8* %166, i64 %159 %scevgep203 = getelementptr i8, i8* %166, i64 %160 %scevgep204 = getelementptr i8, i8* %163, i64 1 %scevgep205 = getelementptr i8, i8* %scevgep204, i64 %162 %bound0 = icmp ult i8* %scevgep, %scevgep205 %bound1 = icmp ult i8* %216, %scevgep203 %found.conflict = and i1 %bound0, %bound1 br i1 %found.conflict, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check vector.main.loop.iter.check: ; preds = %vector.memcheck %min.iters.check206 = icmp ult i64 %111, 128 br i1 %min.iters.check206, label %vec.epilog.ph, label %vector.ph vector.ph: ; preds = %vector.main.loop.iter.check %n.vec = and i64 %111, -128 %.pre330 = load i8, i8* %216, align 1 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] %broadcast.splatinsert = insertelement <32 x i8> poison, i8 %.pre330, i64 0 %217 = add i64 %index, %19 %218 = add i64 %217, %165 %219 = getelementptr inbounds i8, i8* %166, i64 %218 %220 = lshr <32 x i8> %broadcast.splatinsert, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0> %221 = shufflevector <32 x i8> %220, <32 x i8> poison, <32 x i32> zeroinitializer %222 = bitcast i8* %219 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %222, align 1 %223 = getelementptr inbounds i8, i8* %219, i64 32 %224 = bitcast i8* %223 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %224, align 1 %225 = getelementptr inbounds i8, i8* %219, i64 64 %226 = bitcast i8* %225 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %226, align 1 %227 = getelementptr inbounds i8, i8* %219, i64 96 %228 = bitcast i8* %227 to <32 x i8>* store <32 x i8> %221, <32 x i8>* %228, align 1 %index.next = add nuw i64 %index, 128 %229 = icmp eq i64 %index.next, %n.vec br i1 %229, label %middle.block, label %vector.body middle.block: ; preds = %vector.body %cmp.n = icmp eq i64 %111, %n.vec br i1 %cmp.n, label %L362.us, label %vec.epilog.iter.check vec.epilog.iter.check: ; preds = %middle.block %n.vec.remaining = and i64 %111, 112 %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0 br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph vec.epilog.ph: ; preds = %vec.epilog.iter.check, %vector.main.loop.iter.check %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ] %n.vec214 = and i64 %111, -16 br label %vec.epilog.vector.body vec.epilog.vector.body: ; preds = %vec.epilog.vector.body, %vec.epilog.ph %index216 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next219, %vec.epilog.vector.body ] %230 = load i8, i8* %216, align 1 %broadcast.splatinsert217 = insertelement <16 x i8> poison, i8 %230, i64 0 %231 = add i64 %index216, %19 %232 = add i64 %231, %165 %233 = getelementptr inbounds i8, i8* %166, i64 %232 %234 = lshr <16 x i8> %broadcast.splatinsert217, <i8 7, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0> %235 = shufflevector <16 x i8> %234, <16 x i8> poison, <16 x i32> zeroinitializer %236 = bitcast i8* %233 to <16 x i8>* store <16 x i8> %235, <16 x i8>* %236, align 1 %index.next219 = add nuw i64 %index216, 16 %237 = icmp eq i64 %index.next219, %n.vec214 br i1 %237, label %vec.epilog.middle.block, label %vec.epilog.vector.body vec.epilog.middle.block: ; preds = %vec.epilog.vector.body %cmp.n215 = icmp eq i64 %111, %n.vec214 br i1 %cmp.n215, label %L362.us, label %vec.epilog.scalar.ph vec.epilog.scalar.ph: ; preds = %vec.epilog.middle.block, %vec.epilog.iter.check, %vector.memcheck, %iter.check %bc.resume.val = phi i64 [ %n.vec214, %vec.epilog.middle.block ], [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.memcheck ], [ 0, %iter.check ] br label %L262.us.us L384: ; preds = %L189 %238 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %10, i64 0, i64 0, i64 0 store i64 %141, i64* %238, align 8 %239 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %10, i64 0, i64 1, i64 0 store i64 %143, i64* %239, align 8 call void @j_throwdm_5518([2 x [1 x i64]]* nocapture readonly %10, [2 x [1 x i64]]* nocapture readonly %7) #8 unreachable L400: ; preds = %L362.us, %L253.preheader, %L224 %240 = icmp ne i64 %39, -9223372036854775808 %241 = icmp ne i64 %1, -1 %242 = or i1 %241, %240 %243 = icmp ne i64 %1, 0 %244 = and i1 %243, %242 br i1 %244, label %pass, label %fail L434: ; preds = %pass37 %245 = bitcast {}* %316 to i8** %246 = load i8*, i8** %245, align 8 %247 = bitcast {}* %305 to i8** %248 = load i8*, i8** %247, align 8 %.not115.not = icmp eq i8* %246, %248 br i1 %.not115.not, label %L442, label %L447 L442: ; preds = %L434 store {}* %316, {}** %303, align 16 %249 = call nonnull {}* inttoptr (i64 140420661547792 to {}* ({}*)*)({}* nonnull %305) %.phi.trans.insert179 = bitcast {}* %249 to {}** %.phi.trans.insert181 = getelementptr inbounds {}*, {}** %.phi.trans.insert179, i64 3 %.phi.trans.insert182 = bitcast {}** %.phi.trans.insert181 to i64* %.pre183 = load i64, i64* %.phi.trans.insert182, align 8 %.phi.trans.insert184 = getelementptr inbounds {}*, {}** %.phi.trans.insert179, i64 4 %.phi.trans.insert185 = bitcast {}** %.phi.trans.insert184 to i64* %.pre186 = load i64, i64* %.phi.trans.insert185, align 8 br label %L447 L447: ; preds = %L442, %L434 %250 = phi i64 [ %.pre186, %L442 ], [ %312, %L434 ] %251 = phi i64 [ %.pre183, %L442 ], [ %309, %L434 ] %value_phi39 = phi {}* [ %249, %L442 ], [ %305, %L434 ] %.not120 = icmp eq i64 %250, 1 %.not119 = icmp eq i64 %251, 1 %.not116.not.not = icmp eq i64 %312, 0 %.not117 = icmp eq i64 %309, 0 %or.cond351 = select i1 %.not116.not.not, i1 true, i1 %.not117 br i1 %or.cond351, label %L564, label %L480.preheader.L489.lr.ph.us141_crit_edge L480.preheader.L489.lr.ph.us141_crit_edge: ; preds = %L447 %252 = bitcast {}* %316 to half** %253 = bitcast {}* %value_phi39 to double** %.pre331 = load double*, double** %253, align 8 %.pre332 = load half*, half** %252, align 8 br label %L489.lr.ph.us141 L489.lr.ph.us141: ; preds = %L528.us148, %L480.preheader.L489.lr.ph.us141_crit_edge %indvar261 = phi i64 [ %indvar.next262, %L528.us148 ], [ 0, %L480.preheader.L489.lr.ph.us141_crit_edge ] %value_phi44.us139 = phi i64 [ %278, %L528.us148 ], [ 1, %L480.preheader.L489.lr.ph.us141_crit_edge ] %254 = mul i64 %309, %indvar261 %255 = add i64 %309, %254 %value_phi44.op.us142 = add nsw i64 %value_phi44.us139, -1 %256 = select i1 %.not120, i64 0, i64 %value_phi44.op.us142 %257 = mul i64 %251, %256 %258 = mul i64 %309, %value_phi44.op.us142 br i1 %.not119, label %L489.lr.ph.split.us.us156, label %L489.us143.preheader L489.us143.preheader: ; preds = %L489.lr.ph.us141 %min.iters.check303 = icmp ult i64 %309, 4 br i1 %min.iters.check303, label %scalar.ph301, label %vector.memcheck287 vector.memcheck287: ; preds = %L489.us143.preheader %scevgep288 = getelementptr half, half* %.pre332, i64 %254 %scevgep290 = getelementptr half, half* %.pre332, i64 %255 %scevgep292 = getelementptr double, double* %.pre331, i64 %257 %scevgep294 = getelementptr double, double* %.pre331, i64 %309 %scevgep295 = getelementptr double, double* %scevgep294, i64 %257 %259 = bitcast double* %scevgep295 to half* %bound0297 = icmp ult half* %scevgep288, %259 %260 = bitcast half* %scevgep290 to double* %bound1298 = icmp ult double* %scevgep292, %260 %found.conflict299 = and i1 %bound0297, %bound1298 br i1 %found.conflict299, label %scalar.ph301, label %vector.ph304 vector.ph304: ; preds = %vector.memcheck287 %n.vec306 = and i64 %309, 9223372036854775804 %broadcast.splatinsert311 = insertelement <4 x double> poison, double %27, i64 0 %broadcast.splat312 = shufflevector <4 x double> %broadcast.splatinsert311, <4 x double> poison, <4 x i32> zeroinitializer br label %vector.body302 vector.body302: ; preds = %vector.body302, %vector.ph304 %index309 = phi i64 [ 0, %vector.ph304 ], [ %index.next313, %vector.body302 ] %261 = add i64 %257, %index309 %262 = getelementptr inbounds double, double* %.pre331, i64 %261 %263 = bitcast double* %262 to <4 x double>* %wide.load310 = load <4 x double>, <4 x double>* %263, align 8 %264 = fdiv <4 x double> %wide.load310, %broadcast.splat312 %265 = fptrunc <4 x double> %264 to <4 x half> %266 = add i64 %258, %index309 %267 = getelementptr inbounds half, half* %.pre332, i64 %266 %268 = bitcast half* %267 to <4 x half>* store <4 x half> %265, <4 x half>* %268, align 2 %index.next313 = add nuw i64 %index309, 4 %269 = icmp eq i64 %index.next313, %n.vec306 br i1 %269, label %middle.block300, label %vector.body302 middle.block300: ; preds = %vector.body302 %cmp.n308 = icmp eq i64 %309, %n.vec306 br i1 %cmp.n308, label %L528.us148, label %scalar.ph301 scalar.ph301: ; preds = %middle.block300, %vector.memcheck287, %L489.us143.preheader %bc.resume.val307 = phi i64 [ %n.vec306, %middle.block300 ], [ 0, %L489.us143.preheader ], [ 0, %vector.memcheck287 ] br label %L489.us143 L489.us143: ; preds = %L489.us143, %scalar.ph301 %value_phi47130.us144 = phi i64 [ %277, %L489.us143 ], [ %bc.resume.val307, %scalar.ph301 ] %270 = add i64 %257, %value_phi47130.us144 %271 = getelementptr inbounds double, double* %.pre331, i64 %270 %272 = load double, double* %271, align 8 %273 = fdiv double %272, %27 %274 = fptrunc double %273 to half %275 = add i64 %258, %value_phi47130.us144 %276 = getelementptr inbounds half, half* %.pre332, i64 %275 store half %274, half* %276, align 2 %277 = add nuw nsw i64 %value_phi47130.us144, 1 %exitcond167.not = icmp eq i64 %277, %309 br i1 %exitcond167.not, label %L528.us148, label %L489.us143 L528.us148: ; preds = %middle.block273, %L489.us.us153, %L489.us143, %middle.block300 %278 = add nuw nsw i64 %value_phi44.us139, 1 %exitcond170.not = icmp eq i64 %value_phi44.us139, %312 %indvar.next262 = add i64 %indvar261, 1 br i1 %exitcond170.not, label %L564, label %L489.lr.ph.us141 L489.us.us153: ; preds = %scalar.ph, %L489.us.us153 %value_phi47130.us.us154 = phi i64 [ %bc.resume.val279, %scalar.ph ], [ %284, %L489.us.us153 ] %279 = load double, double* %285, align 8 %280 = fdiv double %279, %27 %281 = fptrunc double %280 to half %282 = add i64 %258, %value_phi47130.us.us154 %283 = getelementptr inbounds half, half* %.pre332, i64 %282 store half %281, half* %283, align 2 %284 = add nuw nsw i64 %value_phi47130.us.us154, 1 %exitcond168.not = icmp eq i64 %284, %309 br i1 %exitcond168.not, label %L528.us148, label %L489.us.us153 L489.lr.ph.split.us.us156: ; preds = %L489.lr.ph.us141 %285 = getelementptr inbounds double, double* %.pre331, i64 %257 %min.iters.check275 = icmp ult i64 %309, 4 br i1 %min.iters.check275, label %scalar.ph, label %vector.memcheck260 vector.memcheck260: ; preds = %L489.lr.ph.split.us.us156 %scevgep263 = getelementptr half, half* %.pre332, i64 %254 %scevgep265 = getelementptr half, half* %.pre332, i64 %255 %scevgep267 = getelementptr double, double* %.pre331, i64 1 %scevgep268 = getelementptr double, double* %scevgep267, i64 %257 %286 = bitcast double* %scevgep268 to half* %bound0270 = icmp ult half* %scevgep263, %286 %287 = bitcast half* %scevgep265 to double* %bound1271 = icmp ult double* %285, %287 %found.conflict272 = and i1 %bound0270, %bound1271 br i1 %found.conflict272, label %scalar.ph, label %vector.ph276 vector.ph276: ; preds = %vector.memcheck260 %n.vec278 = and i64 %309, 9223372036854775804 %broadcast.splatinsert284 = insertelement <4 x double> poison, double %27, i64 0 %.pre333 = load double, double* %285, align 8 br label %vector.body274 vector.body274: ; preds = %vector.body274, %vector.ph276 %index281 = phi i64 [ 0, %vector.ph276 ], [ %index.next286, %vector.body274 ] %broadcast.splatinsert282 = insertelement <4 x double> poison, double %.pre333, i64 0 %288 = fdiv <4 x double> %broadcast.splatinsert282, %broadcast.splatinsert284 %289 = shufflevector <4 x double> %288, <4 x double> poison, <4 x i32> zeroinitializer %290 = fptrunc <4 x double> %289 to <4 x half> %291 = add i64 %258, %index281 %292 = getelementptr inbounds half, half* %.pre332, i64 %291 %293 = bitcast half* %292 to <4 x half>* store <4 x half> %290, <4 x half>* %293, align 2 %index.next286 = add nuw i64 %index281, 4 %294 = icmp eq i64 %index.next286, %n.vec278 br i1 %294, label %middle.block273, label %vector.body274 middle.block273: ; preds = %vector.body274 %cmp.n280 = icmp eq i64 %309, %n.vec278 br i1 %cmp.n280, label %L528.us148, label %scalar.ph scalar.ph: ; preds = %middle.block273, %vector.memcheck260, %L489.lr.ph.split.us.us156 %bc.resume.val279 = phi i64 [ %n.vec278, %middle.block273 ], [ 0, %L489.lr.ph.split.us.us156 ], [ 0, %vector.memcheck260 ] br label %L489.us.us153 L550: ; preds = %pass37 %295 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %9, i64 0, i64 0, i64 0 store i64 %320, i64* %295, align 8 %296 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %9, i64 0, i64 1, i64 0 store i64 %323, i64* %296, align 8 call void @j_throwdm_5518([2 x [1 x i64]]* nocapture readonly %9, [2 x [1 x i64]]* nocapture readonly %8) #8 unreachable L564: ; preds = %L528.us148, %L447 %297 = load {}*, {}** %12, align 8 %298 = bitcast {}*** %pgcstack to {}** store {}* %297, {}** %298, align 8 ret {}* %316 fail: ; preds = %L400 call void @ijl_throw({}* inttoptr (i64 140420402974672 to {}*)) unreachable pass: ; preds = %L400 %299 = icmp ne i64 %60, -9223372036854775808 %300 = or i1 %241, %299 br i1 %300, label %pass37, label %fail36 fail36: ; preds = %pass call void @ijl_throw({}* inttoptr (i64 140420402974672 to {}*)) unreachable pass37: ; preds = %pass %301 = sdiv i64 %39, %1 %302 = sdiv i64 %60, %1 %303 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 8 store {}* %61, {}** %303, align 16 %304 = call nonnull {}* @j_sdf_5515({}* nonnull %61) #0 store {}* %304, {}** %303, align 16 %305 = call nonnull {}* @j_downsample_5516({}* nonnull %304, i64 signext %302, i64 signext %301) #0 %306 = bitcast {}* %305 to {}** %307 = getelementptr inbounds {}*, {}** %306, i64 3 %308 = bitcast {}** %307 to i64* %309 = load i64, i64* %308, align 8 %310 = getelementptr inbounds {}*, {}** %306, i64 4 %311 = bitcast {}** %310 to i64* %312 = load i64, i64* %311, align 8 %313 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %8, i64 0, i64 1, i64 0 store i64 %312, i64* %313, align 8 %314 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]]* %8, i64 0, i64 0, i64 0 store i64 %309, i64* %314, align 8 %315 = getelementptr inbounds [10 x {}*], [10 x {}*]* %gcframe334, i64 0, i64 9 store {}* %305, {}** %315, align 8 %316 = call nonnull {}* inttoptr (i64 140420661534736 to {}* ({}*, i64, i64)*)({}* inttoptr (i64 140420507365008 to {}*), i64 %309, i64 %312) %317 = bitcast {}* %316 to {}** %318 = getelementptr inbounds {}*, {}** %317, i64 3 %319 = bitcast {}** %318 to i64* %320 = load i64, i64* %319, align 8 %.not114 = icmp eq i64 %320, %309 %321 = getelementptr inbounds {}*, {}** %317, i64 4 %322 = bitcast {}** %321 to i64* %323 = load i64, i64* %322, align 8 %.not198 = icmp eq i64 %323, %312 %or.cond = select i1 %.not114, i1 %.not198, i1 false br i1 %or.cond, label %L434, label %L550 }
비교하기