Diff
checker
Testo
Testo
Immagini
Documenti
Excel
Cartelle
Legal
Enterprise
Applicazione per desktop
Prezzi
Accedi
Scarica Diffchecker Desktop
Confronta il testo
Trova la differenza tra due file di testo
Strumenti
Cronologia
Editor live
Nascondi spazi bianchi
Comprimi invariate
Senza a capo
Layout
Diviso
Unificato
Livello di dettaglio
Intelligente
Parola
Carattere
Stili testo
Modifica aspetto
Evidenziazione sintassi
Scegli sintassi
Ignora
Trasforma testo
Vai alla prima modifica
Modifica input
Diffchecker Desktop
Il modo più sicuro per usare Diffchecker. Ottieni l'app Diffchecker Desktop: i tuoi diff non lasciano mai il tuo computer!
Ottieni Desktop
julia-pkg-images-vs-makie
Creato
4 anni fa
Il diff non scade mai
Eliminare
Esporta
Condividere
Spiegare
6 rimozioni
Linee
Totale
Rimosso
Caratteri
Totale
Rimosso
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
495 linee
Copia tutti
6 aggiunte
Linee
Totale
Aggiunto
Caratteri
Totale
Aggiunto
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
495 linee
Copia tutti
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
%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
Copia
Copiato
Copia
Copiato
%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
Diff salvati
Testo originale
Apri file
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 }
Testo modificato
Apri file
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 }
Trovare la differenza