; ModuleID = '../../third_party/libyuv/source/row_common.cc' source_filename = "../../third_party/libyuv/source/row_common.cc" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %"struct.libyuv::YuvConstants" = type { [32 x i8], [32 x i8], [32 x i8], [16 x i16], [16 x i16] } @kYuvI601Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00", [32 x i8] c"\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194", [32 x i8] c"\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f", [16 x i16] [i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997], [16 x i16] [i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160] }, align 32 @kYvuI601Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00", [32 x i8] c"4\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\19", [32 x i8] c"\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80", [16 x i16] [i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997], [16 x i16] [i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160] }, align 32 @kYuvJPEGConstants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00", [32 x i8] c"\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.", [32 x i8] c"\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z", [16 x i16] [i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320], [16 x i16] [i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32] }, align 32 @kYvuJPEGConstants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00Z\00", [32 x i8] c".\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16.\16", [32 x i8] c"\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q\00q", [16 x i16] [i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320], [16 x i16] [i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32] }, align 32 @kYuvH709Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00", [32 x i8] c"\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22", [32 x i8] c"\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s", [16 x i16] [i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997], [16 x i16] [i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160] }, align 32 @kYvuH709Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00s\00", [32 x i8] c"\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E\22\0E", [32 x i8] c"\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80", [16 x i16] [i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997, i16 18997], [16 x i16] [i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160] }, align 32 @kYuvF709Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00", [32 x i8] c"\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E", [32 x i8] c"\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e", [16 x i16] [i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320], [16 x i16] [i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32] }, align 32 @kYvuF709Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00e\00", [32 x i8] c"\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C\1E\0C", [32 x i8] c"\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w\00w", [16 x i16] [i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320], [16 x i16] [i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32] }, align 32 @kYuv2020Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00", [32 x i8] c"\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*", [32 x i8] c"\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k", [16 x i16] [i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003], [16 x i16] [i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160] }, align 32 @kYvu2020Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00k\00", [32 x i8] c"*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C*\0C", [32 x i8] c"\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80\00\80", [16 x i16] [i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003, i16 19003], [16 x i16] [i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160, i16 -1160] }, align 32 @kYuvV2020Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00", [32 x i8] c"\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%", [32 x i8] c"\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^", [16 x i16] [i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320], [16 x i16] [i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32] }, align 32 @kYvuV2020Constants = hidden constant %"struct.libyuv::YuvConstants" { [32 x i8] c"^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00^\00", [32 x i8] c"%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B%\0B", [32 x i8] c"\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x", [16 x i16] [i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320, i16 16320], [16 x i16] [i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32, i16 32] }, align 32 @fixed_invtbl8 = hidden constant [256 x i32] [i32 16777216, i32 16842751, i32 16809984, i32 16799061, i32 16793600, i32 16790323, i32 16788138, i32 16786578, i32 16785408, i32 16784497, i32 16783769, i32 16783173, i32 16782677, i32 16782257, i32 16781897, i32 16781585, i32 16781312, i32 16781071, i32 16780856, i32 16780665, i32 16780492, i32 16780336, i32 16780194, i32 16780065, i32 16779946, i32 16779837, i32 16779736, i32 16779643, i32 16779556, i32 16779475, i32 16779400, i32 16779330, i32 16779264, i32 16779201, i32 16779143, i32 16779088, i32 16779036, i32 16778987, i32 16778940, i32 16778896, i32 16778854, i32 16778814, i32 16778776, i32 16778740, i32 16778705, i32 16778672, i32 16778640, i32 16778610, i32 16778581, i32 16778553, i32 16778526, i32 16778501, i32 16778476, i32 16778452, i32 16778429, i32 16778407, i32 16778386, i32 16778365, i32 16778345, i32 16778326, i32 16778308, i32 16778290, i32 16778273, i32 16778256, i32 16778240, i32 16778224, i32 16778208, i32 16778194, i32 16778179, i32 16778165, i32 16778152, i32 16778139, i32 16778126, i32 16778113, i32 16778101, i32 16778089, i32 16778078, i32 16778067, i32 16778056, i32 16778045, i32 16778035, i32 16778025, i32 16778015, i32 16778005, i32 16777996, i32 16777987, i32 16777978, i32 16777969, i32 16777960, i32 16777952, i32 16777944, i32 16777936, i32 16777928, i32 16777920, i32 16777913, i32 16777905, i32 16777898, i32 16777891, i32 16777884, i32 16777877, i32 16777871, i32 16777864, i32 16777858, i32 16777852, i32 16777846, i32 16777840, i32 16777834, i32 16777828, i32 16777822, i32 16777817, i32 16777811, i32 16777806, i32 16777801, i32 16777795, i32 16777790, i32 16777785, i32 16777780, i32 16777776, i32 16777771, i32 16777766, i32 16777762, i32 16777757, i32 16777753, i32 16777748, i32 16777744, i32 16777740, i32 16777736, i32 16777732, i32 16777728, i32 16777724, i32 16777720, i32 16777716, i32 16777712, i32 16777708, i32 16777705, i32 16777701, i32 16777697, i32 16777694, i32 16777690, i32 16777687, i32 16777684, i32 16777680, i32 16777677, i32 16777674, i32 16777671, i32 16777667, i32 16777664, i32 16777661, i32 16777658, i32 16777655, i32 16777652, i32 16777650, i32 16777647, i32 16777644, i32 16777641, i32 16777638, i32 16777636, i32 16777633, i32 16777630, i32 16777628, i32 16777625, i32 16777623, i32 16777620, i32 16777618, i32 16777615, i32 16777613, i32 16777610, i32 16777608, i32 16777606, i32 16777603, i32 16777601, i32 16777599, i32 16777597, i32 16777594, i32 16777592, i32 16777590, i32 16777588, i32 16777586, i32 16777584, i32 16777582, i32 16777580, i32 16777578, i32 16777576, i32 16777574, i32 16777572, i32 16777570, i32 16777568, i32 16777566, i32 16777564, i32 16777562, i32 16777560, i32 16777559, i32 16777557, i32 16777555, i32 16777553, i32 16777552, i32 16777550, i32 16777548, i32 16777546, i32 16777545, i32 16777543, i32 16777542, i32 16777540, i32 16777538, i32 16777537, i32 16777535, i32 16777534, i32 16777532, i32 16777531, i32 16777529, i32 16777528, i32 16777526, i32 16777525, i32 16777523, i32 16777522, i32 16777520, i32 16777519, i32 16777518, i32 16777516, i32 16777515, i32 16777513, i32 16777512, i32 16777511, i32 16777509, i32 16777508, i32 16777507, i32 16777505, i32 16777504, i32 16777503, i32 16777502, i32 16777500, i32 16777499, i32 16777498, i32 16777497, i32 16777496, i32 16777494, i32 16777493, i32 16777492, i32 16777491, i32 16777490, i32 16777489, i32 16777487, i32 16777486, i32 16777485, i32 16777484, i32 16777483, i32 16777482, i32 16777481, i32 16777480, i32 16777479, i32 16777478, i32 16777477, i32 16777476, i32 16777475, i32 16777474, i32 16777472], align 16 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToARGBRow_C(ptr noundef %src_rgb24, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_rgb24.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_rgb24, ptr %src_rgb24.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_rgb24.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_rgb24.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_rgb24.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %r, align 1 %8 = load i8, ptr %b, align 1 %9 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 0 store i8 %8, ptr %arrayidx3, align 1 %10 = load i8, ptr %g, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 1 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %r, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 -1, ptr %arrayidx6, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %16 = load ptr, ptr %src_rgb24.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %16, i64 3 store ptr %add.ptr7, ptr %src_rgb24.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !5 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToARGBRow_C(ptr noundef %src_raw, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_raw.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %r = alloca i8, align 1 %g = alloca i8, align 1 %b = alloca i8, align 1 store ptr %src_raw, ptr %src_raw.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %2 = load ptr, ptr %src_raw.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_raw.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %6 = load ptr, ptr %src_raw.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %b, align 1 %8 = load i8, ptr %b, align 1 %9 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 0 store i8 %8, ptr %arrayidx3, align 1 %10 = load i8, ptr %g, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 1 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %r, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 -1, ptr %arrayidx6, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %16 = load ptr, ptr %src_raw.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %16, i64 3 store ptr %add.ptr7, ptr %src_raw.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !7 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToRGBARow_C(ptr noundef %src_raw, ptr noundef %dst_rgba, i32 noundef %width) #0 { entry: %src_raw.addr = alloca ptr, align 8 %dst_rgba.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %r = alloca i8, align 1 %g = alloca i8, align 1 %b = alloca i8, align 1 store ptr %src_raw, ptr %src_raw.addr, align 8 store ptr %dst_rgba, ptr %dst_rgba.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %2 = load ptr, ptr %src_raw.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_raw.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %6 = load ptr, ptr %src_raw.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %b, align 1 %8 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 -1, ptr %arrayidx3, align 1 %9 = load i8, ptr %b, align 1 %10 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %10, i64 1 store i8 %9, ptr %arrayidx4, align 1 %11 = load i8, ptr %g, align 1 %12 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 2 store i8 %11, ptr %arrayidx5, align 1 %13 = load i8, ptr %r, align 1 %14 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx6, align 1 %15 = load ptr, ptr %dst_rgba.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr, ptr %dst_rgba.addr, align 8 %16 = load ptr, ptr %src_raw.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %16, i64 3 store ptr %add.ptr7, ptr %src_raw.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !8 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToRGB24Row_C(ptr noundef %src_raw, ptr noundef %dst_rgb24, i32 noundef %width) #0 { entry: %src_raw.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %r = alloca i8, align 1 %g = alloca i8, align 1 %b = alloca i8, align 1 store ptr %src_raw, ptr %src_raw.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %2 = load ptr, ptr %src_raw.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_raw.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %6 = load ptr, ptr %src_raw.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %b, align 1 %8 = load i8, ptr %b, align 1 %9 = load ptr, ptr %dst_rgb24.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 0 store i8 %8, ptr %arrayidx3, align 1 %10 = load i8, ptr %g, align 1 %11 = load ptr, ptr %dst_rgb24.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 1 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %r, align 1 %13 = load ptr, ptr %dst_rgb24.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst_rgb24.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 3 store ptr %add.ptr, ptr %dst_rgb24.addr, align 8 %15 = load ptr, ptr %src_raw.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %15, i64 3 store ptr %add.ptr6, ptr %src_raw.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !9 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB565ToARGBRow_C(ptr noundef %src_rgb565, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_rgb565.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_rgb565, ptr %src_rgb565.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %and = and i32 %conv, 31 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr = ashr i32 %conv3, 5 %6 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %7 to i32 %and6 = and i32 %conv5, 7 %shl = shl i32 %and6, 3 %or = or i32 %shr, %shl %conv7 = trunc i32 %or to i8 store i8 %conv7, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %8 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %9 to i32 %shr10 = ashr i32 %conv9, 3 %conv11 = trunc i32 %shr10 to i8 store i8 %conv11, ptr %r, align 1 %10 = load i8, ptr %b, align 1 %conv12 = zext i8 %10 to i32 %shl13 = shl i32 %conv12, 3 %11 = load i8, ptr %b, align 1 %conv14 = zext i8 %11 to i32 %shr15 = ashr i32 %conv14, 2 %or16 = or i32 %shl13, %shr15 %conv17 = trunc i32 %or16 to i8 %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv17, ptr %arrayidx18, align 1 %13 = load i8, ptr %g, align 1 %conv19 = zext i8 %13 to i32 %shl20 = shl i32 %conv19, 2 %14 = load i8, ptr %g, align 1 %conv21 = zext i8 %14 to i32 %shr22 = ashr i32 %conv21, 4 %or23 = or i32 %shl20, %shr22 %conv24 = trunc i32 %or23 to i8 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx25 = getelementptr inbounds i8, ptr %15, i64 1 store i8 %conv24, ptr %arrayidx25, align 1 %16 = load i8, ptr %r, align 1 %conv26 = zext i8 %16 to i32 %shl27 = shl i32 %conv26, 3 %17 = load i8, ptr %r, align 1 %conv28 = zext i8 %17 to i32 %shr29 = ashr i32 %conv28, 2 %or30 = or i32 %shl27, %shr29 %conv31 = trunc i32 %or30 to i8 %18 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx32 = getelementptr inbounds i8, ptr %18, i64 2 store i8 %conv31, ptr %arrayidx32, align 1 %19 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %19, i64 3 store i8 -1, ptr %arrayidx33, align 1 %20 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %21 = load ptr, ptr %src_rgb565.addr, align 8 %add.ptr34 = getelementptr inbounds i8, ptr %21, i64 2 store ptr %add.ptr34, ptr %src_rgb565.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %22 = load i32, ptr %x, align 4 %inc = add nsw i32 %22, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !10 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGB1555ToARGBRow_C(ptr noundef %src_argb1555, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb1555.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_argb1555, ptr %src_argb1555.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %and = and i32 %conv, 31 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr = ashr i32 %conv3, 5 %6 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %7 to i32 %and6 = and i32 %conv5, 3 %shl = shl i32 %and6, 3 %or = or i32 %shr, %shl %conv7 = trunc i32 %or to i8 store i8 %conv7, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %8 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %9 to i32 %and10 = and i32 %conv9, 124 %shr11 = ashr i32 %and10, 2 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %10 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %10, i64 1 %11 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %11 to i32 %shr15 = ashr i32 %conv14, 7 %conv16 = trunc i32 %shr15 to i8 store i8 %conv16, ptr %a, align 1 %12 = load i8, ptr %b, align 1 %conv17 = zext i8 %12 to i32 %shl18 = shl i32 %conv17, 3 %13 = load i8, ptr %b, align 1 %conv19 = zext i8 %13 to i32 %shr20 = ashr i32 %conv19, 2 %or21 = or i32 %shl18, %shr20 %conv22 = trunc i32 %or21 to i8 %14 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %14, i64 0 store i8 %conv22, ptr %arrayidx23, align 1 %15 = load i8, ptr %g, align 1 %conv24 = zext i8 %15 to i32 %shl25 = shl i32 %conv24, 3 %16 = load i8, ptr %g, align 1 %conv26 = zext i8 %16 to i32 %shr27 = ashr i32 %conv26, 2 %or28 = or i32 %shl25, %shr27 %conv29 = trunc i32 %or28 to i8 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx30 = getelementptr inbounds i8, ptr %17, i64 1 store i8 %conv29, ptr %arrayidx30, align 1 %18 = load i8, ptr %r, align 1 %conv31 = zext i8 %18 to i32 %shl32 = shl i32 %conv31, 3 %19 = load i8, ptr %r, align 1 %conv33 = zext i8 %19 to i32 %shr34 = ashr i32 %conv33, 2 %or35 = or i32 %shl32, %shr34 %conv36 = trunc i32 %or35 to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx37 = getelementptr inbounds i8, ptr %20, i64 2 store i8 %conv36, ptr %arrayidx37, align 1 %21 = load i8, ptr %a, align 1 %conv38 = zext i8 %21 to i32 %sub = sub nsw i32 0, %conv38 %conv39 = trunc i32 %sub to i8 %22 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %22, i64 3 store i8 %conv39, ptr %arrayidx40, align 1 %23 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %23, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %24 = load ptr, ptr %src_argb1555.addr, align 8 %add.ptr41 = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr41, ptr %src_argb1555.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %25 = load i32, ptr %x, align 4 %inc = add nsw i32 %25, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !11 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGB4444ToARGBRow_C(ptr noundef %src_argb4444, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb4444.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_argb4444, ptr %src_argb4444.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %and = and i32 %conv, 15 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr = ashr i32 %conv3, 4 %conv4 = trunc i32 %shr to i8 store i8 %conv4, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %7 to i32 %and7 = and i32 %conv6, 15 %conv8 = trunc i32 %and7 to i8 store i8 %conv8, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %8 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %9 to i32 %shr11 = ashr i32 %conv10, 4 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %a, align 1 %10 = load i8, ptr %b, align 1 %conv13 = zext i8 %10 to i32 %shl = shl i32 %conv13, 4 %11 = load i8, ptr %b, align 1 %conv14 = zext i8 %11 to i32 %or = or i32 %shl, %conv14 %conv15 = trunc i32 %or to i8 %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv15, ptr %arrayidx16, align 1 %13 = load i8, ptr %g, align 1 %conv17 = zext i8 %13 to i32 %shl18 = shl i32 %conv17, 4 %14 = load i8, ptr %g, align 1 %conv19 = zext i8 %14 to i32 %or20 = or i32 %shl18, %conv19 %conv21 = trunc i32 %or20 to i8 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %15, i64 1 store i8 %conv21, ptr %arrayidx22, align 1 %16 = load i8, ptr %r, align 1 %conv23 = zext i8 %16 to i32 %shl24 = shl i32 %conv23, 4 %17 = load i8, ptr %r, align 1 %conv25 = zext i8 %17 to i32 %or26 = or i32 %shl24, %conv25 %conv27 = trunc i32 %or26 to i8 %18 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx28 = getelementptr inbounds i8, ptr %18, i64 2 store i8 %conv27, ptr %arrayidx28, align 1 %19 = load i8, ptr %a, align 1 %conv29 = zext i8 %19 to i32 %shl30 = shl i32 %conv29, 4 %20 = load i8, ptr %a, align 1 %conv31 = zext i8 %20 to i32 %or32 = or i32 %shl30, %conv31 %conv33 = trunc i32 %or32 to i8 %21 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx34 = getelementptr inbounds i8, ptr %21, i64 3 store i8 %conv33, ptr %arrayidx34, align 1 %22 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %22, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %23 = load ptr, ptr %src_argb4444.addr, align 8 %add.ptr35 = getelementptr inbounds i8, ptr %23, i64 2 store ptr %add.ptr35, ptr %src_argb4444.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %24 = load i32, ptr %x, align 4 %inc = add nsw i32 %24, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !12 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AR30ToARGBRow_C(ptr noundef %src_ar30, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_ar30.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %ar30 = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 store ptr %src_ar30, ptr %src_ar30.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %ar30) #10 store i32 -1431655766, ptr %ar30, align 4, !annotation !4 %2 = load ptr, ptr %src_ar30.addr, align 8 %call = call ptr @memcpy.inline(ptr noundef %ar30, ptr noundef %2, i64 noundef 4) #10 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %3 = load i32, ptr %ar30, align 4 %shr = lshr i32 %3, 2 %and = and i32 %shr, 255 store i32 %and, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load i32, ptr %ar30, align 4 %shr1 = lshr i32 %4, 12 %and2 = and i32 %shr1, 255 store i32 %and2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %5 = load i32, ptr %ar30, align 4 %shr3 = lshr i32 %5, 22 %and4 = and i32 %shr3, 255 store i32 %and4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %6 = load i32, ptr %ar30, align 4 %shr5 = lshr i32 %6, 30 %mul = mul i32 %shr5, 85 store i32 %mul, ptr %a, align 4 %7 = load i32, ptr %b, align 4 %8 = load i32, ptr %g, align 4 %shl = shl i32 %8, 8 %or = or i32 %7, %shl %9 = load i32, ptr %r, align 4 %shl6 = shl i32 %9, 16 %or7 = or i32 %or, %shl6 %10 = load i32, ptr %a, align 4 %shl8 = shl i32 %10, 24 %or9 = or i32 %or7, %shl8 %11 = load ptr, ptr %dst_argb.addr, align 8 store i32 %or9, ptr %11, align 4 %12 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %12, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %13 = load ptr, ptr %src_ar30.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %13, i64 4 store ptr %add.ptr10, ptr %src_ar30.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ar30) #10 br label %for.inc for.inc: ; preds = %for.body %14 = load i32, ptr %x, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !13 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: alwaysinline nobuiltin nounwind null_pointer_is_valid ssp uwtable declare ptr @memcpy(ptr noundef, ptr noundef, i64 noundef) #2 ; Function Attrs: alwaysinline mustprogress nounwind define internal ptr @memcpy.inline(ptr noalias %__dest, ptr noalias %__src, i64 %__len) #3 { entry: %__dest.addr = alloca ptr, align 8 %__src.addr = alloca ptr, align 8 %__len.addr = alloca i64, align 8 store ptr %__dest, ptr %__dest.addr, align 8 store ptr %__src, ptr %__src.addr, align 8 store i64 %__len, ptr %__len.addr, align 8 %0 = load ptr, ptr %__dest.addr, align 8 %1 = load ptr, ptr %__src.addr, align 8 %2 = load i64, ptr %__len.addr, align 8 %3 = load ptr, ptr %__dest.addr, align 8 %4 = call i64 @llvm.objectsize.i64.p0(ptr %3, i1 false, i1 true, i1 false) %call = call ptr @__memcpy_chk(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %4) #10 ret ptr %call } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AR30ToABGRRow_C(ptr noundef %src_ar30, ptr noundef %dst_abgr, i32 noundef %width) #0 { entry: %src_ar30.addr = alloca ptr, align 8 %dst_abgr.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %ar30 = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 store ptr %src_ar30, ptr %src_ar30.addr, align 8 store ptr %dst_abgr, ptr %dst_abgr.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %ar30) #10 store i32 -1431655766, ptr %ar30, align 4, !annotation !4 %2 = load ptr, ptr %src_ar30.addr, align 8 %call = call ptr @memcpy.inline(ptr noundef %ar30, ptr noundef %2, i64 noundef 4) #10 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %3 = load i32, ptr %ar30, align 4 %shr = lshr i32 %3, 2 %and = and i32 %shr, 255 store i32 %and, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load i32, ptr %ar30, align 4 %shr1 = lshr i32 %4, 12 %and2 = and i32 %shr1, 255 store i32 %and2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %5 = load i32, ptr %ar30, align 4 %shr3 = lshr i32 %5, 22 %and4 = and i32 %shr3, 255 store i32 %and4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %6 = load i32, ptr %ar30, align 4 %shr5 = lshr i32 %6, 30 %mul = mul i32 %shr5, 85 store i32 %mul, ptr %a, align 4 %7 = load i32, ptr %r, align 4 %8 = load i32, ptr %g, align 4 %shl = shl i32 %8, 8 %or = or i32 %7, %shl %9 = load i32, ptr %b, align 4 %shl6 = shl i32 %9, 16 %or7 = or i32 %or, %shl6 %10 = load i32, ptr %a, align 4 %shl8 = shl i32 %10, 24 %or9 = or i32 %or7, %shl8 %11 = load ptr, ptr %dst_abgr.addr, align 8 store i32 %or9, ptr %11, align 4 %12 = load ptr, ptr %dst_abgr.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %12, i64 4 store ptr %add.ptr, ptr %dst_abgr.addr, align 8 %13 = load ptr, ptr %src_ar30.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %13, i64 4 store ptr %add.ptr10, ptr %src_ar30.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ar30) #10 br label %for.inc for.inc: ; preds = %for.body %14 = load i32, ptr %x, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !14 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AR30ToAB30Row_C(ptr noundef %src_ar30, ptr noundef %dst_ab30, i32 noundef %width) #0 { entry: %src_ar30.addr = alloca ptr, align 8 %dst_ab30.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %ar30 = alloca i32, align 4 %b = alloca i32, align 4 %ga = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_ar30, ptr %src_ar30.addr, align 8 store ptr %dst_ab30, ptr %dst_ab30.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %ar30) #10 store i32 -1431655766, ptr %ar30, align 4, !annotation !4 %2 = load ptr, ptr %src_ar30.addr, align 8 %call = call ptr @memcpy.inline(ptr noundef %ar30, ptr noundef %2, i64 noundef 4) #10 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %3 = load i32, ptr %ar30, align 4 %and = and i32 %3, 1023 store i32 %and, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ga) #10 %4 = load i32, ptr %ar30, align 4 %and1 = and i32 %4, -1072694272 store i32 %and1, ptr %ga, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %5 = load i32, ptr %ar30, align 4 %shr = lshr i32 %5, 20 %and2 = and i32 %shr, 1023 store i32 %and2, ptr %r, align 4 %6 = load i32, ptr %r, align 4 %7 = load i32, ptr %ga, align 4 %or = or i32 %6, %7 %8 = load i32, ptr %b, align 4 %shl = shl i32 %8, 20 %or3 = or i32 %or, %shl %9 = load ptr, ptr %dst_ab30.addr, align 8 store i32 %or3, ptr %9, align 4 %10 = load ptr, ptr %dst_ab30.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %10, i64 4 store ptr %add.ptr, ptr %dst_ab30.addr, align 8 %11 = load ptr, ptr %src_ar30.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %11, i64 4 store ptr %add.ptr4, ptr %src_ar30.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ga) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ar30) #10 br label %for.inc for.inc: ; preds = %for.body %12 = load i32, ptr %x, align 4 %inc = add nsw i32 %12, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !15 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToABGRRow_C(ptr noundef %src_argb, ptr noundef %dst_abgr, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_abgr.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_abgr, ptr %dst_abgr.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx3, align 1 store i8 %9, ptr %a, align 1 %10 = load i8, ptr %r, align 1 %11 = load ptr, ptr %dst_abgr.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %g, align 1 %13 = load ptr, ptr %dst_abgr.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx5, align 1 %14 = load i8, ptr %b, align 1 %15 = load ptr, ptr %dst_abgr.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx6, align 1 %16 = load i8, ptr %a, align 1 %17 = load ptr, ptr %dst_abgr.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx7, align 1 %18 = load ptr, ptr %dst_abgr.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_abgr.addr, align 8 %19 = load ptr, ptr %src_argb.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr8, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !16 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToBGRARow_C(ptr noundef %src_argb, ptr noundef %dst_bgra, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_bgra.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_bgra, ptr %dst_bgra.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx3, align 1 store i8 %9, ptr %a, align 1 %10 = load i8, ptr %a, align 1 %11 = load ptr, ptr %dst_bgra.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %r, align 1 %13 = load ptr, ptr %dst_bgra.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx5, align 1 %14 = load i8, ptr %g, align 1 %15 = load ptr, ptr %dst_bgra.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx6, align 1 %16 = load i8, ptr %b, align 1 %17 = load ptr, ptr %dst_bgra.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx7, align 1 %18 = load ptr, ptr %dst_bgra.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_bgra.addr, align 8 %19 = load ptr, ptr %src_argb.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr8, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !17 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToRGBARow_C(ptr noundef %src_argb, ptr noundef %dst_rgba, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgba.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgba, ptr %dst_rgba.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx3, align 1 store i8 %9, ptr %a, align 1 %10 = load i8, ptr %a, align 1 %11 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %b, align 1 %13 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx5, align 1 %14 = load i8, ptr %g, align 1 %15 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx6, align 1 %16 = load i8, ptr %r, align 1 %17 = load ptr, ptr %dst_rgba.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx7, align 1 %18 = load ptr, ptr %dst_rgba.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_rgba.addr, align 8 %19 = load ptr, ptr %src_argb.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr8, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !18 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToRGB24Row_C(ptr noundef %src_argb, ptr noundef %dst_rgb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %r, align 1 %8 = load i8, ptr %b, align 1 %9 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 0 store i8 %8, ptr %arrayidx3, align 1 %10 = load i8, ptr %g, align 1 %11 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 1 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %r, align 1 %13 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 3 store ptr %add.ptr, ptr %dst_rgb.addr, align 8 %15 = load ptr, ptr %src_argb.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr6, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !19 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToRAWRow_C(ptr noundef %src_argb, ptr noundef %dst_rgb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %r, align 1 %8 = load i8, ptr %r, align 1 %9 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 0 store i8 %8, ptr %arrayidx3, align 1 %10 = load i8, ptr %g, align 1 %11 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 1 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %b, align 1 %13 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 3 store ptr %add.ptr, ptr %dst_rgb.addr, align 8 %15 = load ptr, ptr %src_argb.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr6, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !20 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGBAToARGBRow_C(ptr noundef %src_rgba, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_rgba.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %a = alloca i8, align 1 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_rgba, ptr %src_rgba.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %2 = load ptr, ptr %src_rgba.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %a, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %4 = load ptr, ptr %src_rgba.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %6 = load ptr, ptr %src_rgba.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %8 = load ptr, ptr %src_rgba.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx3, align 1 store i8 %9, ptr %r, align 1 %10 = load i8, ptr %b, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx4, align 1 %12 = load i8, ptr %g, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx5, align 1 %14 = load i8, ptr %r, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx6, align 1 %16 = load i8, ptr %a, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx7, align 1 %18 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %19 = load ptr, ptr %src_rgba.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr8, ptr %src_rgba.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !21 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToRGB565Row_C(ptr noundef %src_argb, ptr noundef %dst_rgb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %b037 = alloca i8, align 1 %g042 = alloca i8, align 1 %r047 = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %shr = ashr i32 %conv, 3 %conv1 = trunc i32 %shr to i8 store i8 %conv1, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr4 = ashr i32 %conv3, 2 %conv5 = trunc i32 %shr4 to i8 store i8 %conv5, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 %shr8 = ashr i32 %conv7, 3 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %8, i64 4 %9 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %9 to i32 %shr12 = ashr i32 %conv11, 3 %conv13 = trunc i32 %shr12 to i8 store i8 %conv13, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %10, i64 5 %11 = load i8, ptr %arrayidx14, align 1 %conv15 = zext i8 %11 to i32 %shr16 = ashr i32 %conv15, 2 %conv17 = trunc i32 %shr16 to i8 store i8 %conv17, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %12, i64 6 %13 = load i8, ptr %arrayidx18, align 1 %conv19 = zext i8 %13 to i32 %shr20 = ashr i32 %conv19, 3 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %r1, align 1 %14 = load i8, ptr %b0, align 1 %conv22 = zext i8 %14 to i32 %15 = load i8, ptr %g0, align 1 %conv23 = zext i8 %15 to i32 %shl = shl i32 %conv23, 5 %or = or i32 %conv22, %shl %16 = load i8, ptr %r0, align 1 %conv24 = zext i8 %16 to i32 %shl25 = shl i32 %conv24, 11 %or26 = or i32 %or, %shl25 %17 = load i8, ptr %b1, align 1 %conv27 = zext i8 %17 to i32 %shl28 = shl i32 %conv27, 16 %or29 = or i32 %or26, %shl28 %18 = load i8, ptr %g1, align 1 %conv30 = zext i8 %18 to i32 %shl31 = shl i32 %conv30, 21 %or32 = or i32 %or29, %shl31 %19 = load i8, ptr %r1, align 1 %conv33 = zext i8 %19 to i32 %shl34 = shl i32 %conv33, 27 %or35 = or i32 %or32, %shl34 %20 = load ptr, ptr %dst_rgb.addr, align 8 store i32 %or35, ptr %20, align 4 %21 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %21, i64 4 store ptr %add.ptr, ptr %dst_rgb.addr, align 8 %22 = load ptr, ptr %src_argb.addr, align 8 %add.ptr36 = getelementptr inbounds i8, ptr %22, i64 8 store ptr %add.ptr36, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %23 = load i32, ptr %x, align 4 %add = add nsw i32 %23, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !22 for.end: ; preds = %for.cond %24 = load i32, ptr %width.addr, align 4 %and = and i32 %24, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %b037) #10 %25 = load ptr, ptr %src_argb.addr, align 8 %arrayidx38 = getelementptr inbounds i8, ptr %25, i64 0 %26 = load i8, ptr %arrayidx38, align 1 %conv39 = zext i8 %26 to i32 %shr40 = ashr i32 %conv39, 3 %conv41 = trunc i32 %shr40 to i8 store i8 %conv41, ptr %b037, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g042) #10 %27 = load ptr, ptr %src_argb.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %27, i64 1 %28 = load i8, ptr %arrayidx43, align 1 %conv44 = zext i8 %28 to i32 %shr45 = ashr i32 %conv44, 2 %conv46 = trunc i32 %shr45 to i8 store i8 %conv46, ptr %g042, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r047) #10 %29 = load ptr, ptr %src_argb.addr, align 8 %arrayidx48 = getelementptr inbounds i8, ptr %29, i64 2 %30 = load i8, ptr %arrayidx48, align 1 %conv49 = zext i8 %30 to i32 %shr50 = ashr i32 %conv49, 3 %conv51 = trunc i32 %shr50 to i8 store i8 %conv51, ptr %r047, align 1 %31 = load i8, ptr %b037, align 1 %conv52 = zext i8 %31 to i32 %32 = load i8, ptr %g042, align 1 %conv53 = zext i8 %32 to i32 %shl54 = shl i32 %conv53, 5 %or55 = or i32 %conv52, %shl54 %33 = load i8, ptr %r047, align 1 %conv56 = zext i8 %33 to i32 %shl57 = shl i32 %conv56, 11 %or58 = or i32 %or55, %shl57 %conv59 = trunc i32 %or58 to i16 %34 = load ptr, ptr %dst_rgb.addr, align 8 store i16 %conv59, ptr %34, align 2 call void @llvm.lifetime.end.p0(i64 1, ptr %r047) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g042) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b037) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToRGB565DitherRow_C(ptr noundef %src_argb, ptr noundef %dst_rgb, i32 noundef %dither4, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %dither4.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %dither0 = alloca i32, align 4 %dither1 = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %dither058 = alloca i32, align 4 %b064 = alloca i8, align 1 %g071 = alloca i8, align 1 %r078 = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %dither4, ptr %dither4.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %dither0) #10 %2 = load i32, ptr %x, align 4 %and = and i32 %2, 3 %idxprom = sext i32 %and to i64 %arrayidx = getelementptr inbounds i8, ptr %dither4.addr, i64 %idxprom %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %dither0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %dither1) #10 %4 = load i32, ptr %x, align 4 %add = add nsw i32 %4, 1 %and1 = and i32 %add, 3 %idxprom2 = sext i32 %and1 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %dither4.addr, i64 %idxprom2 %5 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %5 to i32 store i32 %conv4, ptr %dither1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %7 to i32 %8 = load i32, ptr %dither0, align 4 %add7 = add nsw i32 %conv6, %8 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add7) %shr = ashr i32 %call, 3 %conv8 = trunc i32 %shr to i8 store i8 %conv8, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %9 = load ptr, ptr %src_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %10 to i32 %11 = load i32, ptr %dither0, align 4 %add11 = add nsw i32 %conv10, %11 %call12 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add11) %shr13 = ashr i32 %call12, 2 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load i32, ptr %dither0, align 4 %add17 = add nsw i32 %conv16, %14 %call18 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add17) %shr19 = ashr i32 %call18, 3 %conv20 = trunc i32 %shr19 to i8 store i8 %conv20, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %15 = load ptr, ptr %src_argb.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %15, i64 4 %16 = load i8, ptr %arrayidx21, align 1 %conv22 = zext i8 %16 to i32 %17 = load i32, ptr %dither1, align 4 %add23 = add nsw i32 %conv22, %17 %call24 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add23) %shr25 = ashr i32 %call24, 3 %conv26 = trunc i32 %shr25 to i8 store i8 %conv26, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %18 = load ptr, ptr %src_argb.addr, align 8 %arrayidx27 = getelementptr inbounds i8, ptr %18, i64 5 %19 = load i8, ptr %arrayidx27, align 1 %conv28 = zext i8 %19 to i32 %20 = load i32, ptr %dither1, align 4 %add29 = add nsw i32 %conv28, %20 %call30 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add29) %shr31 = ashr i32 %call30, 2 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %21 = load ptr, ptr %src_argb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %22 to i32 %23 = load i32, ptr %dither1, align 4 %add35 = add nsw i32 %conv34, %23 %call36 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add35) %shr37 = ashr i32 %call36, 3 %conv38 = trunc i32 %shr37 to i8 store i8 %conv38, ptr %r1, align 1 %24 = load i8, ptr %b0, align 1 %conv39 = zext i8 %24 to i32 %25 = load i8, ptr %g0, align 1 %conv40 = zext i8 %25 to i32 %shl = shl i32 %conv40, 5 %or = or i32 %conv39, %shl %26 = load i8, ptr %r0, align 1 %conv41 = zext i8 %26 to i32 %shl42 = shl i32 %conv41, 11 %or43 = or i32 %or, %shl42 %conv44 = trunc i32 %or43 to i16 %27 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %27, i64 0 store i16 %conv44, ptr %add.ptr, align 2 %28 = load i8, ptr %b1, align 1 %conv45 = zext i8 %28 to i32 %29 = load i8, ptr %g1, align 1 %conv46 = zext i8 %29 to i32 %shl47 = shl i32 %conv46, 5 %or48 = or i32 %conv45, %shl47 %30 = load i8, ptr %r1, align 1 %conv49 = zext i8 %30 to i32 %shl50 = shl i32 %conv49, 11 %or51 = or i32 %or48, %shl50 %conv52 = trunc i32 %or51 to i16 %31 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr53 = getelementptr inbounds i8, ptr %31, i64 2 store i16 %conv52, ptr %add.ptr53, align 2 %32 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %32, i64 4 store ptr %add.ptr54, ptr %dst_rgb.addr, align 8 %33 = load ptr, ptr %src_argb.addr, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %33, i64 8 store ptr %add.ptr55, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %dither1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %dither0) #10 br label %for.inc for.inc: ; preds = %for.body %34 = load i32, ptr %x, align 4 %add56 = add nsw i32 %34, 2 store i32 %add56, ptr %x, align 4 br label %for.cond, !llvm.loop !23 for.end: ; preds = %for.cond %35 = load i32, ptr %width.addr, align 4 %and57 = and i32 %35, 1 %tobool = icmp ne i32 %and57, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 4, ptr %dither058) #10 %36 = load i32, ptr %width.addr, align 4 %sub59 = sub nsw i32 %36, 1 %and60 = and i32 %sub59, 3 %idxprom61 = sext i32 %and60 to i64 %arrayidx62 = getelementptr inbounds i8, ptr %dither4.addr, i64 %idxprom61 %37 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %37 to i32 store i32 %conv63, ptr %dither058, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b064) #10 %38 = load ptr, ptr %src_argb.addr, align 8 %arrayidx65 = getelementptr inbounds i8, ptr %38, i64 0 %39 = load i8, ptr %arrayidx65, align 1 %conv66 = zext i8 %39 to i32 %40 = load i32, ptr %dither058, align 4 %add67 = add nsw i32 %conv66, %40 %call68 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add67) %shr69 = ashr i32 %call68, 3 %conv70 = trunc i32 %shr69 to i8 store i8 %conv70, ptr %b064, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g071) #10 %41 = load ptr, ptr %src_argb.addr, align 8 %arrayidx72 = getelementptr inbounds i8, ptr %41, i64 1 %42 = load i8, ptr %arrayidx72, align 1 %conv73 = zext i8 %42 to i32 %43 = load i32, ptr %dither058, align 4 %add74 = add nsw i32 %conv73, %43 %call75 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add74) %shr76 = ashr i32 %call75, 2 %conv77 = trunc i32 %shr76 to i8 store i8 %conv77, ptr %g071, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r078) #10 %44 = load ptr, ptr %src_argb.addr, align 8 %arrayidx79 = getelementptr inbounds i8, ptr %44, i64 2 %45 = load i8, ptr %arrayidx79, align 1 %conv80 = zext i8 %45 to i32 %46 = load i32, ptr %dither058, align 4 %add81 = add nsw i32 %conv80, %46 %call82 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add81) %shr83 = ashr i32 %call82, 3 %conv84 = trunc i32 %shr83 to i8 store i8 %conv84, ptr %r078, align 1 %47 = load i8, ptr %b064, align 1 %conv85 = zext i8 %47 to i32 %48 = load i8, ptr %g071, align 1 %conv86 = zext i8 %48 to i32 %shl87 = shl i32 %conv86, 5 %or88 = or i32 %conv85, %shl87 %49 = load i8, ptr %r078, align 1 %conv89 = zext i8 %49 to i32 %shl90 = shl i32 %conv89, 11 %or91 = or i32 %or88, %shl90 %conv92 = trunc i32 %or91 to i16 %50 = load ptr, ptr %dst_rgb.addr, align 8 store i16 %conv92, ptr %50, align 2 call void @llvm.lifetime.end.p0(i64 1, ptr %r078) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g071) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b064) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %dither058) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %v) #4 { entry: %v.addr = alloca i32, align 4 store i32 %v, ptr %v.addr, align 4 %0 = load i32, ptr %v.addr, align 4 %cmp = icmp sge i32 %0, 255 %conv = zext i1 %cmp to i32 %sub = sub nsw i32 0, %conv %1 = load i32, ptr %v.addr, align 4 %or = or i32 %sub, %1 %and = and i32 %or, 255 ret i32 %and } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToARGB1555Row_C(ptr noundef %src_argb, ptr noundef %dst_rgb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %a0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %a1 = alloca i8, align 1 %b053 = alloca i8, align 1 %g058 = alloca i8, align 1 %r063 = alloca i8, align 1 %a068 = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %shr = ashr i32 %conv, 3 %conv1 = trunc i32 %shr to i8 store i8 %conv1, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr4 = ashr i32 %conv3, 3 %conv5 = trunc i32 %shr4 to i8 store i8 %conv5, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 %shr8 = ashr i32 %conv7, 3 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a0) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %9 to i32 %shr12 = ashr i32 %conv11, 7 %conv13 = trunc i32 %shr12 to i8 store i8 %conv13, ptr %a0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %10, i64 4 %11 = load i8, ptr %arrayidx14, align 1 %conv15 = zext i8 %11 to i32 %shr16 = ashr i32 %conv15, 3 %conv17 = trunc i32 %shr16 to i8 store i8 %conv17, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %12, i64 5 %13 = load i8, ptr %arrayidx18, align 1 %conv19 = zext i8 %13 to i32 %shr20 = ashr i32 %conv19, 3 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %14 = load ptr, ptr %src_argb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %14, i64 6 %15 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %15 to i32 %shr24 = ashr i32 %conv23, 3 %conv25 = trunc i32 %shr24 to i8 store i8 %conv25, ptr %r1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a1) #10 %16 = load ptr, ptr %src_argb.addr, align 8 %arrayidx26 = getelementptr inbounds i8, ptr %16, i64 7 %17 = load i8, ptr %arrayidx26, align 1 %conv27 = zext i8 %17 to i32 %shr28 = ashr i32 %conv27, 7 %conv29 = trunc i32 %shr28 to i8 store i8 %conv29, ptr %a1, align 1 %18 = load i8, ptr %b0, align 1 %conv30 = zext i8 %18 to i32 %19 = load i8, ptr %g0, align 1 %conv31 = zext i8 %19 to i32 %shl = shl i32 %conv31, 5 %or = or i32 %conv30, %shl %20 = load i8, ptr %r0, align 1 %conv32 = zext i8 %20 to i32 %shl33 = shl i32 %conv32, 10 %or34 = or i32 %or, %shl33 %21 = load i8, ptr %a0, align 1 %conv35 = zext i8 %21 to i32 %shl36 = shl i32 %conv35, 15 %or37 = or i32 %or34, %shl36 %conv38 = trunc i32 %or37 to i16 %22 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %22, i64 0 store i16 %conv38, ptr %add.ptr, align 2 %23 = load i8, ptr %b1, align 1 %conv39 = zext i8 %23 to i32 %24 = load i8, ptr %g1, align 1 %conv40 = zext i8 %24 to i32 %shl41 = shl i32 %conv40, 5 %or42 = or i32 %conv39, %shl41 %25 = load i8, ptr %r1, align 1 %conv43 = zext i8 %25 to i32 %shl44 = shl i32 %conv43, 10 %or45 = or i32 %or42, %shl44 %26 = load i8, ptr %a1, align 1 %conv46 = zext i8 %26 to i32 %shl47 = shl i32 %conv46, 15 %or48 = or i32 %or45, %shl47 %conv49 = trunc i32 %or48 to i16 %27 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr50 = getelementptr inbounds i8, ptr %27, i64 2 store i16 %conv49, ptr %add.ptr50, align 2 %28 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr51 = getelementptr inbounds i8, ptr %28, i64 4 store ptr %add.ptr51, ptr %dst_rgb.addr, align 8 %29 = load ptr, ptr %src_argb.addr, align 8 %add.ptr52 = getelementptr inbounds i8, ptr %29, i64 8 store ptr %add.ptr52, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %a0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %30 = load i32, ptr %x, align 4 %add = add nsw i32 %30, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !24 for.end: ; preds = %for.cond %31 = load i32, ptr %width.addr, align 4 %and = and i32 %31, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %b053) #10 %32 = load ptr, ptr %src_argb.addr, align 8 %arrayidx54 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx54, align 1 %conv55 = zext i8 %33 to i32 %shr56 = ashr i32 %conv55, 3 %conv57 = trunc i32 %shr56 to i8 store i8 %conv57, ptr %b053, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g058) #10 %34 = load ptr, ptr %src_argb.addr, align 8 %arrayidx59 = getelementptr inbounds i8, ptr %34, i64 1 %35 = load i8, ptr %arrayidx59, align 1 %conv60 = zext i8 %35 to i32 %shr61 = ashr i32 %conv60, 3 %conv62 = trunc i32 %shr61 to i8 store i8 %conv62, ptr %g058, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r063) #10 %36 = load ptr, ptr %src_argb.addr, align 8 %arrayidx64 = getelementptr inbounds i8, ptr %36, i64 2 %37 = load i8, ptr %arrayidx64, align 1 %conv65 = zext i8 %37 to i32 %shr66 = ashr i32 %conv65, 3 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %r063, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a068) #10 %38 = load ptr, ptr %src_argb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %38, i64 3 %39 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %39 to i32 %shr71 = ashr i32 %conv70, 7 %conv72 = trunc i32 %shr71 to i8 store i8 %conv72, ptr %a068, align 1 %40 = load i8, ptr %b053, align 1 %conv73 = zext i8 %40 to i32 %41 = load i8, ptr %g058, align 1 %conv74 = zext i8 %41 to i32 %shl75 = shl i32 %conv74, 5 %or76 = or i32 %conv73, %shl75 %42 = load i8, ptr %r063, align 1 %conv77 = zext i8 %42 to i32 %shl78 = shl i32 %conv77, 10 %or79 = or i32 %or76, %shl78 %43 = load i8, ptr %a068, align 1 %conv80 = zext i8 %43 to i32 %shl81 = shl i32 %conv80, 15 %or82 = or i32 %or79, %shl81 %conv83 = trunc i32 %or82 to i16 %44 = load ptr, ptr %dst_rgb.addr, align 8 store i16 %conv83, ptr %44, align 2 call void @llvm.lifetime.end.p0(i64 1, ptr %a068) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r063) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g058) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b053) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToARGB4444Row_C(ptr noundef %src_argb, ptr noundef %dst_rgb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %a0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %a1 = alloca i8, align 1 %b053 = alloca i8, align 1 %g058 = alloca i8, align 1 %r063 = alloca i8, align 1 %a068 = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %shr = ashr i32 %conv, 4 %conv1 = trunc i32 %shr to i8 store i8 %conv1, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr4 = ashr i32 %conv3, 4 %conv5 = trunc i32 %shr4 to i8 store i8 %conv5, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 %shr8 = ashr i32 %conv7, 4 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a0) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %9 to i32 %shr12 = ashr i32 %conv11, 4 %conv13 = trunc i32 %shr12 to i8 store i8 %conv13, ptr %a0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %10, i64 4 %11 = load i8, ptr %arrayidx14, align 1 %conv15 = zext i8 %11 to i32 %shr16 = ashr i32 %conv15, 4 %conv17 = trunc i32 %shr16 to i8 store i8 %conv17, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %12, i64 5 %13 = load i8, ptr %arrayidx18, align 1 %conv19 = zext i8 %13 to i32 %shr20 = ashr i32 %conv19, 4 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %14 = load ptr, ptr %src_argb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %14, i64 6 %15 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %15 to i32 %shr24 = ashr i32 %conv23, 4 %conv25 = trunc i32 %shr24 to i8 store i8 %conv25, ptr %r1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a1) #10 %16 = load ptr, ptr %src_argb.addr, align 8 %arrayidx26 = getelementptr inbounds i8, ptr %16, i64 7 %17 = load i8, ptr %arrayidx26, align 1 %conv27 = zext i8 %17 to i32 %shr28 = ashr i32 %conv27, 4 %conv29 = trunc i32 %shr28 to i8 store i8 %conv29, ptr %a1, align 1 %18 = load i8, ptr %b0, align 1 %conv30 = zext i8 %18 to i32 %19 = load i8, ptr %g0, align 1 %conv31 = zext i8 %19 to i32 %shl = shl i32 %conv31, 4 %or = or i32 %conv30, %shl %20 = load i8, ptr %r0, align 1 %conv32 = zext i8 %20 to i32 %shl33 = shl i32 %conv32, 8 %or34 = or i32 %or, %shl33 %21 = load i8, ptr %a0, align 1 %conv35 = zext i8 %21 to i32 %shl36 = shl i32 %conv35, 12 %or37 = or i32 %or34, %shl36 %conv38 = trunc i32 %or37 to i16 %22 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %22, i64 0 store i16 %conv38, ptr %add.ptr, align 2 %23 = load i8, ptr %b1, align 1 %conv39 = zext i8 %23 to i32 %24 = load i8, ptr %g1, align 1 %conv40 = zext i8 %24 to i32 %shl41 = shl i32 %conv40, 4 %or42 = or i32 %conv39, %shl41 %25 = load i8, ptr %r1, align 1 %conv43 = zext i8 %25 to i32 %shl44 = shl i32 %conv43, 8 %or45 = or i32 %or42, %shl44 %26 = load i8, ptr %a1, align 1 %conv46 = zext i8 %26 to i32 %shl47 = shl i32 %conv46, 12 %or48 = or i32 %or45, %shl47 %conv49 = trunc i32 %or48 to i16 %27 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr50 = getelementptr inbounds i8, ptr %27, i64 2 store i16 %conv49, ptr %add.ptr50, align 2 %28 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr51 = getelementptr inbounds i8, ptr %28, i64 4 store ptr %add.ptr51, ptr %dst_rgb.addr, align 8 %29 = load ptr, ptr %src_argb.addr, align 8 %add.ptr52 = getelementptr inbounds i8, ptr %29, i64 8 store ptr %add.ptr52, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %a0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %30 = load i32, ptr %x, align 4 %add = add nsw i32 %30, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !25 for.end: ; preds = %for.cond %31 = load i32, ptr %width.addr, align 4 %and = and i32 %31, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %b053) #10 %32 = load ptr, ptr %src_argb.addr, align 8 %arrayidx54 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx54, align 1 %conv55 = zext i8 %33 to i32 %shr56 = ashr i32 %conv55, 4 %conv57 = trunc i32 %shr56 to i8 store i8 %conv57, ptr %b053, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g058) #10 %34 = load ptr, ptr %src_argb.addr, align 8 %arrayidx59 = getelementptr inbounds i8, ptr %34, i64 1 %35 = load i8, ptr %arrayidx59, align 1 %conv60 = zext i8 %35 to i32 %shr61 = ashr i32 %conv60, 4 %conv62 = trunc i32 %shr61 to i8 store i8 %conv62, ptr %g058, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r063) #10 %36 = load ptr, ptr %src_argb.addr, align 8 %arrayidx64 = getelementptr inbounds i8, ptr %36, i64 2 %37 = load i8, ptr %arrayidx64, align 1 %conv65 = zext i8 %37 to i32 %shr66 = ashr i32 %conv65, 4 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %r063, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a068) #10 %38 = load ptr, ptr %src_argb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %38, i64 3 %39 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %39 to i32 %shr71 = ashr i32 %conv70, 4 %conv72 = trunc i32 %shr71 to i8 store i8 %conv72, ptr %a068, align 1 %40 = load i8, ptr %b053, align 1 %conv73 = zext i8 %40 to i32 %41 = load i8, ptr %g058, align 1 %conv74 = zext i8 %41 to i32 %shl75 = shl i32 %conv74, 4 %or76 = or i32 %conv73, %shl75 %42 = load i8, ptr %r063, align 1 %conv77 = zext i8 %42 to i32 %shl78 = shl i32 %conv77, 8 %or79 = or i32 %or76, %shl78 %43 = load i8, ptr %a068, align 1 %conv80 = zext i8 %43 to i32 %shl81 = shl i32 %conv80, 12 %or82 = or i32 %or79, %shl81 %conv83 = trunc i32 %or82 to i16 %44 = load ptr, ptr %dst_rgb.addr, align 8 store i16 %conv83, ptr %44, align 2 call void @llvm.lifetime.end.p0(i64 1, ptr %a068) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r063) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g058) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b053) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ABGRToAR30Row_C(ptr noundef %src_abgr, ptr noundef %dst_ar30, i32 noundef %width) #0 { entry: %src_abgr.addr = alloca ptr, align 8 %dst_ar30.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %r0 = alloca i32, align 4 %g0 = alloca i32, align 4 %b0 = alloca i32, align 4 %a0 = alloca i32, align 4 store ptr %src_abgr, ptr %src_abgr.addr, align 8 store ptr %dst_ar30, ptr %dst_ar30.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %r0) #10 %2 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %shr = ashr i32 %conv, 6 %4 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %shl = shl i32 %conv2, 2 %or = or i32 %shr, %shl store i32 %or, ptr %r0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g0) #10 %6 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 %shr5 = ashr i32 %conv4, 6 %8 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %9 to i32 %shl8 = shl i32 %conv7, 2 %or9 = or i32 %shr5, %shl8 store i32 %or9, ptr %g0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b0) #10 %10 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %11 to i32 %shr12 = ashr i32 %conv11, 6 %12 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %13 to i32 %shl15 = shl i32 %conv14, 2 %or16 = or i32 %shr12, %shl15 store i32 %or16, ptr %b0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a0) #10 %14 = load ptr, ptr %src_abgr.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 3 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %shr19 = ashr i32 %conv18, 6 store i32 %shr19, ptr %a0, align 4 %16 = load i32, ptr %b0, align 4 %17 = load i32, ptr %g0, align 4 %shl20 = shl i32 %17, 10 %or21 = or i32 %16, %shl20 %18 = load i32, ptr %r0, align 4 %shl22 = shl i32 %18, 20 %or23 = or i32 %or21, %shl22 %19 = load i32, ptr %a0, align 4 %shl24 = shl i32 %19, 30 %or25 = or i32 %or23, %shl24 %20 = load ptr, ptr %dst_ar30.addr, align 8 store i32 %or25, ptr %20, align 4 %21 = load ptr, ptr %dst_ar30.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %21, i64 4 store ptr %add.ptr, ptr %dst_ar30.addr, align 8 %22 = load ptr, ptr %src_abgr.addr, align 8 %add.ptr26 = getelementptr inbounds i8, ptr %22, i64 4 store ptr %add.ptr26, ptr %src_abgr.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r0) #10 br label %for.inc for.inc: ; preds = %for.body %23 = load i32, ptr %x, align 4 %inc = add nsw i32 %23, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !26 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToAR30Row_C(ptr noundef %src_argb, ptr noundef %dst_ar30, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_ar30.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b0 = alloca i32, align 4 %g0 = alloca i32, align 4 %r0 = alloca i32, align 4 %a0 = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_ar30, ptr %dst_ar30.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b0) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %shr = ashr i32 %conv, 6 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %shl = shl i32 %conv2, 2 %or = or i32 %shr, %shl store i32 %or, ptr %b0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g0) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 %shr5 = ashr i32 %conv4, 6 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %9 to i32 %shl8 = shl i32 %conv7, 2 %or9 = or i32 %shr5, %shl8 store i32 %or9, ptr %g0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r0) #10 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %11 to i32 %shr12 = ashr i32 %conv11, 6 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %13 to i32 %shl15 = shl i32 %conv14, 2 %or16 = or i32 %shr12, %shl15 store i32 %or16, ptr %r0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a0) #10 %14 = load ptr, ptr %src_argb.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 3 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %shr19 = ashr i32 %conv18, 6 store i32 %shr19, ptr %a0, align 4 %16 = load i32, ptr %b0, align 4 %17 = load i32, ptr %g0, align 4 %shl20 = shl i32 %17, 10 %or21 = or i32 %16, %shl20 %18 = load i32, ptr %r0, align 4 %shl22 = shl i32 %18, 20 %or23 = or i32 %or21, %shl22 %19 = load i32, ptr %a0, align 4 %shl24 = shl i32 %19, 30 %or25 = or i32 %or23, %shl24 %20 = load ptr, ptr %dst_ar30.addr, align 8 store i32 %or25, ptr %20, align 4 %21 = load ptr, ptr %dst_ar30.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %21, i64 4 store ptr %add.ptr, ptr %dst_ar30.addr, align 8 %22 = load ptr, ptr %src_argb.addr, align 8 %add.ptr26 = getelementptr inbounds i8, ptr %22, i64 4 store ptr %add.ptr26, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %23 = load i32, ptr %x, align 4 %inc = add nsw i32 %23, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !27 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToAR64Row_C(ptr noundef %src_argb, ptr noundef %dst_ar64, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_ar64.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i16, align 2 %g = alloca i16, align 2 %r = alloca i16, align 2 %a = alloca i16, align 2 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_ar64, ptr %dst_ar64.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 2, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %mul = mul nsw i32 %conv, 257 %conv1 = trunc i32 %mul to i16 store i16 %conv1, ptr %b, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %mul4 = mul nsw i32 %conv3, 257 %conv5 = trunc i32 %mul4 to i16 store i16 %conv5, ptr %g, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 %mul8 = mul nsw i32 %conv7, 257 %conv9 = trunc i32 %mul8 to i16 store i16 %conv9, ptr %r, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %9 to i32 %mul12 = mul nsw i32 %conv11, 257 %conv13 = trunc i32 %mul12 to i16 store i16 %conv13, ptr %a, align 2 %10 = load i16, ptr %b, align 2 %11 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx14 = getelementptr inbounds i16, ptr %11, i64 0 store i16 %10, ptr %arrayidx14, align 2 %12 = load i16, ptr %g, align 2 %13 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx15 = getelementptr inbounds i16, ptr %13, i64 1 store i16 %12, ptr %arrayidx15, align 2 %14 = load i16, ptr %r, align 2 %15 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx16 = getelementptr inbounds i16, ptr %15, i64 2 store i16 %14, ptr %arrayidx16, align 2 %16 = load i16, ptr %a, align 2 %17 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx17 = getelementptr inbounds i16, ptr %17, i64 3 store i16 %16, ptr %arrayidx17, align 2 %18 = load ptr, ptr %dst_ar64.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_ar64.addr, align 8 %19 = load ptr, ptr %src_argb.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr18, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 2, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !28 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToAB64Row_C(ptr noundef %src_argb, ptr noundef %dst_ab64, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_ab64.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i16, align 2 %g = alloca i16, align 2 %r = alloca i16, align 2 %a = alloca i16, align 2 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_ab64, ptr %dst_ab64.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 2, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %mul = mul nsw i32 %conv, 257 %conv1 = trunc i32 %mul to i16 store i16 %conv1, ptr %b, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %mul4 = mul nsw i32 %conv3, 257 %conv5 = trunc i32 %mul4 to i16 store i16 %conv5, ptr %g, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 %mul8 = mul nsw i32 %conv7, 257 %conv9 = trunc i32 %mul8 to i16 store i16 %conv9, ptr %r, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx10, align 1 %conv11 = zext i8 %9 to i32 %mul12 = mul nsw i32 %conv11, 257 %conv13 = trunc i32 %mul12 to i16 store i16 %conv13, ptr %a, align 2 %10 = load i16, ptr %r, align 2 %11 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx14 = getelementptr inbounds i16, ptr %11, i64 0 store i16 %10, ptr %arrayidx14, align 2 %12 = load i16, ptr %g, align 2 %13 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx15 = getelementptr inbounds i16, ptr %13, i64 1 store i16 %12, ptr %arrayidx15, align 2 %14 = load i16, ptr %b, align 2 %15 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx16 = getelementptr inbounds i16, ptr %15, i64 2 store i16 %14, ptr %arrayidx16, align 2 %16 = load i16, ptr %a, align 2 %17 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx17 = getelementptr inbounds i16, ptr %17, i64 3 store i16 %16, ptr %arrayidx17, align 2 %18 = load ptr, ptr %dst_ab64.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_ab64.addr, align 8 %19 = load ptr, ptr %src_argb.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr18, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 2, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !29 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AR64ToARGBRow_C(ptr noundef %src_ar64, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_ar64.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_ar64, ptr %src_ar64.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %3 to i32 %shr = ashr i32 %conv, 8 %conv1 = trunc i32 %shr to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %4, i64 1 %5 = load i16, ptr %arrayidx2, align 2 %conv3 = zext i16 %5 to i32 %shr4 = ashr i32 %conv3, 8 %conv5 = trunc i32 %shr4 to i8 store i8 %conv5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx6 = getelementptr inbounds i16, ptr %6, i64 2 %7 = load i16, ptr %arrayidx6, align 2 %conv7 = zext i16 %7 to i32 %shr8 = ashr i32 %conv7, 8 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %8 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx10 = getelementptr inbounds i16, ptr %8, i64 3 %9 = load i16, ptr %arrayidx10, align 2 %conv11 = zext i16 %9 to i32 %shr12 = ashr i32 %conv11, 8 %conv13 = trunc i32 %shr12 to i8 store i8 %conv13, ptr %a, align 1 %10 = load i8, ptr %b, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx14, align 1 %12 = load i8, ptr %g, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx15, align 1 %14 = load i8, ptr %r, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx16, align 1 %16 = load i8, ptr %a, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx17, align 1 %18 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %19 = load ptr, ptr %src_ar64.addr, align 8 %add.ptr18 = getelementptr inbounds i16, ptr %19, i64 4 store ptr %add.ptr18, ptr %src_ar64.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !30 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AB64ToARGBRow_C(ptr noundef %src_ab64, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_ab64.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %r = alloca i8, align 1 %g = alloca i8, align 1 %b = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_ab64, ptr %src_ab64.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %2 = load ptr, ptr %src_ab64.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %3 to i32 %shr = ashr i32 %conv, 8 %conv1 = trunc i32 %shr to i8 store i8 %conv1, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_ab64.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %4, i64 1 %5 = load i16, ptr %arrayidx2, align 2 %conv3 = zext i16 %5 to i32 %shr4 = ashr i32 %conv3, 8 %conv5 = trunc i32 %shr4 to i8 store i8 %conv5, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %6 = load ptr, ptr %src_ab64.addr, align 8 %arrayidx6 = getelementptr inbounds i16, ptr %6, i64 2 %7 = load i16, ptr %arrayidx6, align 2 %conv7 = zext i16 %7 to i32 %shr8 = ashr i32 %conv7, 8 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %8 = load ptr, ptr %src_ab64.addr, align 8 %arrayidx10 = getelementptr inbounds i16, ptr %8, i64 3 %9 = load i16, ptr %arrayidx10, align 2 %conv11 = zext i16 %9 to i32 %shr12 = ashr i32 %conv11, 8 %conv13 = trunc i32 %shr12 to i8 store i8 %conv13, ptr %a, align 1 %10 = load i8, ptr %b, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx14, align 1 %12 = load i8, ptr %g, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx15, align 1 %14 = load i8, ptr %r, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx16, align 1 %16 = load i8, ptr %a, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx17, align 1 %18 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %19 = load ptr, ptr %src_ab64.addr, align 8 %add.ptr18 = getelementptr inbounds i16, ptr %19, i64 4 store ptr %add.ptr18, ptr %src_ab64.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !31 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AR64ToAB64Row_C(ptr noundef %src_ar64, ptr noundef %dst_ab64, i32 noundef %width) #0 { entry: %src_ar64.addr = alloca ptr, align 8 %dst_ab64.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i16, align 2 %g = alloca i16, align 2 %r = alloca i16, align 2 %a = alloca i16, align 2 store ptr %src_ar64, ptr %src_ar64.addr, align 8 store ptr %dst_ab64, ptr %dst_ab64.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 2, ptr %b) #10 %2 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 store i16 %3, ptr %b, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %g) #10 %4 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 1 %5 = load i16, ptr %arrayidx1, align 2 store i16 %5, ptr %g, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %r) #10 %6 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 2 %7 = load i16, ptr %arrayidx2, align 2 store i16 %7, ptr %r, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %a) #10 %8 = load ptr, ptr %src_ar64.addr, align 8 %arrayidx3 = getelementptr inbounds i16, ptr %8, i64 3 %9 = load i16, ptr %arrayidx3, align 2 store i16 %9, ptr %a, align 2 %10 = load i16, ptr %r, align 2 %11 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx4 = getelementptr inbounds i16, ptr %11, i64 0 store i16 %10, ptr %arrayidx4, align 2 %12 = load i16, ptr %g, align 2 %13 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %13, i64 1 store i16 %12, ptr %arrayidx5, align 2 %14 = load i16, ptr %b, align 2 %15 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx6 = getelementptr inbounds i16, ptr %15, i64 2 store i16 %14, ptr %arrayidx6, align 2 %16 = load i16, ptr %a, align 2 %17 = load ptr, ptr %dst_ab64.addr, align 8 %arrayidx7 = getelementptr inbounds i16, ptr %17, i64 3 store i16 %16, ptr %arrayidx7, align 2 %18 = load ptr, ptr %dst_ab64.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_ab64.addr, align 8 %19 = load ptr, ptr %src_ar64.addr, align 8 %add.ptr8 = getelementptr inbounds i16, ptr %19, i64 4 store ptr %add.ptr8, ptr %src_ar64.addr, align 8 call void @llvm.lifetime.end.p0(i64 2, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !32 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AR64ShuffleRow_C(ptr noundef %src_ar64, ptr noundef %dst_ar64, ptr noundef %shuffler, i32 noundef %width) #0 { entry: %src_ar64.addr = alloca ptr, align 8 %dst_ar64.addr = alloca ptr, align 8 %shuffler.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_ar64_16 = alloca ptr, align 8 %dst_ar64_16 = alloca ptr, align 8 %index0 = alloca i32, align 4 %index1 = alloca i32, align 4 %index2 = alloca i32, align 4 %index3 = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i16, align 2 %g = alloca i16, align 2 %r = alloca i16, align 2 %a = alloca i16, align 2 store ptr %src_ar64, ptr %src_ar64.addr, align 8 store ptr %dst_ar64, ptr %dst_ar64.addr, align 8 store ptr %shuffler, ptr %shuffler.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_ar64_16) #10 %0 = load ptr, ptr %src_ar64.addr, align 8 store ptr %0, ptr %src_ar64_16, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %dst_ar64_16) #10 %1 = load ptr, ptr %dst_ar64.addr, align 8 store ptr %1, ptr %dst_ar64_16, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %index0) #10 %2 = load ptr, ptr %shuffler.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %div = sdiv i32 %conv, 2 store i32 %div, ptr %index0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index1) #10 %4 = load ptr, ptr %shuffler.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %div3 = sdiv i32 %conv2, 2 store i32 %div3, ptr %index1, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index2) #10 %6 = load ptr, ptr %shuffler.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 4 %7 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %7 to i32 %div6 = sdiv i32 %conv5, 2 store i32 %div6, ptr %index2, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index3) #10 %8 = load ptr, ptr %shuffler.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %8, i64 6 %9 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %9 to i32 %div9 = sdiv i32 %conv8, 2 store i32 %div9, ptr %index3, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %10 = load i32, ptr %x, align 4 %11 = load i32, ptr %width.addr, align 4 %div10 = sdiv i32 %11, 2 %cmp = icmp slt i32 %10, %div10 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 2, ptr %b) #10 %12 = load ptr, ptr %src_ar64_16, align 8 %13 = load i32, ptr %index0, align 4 %idxprom = sext i32 %13 to i64 %arrayidx11 = getelementptr inbounds i16, ptr %12, i64 %idxprom %14 = load i16, ptr %arrayidx11, align 2 store i16 %14, ptr %b, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %g) #10 %15 = load ptr, ptr %src_ar64_16, align 8 %16 = load i32, ptr %index1, align 4 %idxprom12 = sext i32 %16 to i64 %arrayidx13 = getelementptr inbounds i16, ptr %15, i64 %idxprom12 %17 = load i16, ptr %arrayidx13, align 2 store i16 %17, ptr %g, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %r) #10 %18 = load ptr, ptr %src_ar64_16, align 8 %19 = load i32, ptr %index2, align 4 %idxprom14 = sext i32 %19 to i64 %arrayidx15 = getelementptr inbounds i16, ptr %18, i64 %idxprom14 %20 = load i16, ptr %arrayidx15, align 2 store i16 %20, ptr %r, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %a) #10 %21 = load ptr, ptr %src_ar64_16, align 8 %22 = load i32, ptr %index3, align 4 %idxprom16 = sext i32 %22 to i64 %arrayidx17 = getelementptr inbounds i16, ptr %21, i64 %idxprom16 %23 = load i16, ptr %arrayidx17, align 2 store i16 %23, ptr %a, align 2 %24 = load i16, ptr %b, align 2 %25 = load ptr, ptr %dst_ar64_16, align 8 %arrayidx18 = getelementptr inbounds i16, ptr %25, i64 0 store i16 %24, ptr %arrayidx18, align 2 %26 = load i16, ptr %g, align 2 %27 = load ptr, ptr %dst_ar64_16, align 8 %arrayidx19 = getelementptr inbounds i16, ptr %27, i64 1 store i16 %26, ptr %arrayidx19, align 2 %28 = load i16, ptr %r, align 2 %29 = load ptr, ptr %dst_ar64_16, align 8 %arrayidx20 = getelementptr inbounds i16, ptr %29, i64 2 store i16 %28, ptr %arrayidx20, align 2 %30 = load i16, ptr %a, align 2 %31 = load ptr, ptr %dst_ar64_16, align 8 %arrayidx21 = getelementptr inbounds i16, ptr %31, i64 3 store i16 %30, ptr %arrayidx21, align 2 %32 = load ptr, ptr %src_ar64_16, align 8 %add.ptr = getelementptr inbounds i16, ptr %32, i64 4 store ptr %add.ptr, ptr %src_ar64_16, align 8 %33 = load ptr, ptr %dst_ar64_16, align 8 %add.ptr22 = getelementptr inbounds i16, ptr %33, i64 4 store ptr %add.ptr22, ptr %dst_ar64_16, align 8 call void @llvm.lifetime.end.p0(i64 2, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 2, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %34 = load i32, ptr %x, align 4 %inc = add nsw i32 %34, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !33 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index3) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index2) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index0) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %dst_ar64_16) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_ar64_16) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToYRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 2 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !34 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %r, i8 noundef zeroext %g, i8 noundef zeroext %b) #4 { entry: %r.addr = alloca i8, align 1 %g.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store i8 %r, ptr %r.addr, align 1 store i8 %g, ptr %g.addr, align 1 store i8 %b, ptr %b.addr, align 1 %0 = load i8, ptr %r.addr, align 1 %conv = zext i8 %0 to i32 %mul = mul nsw i32 66, %conv %1 = load i8, ptr %g.addr, align 1 %conv1 = zext i8 %1 to i32 %mul2 = mul nsw i32 129, %conv1 %add = add nsw i32 %mul, %mul2 %2 = load i8, ptr %b.addr, align 1 %conv3 = zext i8 %2 to i32 %mul4 = mul nsw i32 25, %conv3 %add5 = add nsw i32 %add, %mul4 %add6 = add nsw i32 %add5, 4224 %shr = ashr i32 %add6, 8 %conv7 = trunc i32 %shr to i8 ret i8 %conv7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToUVRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 4 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 4 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 5 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 5 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 2 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 2 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 6 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 6 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !35 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 0 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 0 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 2 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 2 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %r, i8 noundef zeroext %g, i8 noundef zeroext %b) #4 { entry: %r.addr = alloca i8, align 1 %g.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store i8 %r, ptr %r.addr, align 1 store i8 %g, ptr %g.addr, align 1 store i8 %b, ptr %b.addr, align 1 %0 = load i8, ptr %b.addr, align 1 %conv = zext i8 %0 to i32 %mul = mul nsw i32 112, %conv %1 = load i8, ptr %g.addr, align 1 %conv1 = zext i8 %1 to i32 %mul2 = mul nsw i32 74, %conv1 %sub = sub nsw i32 %mul, %mul2 %2 = load i8, ptr %r.addr, align 1 %conv3 = zext i8 %2 to i32 %mul4 = mul nsw i32 38, %conv3 %sub5 = sub nsw i32 %sub, %mul4 %add = add nsw i32 %sub5, 32768 %shr = ashr i32 %add, 8 %conv6 = trunc i32 %shr to i8 ret i8 %conv6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %r, i8 noundef zeroext %g, i8 noundef zeroext %b) #4 { entry: %r.addr = alloca i8, align 1 %g.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store i8 %r, ptr %r.addr, align 1 store i8 %g, ptr %g.addr, align 1 store i8 %b, ptr %b.addr, align 1 %0 = load i8, ptr %r.addr, align 1 %conv = zext i8 %0 to i32 %mul = mul nsw i32 112, %conv %1 = load i8, ptr %g.addr, align 1 %conv1 = zext i8 %1 to i32 %mul2 = mul nsw i32 94, %conv1 %sub = sub nsw i32 %mul, %mul2 %2 = load i8, ptr %b.addr, align 1 %conv3 = zext i8 %2 to i32 %mul4 = mul nsw i32 18, %conv3 %sub5 = sub nsw i32 %sub, %mul4 %add = add nsw i32 %sub5, 32768 %shr = ashr i32 %add, 8 %conv6 = trunc i32 %shr to i8 ret i8 %conv6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @BGRAToYRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 3 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !36 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @BGRAToUVRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 3 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 3 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 7 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 7 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 6 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 6 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 1 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 1 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 5 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 5 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !37 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 3 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 3 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 2 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 2 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 1 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 1 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ABGRToYRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !38 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ABGRToUVRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 6 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 6 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 5 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 5 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 4 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 4 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !39 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 2 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 2 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 0 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 0 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGBAToYRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 3 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !40 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGBAToUVRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 5 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 5 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 6 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 6 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 3 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 3 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 7 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 7 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !41 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 1 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 1 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 2 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 2 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 3 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 3 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToYRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 2 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 3 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !42 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToUVRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 3 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 4 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 4 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 2 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 2 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 5 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 5 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 6 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 6 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !43 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 0 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 0 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 2 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 2 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToYRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 3 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !44 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToUVRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 5 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 5 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 4 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 4 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 3 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 3 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 6 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 6 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !45 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 2 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 2 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 0 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 0 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToYJRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 2 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !46 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %r, i8 noundef zeroext %g, i8 noundef zeroext %b) #4 { entry: %r.addr = alloca i8, align 1 %g.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store i8 %r, ptr %r.addr, align 1 store i8 %g, ptr %g.addr, align 1 store i8 %b, ptr %b.addr, align 1 %0 = load i8, ptr %r.addr, align 1 %conv = zext i8 %0 to i32 %mul = mul nsw i32 77, %conv %1 = load i8, ptr %g.addr, align 1 %conv1 = zext i8 %1 to i32 %mul2 = mul nsw i32 150, %conv1 %add = add nsw i32 %mul, %mul2 %2 = load i8, ptr %b.addr, align 1 %conv3 = zext i8 %2 to i32 %mul4 = mul nsw i32 29, %conv3 %add5 = add nsw i32 %add, %mul4 %add6 = add nsw i32 %add5, 128 %shr = ashr i32 %add6, 8 %conv7 = trunc i32 %shr to i8 ret i8 %conv7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToUVJRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 4 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 4 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 5 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 5 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 2 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 2 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 6 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 6 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !47 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 0 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 0 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 2 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 2 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %r, i8 noundef zeroext %g, i8 noundef zeroext %b) #4 { entry: %r.addr = alloca i8, align 1 %g.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store i8 %r, ptr %r.addr, align 1 store i8 %g, ptr %g.addr, align 1 store i8 %b, ptr %b.addr, align 1 %0 = load i8, ptr %b.addr, align 1 %conv = zext i8 %0 to i32 %mul = mul nsw i32 127, %conv %1 = load i8, ptr %g.addr, align 1 %conv1 = zext i8 %1 to i32 %mul2 = mul nsw i32 84, %conv1 %sub = sub nsw i32 %mul, %mul2 %2 = load i8, ptr %r.addr, align 1 %conv3 = zext i8 %2 to i32 %mul4 = mul nsw i32 43, %conv3 %sub5 = sub nsw i32 %sub, %mul4 %add = add nsw i32 %sub5, 32896 %shr = ashr i32 %add, 8 %conv6 = trunc i32 %shr to i8 ret i8 %conv6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %r, i8 noundef zeroext %g, i8 noundef zeroext %b) #4 { entry: %r.addr = alloca i8, align 1 %g.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store i8 %r, ptr %r.addr, align 1 store i8 %g, ptr %g.addr, align 1 store i8 %b, ptr %b.addr, align 1 %0 = load i8, ptr %r.addr, align 1 %conv = zext i8 %0 to i32 %mul = mul nsw i32 127, %conv %1 = load i8, ptr %g.addr, align 1 %conv1 = zext i8 %1 to i32 %mul2 = mul nsw i32 107, %conv1 %sub = sub nsw i32 %mul, %mul2 %2 = load i8, ptr %b.addr, align 1 %conv3 = zext i8 %2 to i32 %mul4 = mul nsw i32 20, %conv3 %sub5 = sub nsw i32 %sub, %mul4 %add = add nsw i32 %sub5, 32896 %shr = ashr i32 %add, 8 %conv6 = trunc i32 %shr to i8 ret i8 %conv6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ABGRToYJRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !48 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ABGRToUVJRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 6 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 6 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 5 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 5 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 4 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 4 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !49 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 2 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 2 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 0 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 0 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGBAToYJRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 3 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !50 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGBAToUVJRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 5 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 5 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 6 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 6 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 3 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 3 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 7 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 7 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 8 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 8 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !51 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 1 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 1 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 2 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 2 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 3 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 3 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToYJRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 2 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 3 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !52 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToUVJRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 3 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 4 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 4 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 2 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 2 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 5 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 5 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 6 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 6 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !53 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 0 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 0 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 2 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 2 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToYJRow_C(ptr noundef %src_rgb, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) %8 = load ptr, ptr %dst_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 0 store i8 %call, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 3 store ptr %add.ptr, ptr %src_rgb.addr, align 8 %10 = load ptr, ptr %dst_y.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr4, ptr %dst_y.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !54 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToUVJRow_C(ptr noundef %src_rgb, i32 noundef %src_stride_rgb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %src_stride_rgb.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %src_rgb1 = alloca ptr, align 8 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %ab59 = alloca i8, align 1 %ag68 = alloca i8, align 1 %ar77 = alloca i8, align 1 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store i32 %src_stride_rgb, ptr %src_stride_rgb.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_rgb1) #10 %0 = load ptr, ptr %src_rgb.addr, align 8 %1 = load i32, ptr %src_stride_rgb.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %4 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load ptr, ptr %src_rgb1, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %7 to i32 %add = add nsw i32 %conv, %conv2 %add3 = add nsw i32 %add, 1 %shr = ashr i32 %add3, 1 %8 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 5 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load ptr, ptr %src_rgb1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 5 %11 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %11 to i32 %add8 = add nsw i32 %conv5, %conv7 %add9 = add nsw i32 %add8, 1 %shr10 = ashr i32 %add9, 1 %add11 = add nsw i32 %shr, %shr10 %add12 = add nsw i32 %add11, 1 %shr13 = ashr i32 %add12, 1 %conv14 = trunc i32 %shr13 to i8 store i8 %conv14, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %12 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %13 to i32 %14 = load ptr, ptr %src_rgb1, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %add19 = add nsw i32 %conv16, %conv18 %add20 = add nsw i32 %add19, 1 %shr21 = ashr i32 %add20, 1 %16 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %16, i64 4 %17 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %17 to i32 %18 = load ptr, ptr %src_rgb1, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %18, i64 4 %19 = load i8, ptr %arrayidx24, align 1 %conv25 = zext i8 %19 to i32 %add26 = add nsw i32 %conv23, %conv25 %add27 = add nsw i32 %add26, 1 %shr28 = ashr i32 %add27, 1 %add29 = add nsw i32 %shr21, %shr28 %add30 = add nsw i32 %add29, 1 %shr31 = ashr i32 %add30, 1 %conv32 = trunc i32 %shr31 to i8 store i8 %conv32, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %20 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %21 to i32 %22 = load ptr, ptr %src_rgb1, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %add37 = add nsw i32 %conv34, %conv36 %add38 = add nsw i32 %add37, 1 %shr39 = ashr i32 %add38, 1 %24 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %24, i64 3 %25 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %25 to i32 %26 = load ptr, ptr %src_rgb1, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 3 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %add44 = add nsw i32 %conv41, %conv43 %add45 = add nsw i32 %add44, 1 %shr46 = ashr i32 %add45, 1 %add47 = add nsw i32 %shr39, %shr46 %add48 = add nsw i32 %add47, 1 %shr49 = ashr i32 %add48, 1 %conv50 = trunc i32 %shr49 to i8 store i8 %conv50, ptr %ar, align 1 %28 = load i8, ptr %ar, align 1 %29 = load i8, ptr %ag, align 1 %30 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %28, i8 noundef zeroext %29, i8 noundef zeroext %30) %31 = load ptr, ptr %dst_u.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %31, i64 0 store i8 %call, ptr %arrayidx51, align 1 %32 = load i8, ptr %ar, align 1 %33 = load i8, ptr %ag, align 1 %34 = load i8, ptr %ab, align 1 %call52 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %32, i8 noundef zeroext %33, i8 noundef zeroext %34) %35 = load ptr, ptr %dst_v.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %35, i64 0 store i8 %call52, ptr %arrayidx53, align 1 %36 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %36, i64 6 store ptr %add.ptr54, ptr %src_rgb.addr, align 8 %37 = load ptr, ptr %src_rgb1, align 8 %add.ptr55 = getelementptr inbounds i8, ptr %37, i64 6 store ptr %add.ptr55, ptr %src_rgb1, align 8 %38 = load ptr, ptr %dst_u.addr, align 8 %add.ptr56 = getelementptr inbounds i8, ptr %38, i64 1 store ptr %add.ptr56, ptr %dst_u.addr, align 8 %39 = load ptr, ptr %dst_v.addr, align 8 %add.ptr57 = getelementptr inbounds i8, ptr %39, i64 1 store ptr %add.ptr57, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %x, align 4 %add58 = add nsw i32 %40, 2 store i32 %add58, ptr %x, align 4 br label %for.cond, !llvm.loop !55 for.end: ; preds = %for.cond %41 = load i32, ptr %width.addr, align 4 %and = and i32 %41, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %ab59) #10 %42 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx60 = getelementptr inbounds i8, ptr %42, i64 2 %43 = load i8, ptr %arrayidx60, align 1 %conv61 = zext i8 %43 to i32 %44 = load ptr, ptr %src_rgb1, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %44, i64 2 %45 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %45 to i32 %add64 = add nsw i32 %conv61, %conv63 %add65 = add nsw i32 %add64, 1 %shr66 = ashr i32 %add65, 1 %conv67 = trunc i32 %shr66 to i8 store i8 %conv67, ptr %ab59, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag68) #10 %46 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx69, align 1 %conv70 = zext i8 %47 to i32 %48 = load ptr, ptr %src_rgb1, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %48, i64 1 %49 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %49 to i32 %add73 = add nsw i32 %conv70, %conv72 %add74 = add nsw i32 %add73, 1 %shr75 = ashr i32 %add74, 1 %conv76 = trunc i32 %shr75 to i8 store i8 %conv76, ptr %ag68, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar77) #10 %50 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %50, i64 0 %51 = load i8, ptr %arrayidx78, align 1 %conv79 = zext i8 %51 to i32 %52 = load ptr, ptr %src_rgb1, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %52, i64 0 %53 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %53 to i32 %add82 = add nsw i32 %conv79, %conv81 %add83 = add nsw i32 %add82, 1 %shr84 = ashr i32 %add83, 1 %conv85 = trunc i32 %shr84 to i8 store i8 %conv85, ptr %ar77, align 1 %54 = load i8, ptr %ar77, align 1 %55 = load i8, ptr %ag68, align 1 %56 = load i8, ptr %ab59, align 1 %call86 = call noundef zeroext i8 @_ZN6libyuvL7RGBToUJEhhh(i8 noundef zeroext %54, i8 noundef zeroext %55, i8 noundef zeroext %56) %57 = load ptr, ptr %dst_u.addr, align 8 %arrayidx87 = getelementptr inbounds i8, ptr %57, i64 0 store i8 %call86, ptr %arrayidx87, align 1 %58 = load i8, ptr %ar77, align 1 %59 = load i8, ptr %ag68, align 1 %60 = load i8, ptr %ab59, align 1 %call88 = call noundef zeroext i8 @_ZN6libyuvL7RGBToVJEhhh(i8 noundef zeroext %58, i8 noundef zeroext %59, i8 noundef zeroext %60) %61 = load ptr, ptr %dst_v.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %61, i64 0 store i8 %call88, ptr %arrayidx89, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar77) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag68) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab59) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_rgb1) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB565ToYRow_C(ptr noundef %src_rgb565, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_rgb565.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_rgb565, ptr %src_rgb565.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %and = and i32 %conv, 31 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr = ashr i32 %conv3, 5 %6 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %7 to i32 %and6 = and i32 %conv5, 7 %shl = shl i32 %and6, 3 %or = or i32 %shr, %shl %conv7 = trunc i32 %or to i8 store i8 %conv7, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %8 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %9 to i32 %shr10 = ashr i32 %conv9, 3 %conv11 = trunc i32 %shr10 to i8 store i8 %conv11, ptr %r, align 1 %10 = load i8, ptr %b, align 1 %conv12 = zext i8 %10 to i32 %shl13 = shl i32 %conv12, 3 %11 = load i8, ptr %b, align 1 %conv14 = zext i8 %11 to i32 %shr15 = ashr i32 %conv14, 2 %or16 = or i32 %shl13, %shr15 %conv17 = trunc i32 %or16 to i8 store i8 %conv17, ptr %b, align 1 %12 = load i8, ptr %g, align 1 %conv18 = zext i8 %12 to i32 %shl19 = shl i32 %conv18, 2 %13 = load i8, ptr %g, align 1 %conv20 = zext i8 %13 to i32 %shr21 = ashr i32 %conv20, 4 %or22 = or i32 %shl19, %shr21 %conv23 = trunc i32 %or22 to i8 store i8 %conv23, ptr %g, align 1 %14 = load i8, ptr %r, align 1 %conv24 = zext i8 %14 to i32 %shl25 = shl i32 %conv24, 3 %15 = load i8, ptr %r, align 1 %conv26 = zext i8 %15 to i32 %shr27 = ashr i32 %conv26, 2 %or28 = or i32 %shl25, %shr27 %conv29 = trunc i32 %or28 to i8 store i8 %conv29, ptr %r, align 1 %16 = load i8, ptr %r, align 1 %17 = load i8, ptr %g, align 1 %18 = load i8, ptr %b, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %16, i8 noundef zeroext %17, i8 noundef zeroext %18) %19 = load ptr, ptr %dst_y.addr, align 8 %arrayidx30 = getelementptr inbounds i8, ptr %19, i64 0 store i8 %call, ptr %arrayidx30, align 1 %20 = load ptr, ptr %src_rgb565.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 2 store ptr %add.ptr, ptr %src_rgb565.addr, align 8 %21 = load ptr, ptr %dst_y.addr, align 8 %add.ptr31 = getelementptr inbounds i8, ptr %21, i64 1 store ptr %add.ptr31, ptr %dst_y.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %22 = load i32, ptr %x, align 4 %inc = add nsw i32 %22, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !56 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGB1555ToYRow_C(ptr noundef %src_argb1555, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_argb1555.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_argb1555, ptr %src_argb1555.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %and = and i32 %conv, 31 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr = ashr i32 %conv3, 5 %6 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %7 to i32 %and6 = and i32 %conv5, 3 %shl = shl i32 %and6, 3 %or = or i32 %shr, %shl %conv7 = trunc i32 %or to i8 store i8 %conv7, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %8 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %9 to i32 %and10 = and i32 %conv9, 124 %shr11 = ashr i32 %and10, 2 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r, align 1 %10 = load i8, ptr %b, align 1 %conv13 = zext i8 %10 to i32 %shl14 = shl i32 %conv13, 3 %11 = load i8, ptr %b, align 1 %conv15 = zext i8 %11 to i32 %shr16 = ashr i32 %conv15, 2 %or17 = or i32 %shl14, %shr16 %conv18 = trunc i32 %or17 to i8 store i8 %conv18, ptr %b, align 1 %12 = load i8, ptr %g, align 1 %conv19 = zext i8 %12 to i32 %shl20 = shl i32 %conv19, 3 %13 = load i8, ptr %g, align 1 %conv21 = zext i8 %13 to i32 %shr22 = ashr i32 %conv21, 2 %or23 = or i32 %shl20, %shr22 %conv24 = trunc i32 %or23 to i8 store i8 %conv24, ptr %g, align 1 %14 = load i8, ptr %r, align 1 %conv25 = zext i8 %14 to i32 %shl26 = shl i32 %conv25, 3 %15 = load i8, ptr %r, align 1 %conv27 = zext i8 %15 to i32 %shr28 = ashr i32 %conv27, 2 %or29 = or i32 %shl26, %shr28 %conv30 = trunc i32 %or29 to i8 store i8 %conv30, ptr %r, align 1 %16 = load i8, ptr %r, align 1 %17 = load i8, ptr %g, align 1 %18 = load i8, ptr %b, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %16, i8 noundef zeroext %17, i8 noundef zeroext %18) %19 = load ptr, ptr %dst_y.addr, align 8 %arrayidx31 = getelementptr inbounds i8, ptr %19, i64 0 store i8 %call, ptr %arrayidx31, align 1 %20 = load ptr, ptr %src_argb1555.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 2 store ptr %add.ptr, ptr %src_argb1555.addr, align 8 %21 = load ptr, ptr %dst_y.addr, align 8 %add.ptr32 = getelementptr inbounds i8, ptr %21, i64 1 store ptr %add.ptr32, ptr %dst_y.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %22 = load i32, ptr %x, align 4 %inc = add nsw i32 %22, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !57 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGB4444ToYRow_C(ptr noundef %src_argb4444, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_argb4444.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_argb4444, ptr %src_argb4444.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %2 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %and = and i32 %conv, 15 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %4 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %5 to i32 %shr = ashr i32 %conv3, 4 %conv4 = trunc i32 %shr to i8 store i8 %conv4, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %6 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %7 to i32 %and7 = and i32 %conv6, 15 %conv8 = trunc i32 %and7 to i8 store i8 %conv8, ptr %r, align 1 %8 = load i8, ptr %b, align 1 %conv9 = zext i8 %8 to i32 %shl = shl i32 %conv9, 4 %9 = load i8, ptr %b, align 1 %conv10 = zext i8 %9 to i32 %or = or i32 %shl, %conv10 %conv11 = trunc i32 %or to i8 store i8 %conv11, ptr %b, align 1 %10 = load i8, ptr %g, align 1 %conv12 = zext i8 %10 to i32 %shl13 = shl i32 %conv12, 4 %11 = load i8, ptr %g, align 1 %conv14 = zext i8 %11 to i32 %or15 = or i32 %shl13, %conv14 %conv16 = trunc i32 %or15 to i8 store i8 %conv16, ptr %g, align 1 %12 = load i8, ptr %r, align 1 %conv17 = zext i8 %12 to i32 %shl18 = shl i32 %conv17, 4 %13 = load i8, ptr %r, align 1 %conv19 = zext i8 %13 to i32 %or20 = or i32 %shl18, %conv19 %conv21 = trunc i32 %or20 to i8 store i8 %conv21, ptr %r, align 1 %14 = load i8, ptr %r, align 1 %15 = load i8, ptr %g, align 1 %16 = load i8, ptr %b, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToYEhhh(i8 noundef zeroext %14, i8 noundef zeroext %15, i8 noundef zeroext %16) %17 = load ptr, ptr %dst_y.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %17, i64 0 store i8 %call, ptr %arrayidx22, align 1 %18 = load ptr, ptr %src_argb4444.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 2 store ptr %add.ptr, ptr %src_argb4444.addr, align 8 %19 = load ptr, ptr %dst_y.addr, align 8 %add.ptr23 = getelementptr inbounds i8, ptr %19, i64 1 store ptr %add.ptr23, ptr %dst_y.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !58 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB565ToUVRow_C(ptr noundef %src_rgb565, i32 noundef %src_stride_rgb565, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_rgb565.addr = alloca ptr, align 8 %src_stride_rgb565.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %next_rgb565 = alloca ptr, align 8 %x = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %b2 = alloca i8, align 1 %g2 = alloca i8, align 1 %r2 = alloca i8, align 1 %b3 = alloca i8, align 1 %g3 = alloca i8, align 1 %r3 = alloca i8, align 1 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %b0185 = alloca i8, align 1 %g0190 = alloca i8, align 1 %r0200 = alloca i8, align 1 %b2205 = alloca i8, align 1 %g2210 = alloca i8, align 1 %r2220 = alloca i8, align 1 %ab261 = alloca i8, align 1 %ag268 = alloca i8, align 1 %ar275 = alloca i8, align 1 store ptr %src_rgb565, ptr %src_rgb565.addr, align 8 store i32 %src_stride_rgb565, ptr %src_stride_rgb565.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %next_rgb565) #10 %0 = load ptr, ptr %src_rgb565.addr, align 8 %1 = load i32, ptr %src_stride_rgb565.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %next_rgb565, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %4 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %and = and i32 %conv, 31 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %6 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 %shr = ashr i32 %conv3, 5 %8 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %and6 = and i32 %conv5, 7 %shl = shl i32 %and6, 3 %or = or i32 %shr, %shl %conv7 = trunc i32 %or to i8 store i8 %conv7, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %10 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %10, i64 1 %11 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %11 to i32 %shr10 = ashr i32 %conv9, 3 %conv11 = trunc i32 %shr10 to i8 store i8 %conv11, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %12 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx12, align 1 %conv13 = zext i8 %13 to i32 %and14 = and i32 %conv13, 31 %conv15 = trunc i32 %and14 to i8 store i8 %conv15, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %14 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx16, align 1 %conv17 = zext i8 %15 to i32 %shr18 = ashr i32 %conv17, 5 %16 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %16, i64 3 %17 = load i8, ptr %arrayidx19, align 1 %conv20 = zext i8 %17 to i32 %and21 = and i32 %conv20, 7 %shl22 = shl i32 %and21, 3 %or23 = or i32 %shr18, %shl22 %conv24 = trunc i32 %or23 to i8 store i8 %conv24, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %18 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx25 = getelementptr inbounds i8, ptr %18, i64 3 %19 = load i8, ptr %arrayidx25, align 1 %conv26 = zext i8 %19 to i32 %shr27 = ashr i32 %conv26, 3 %conv28 = trunc i32 %shr27 to i8 store i8 %conv28, ptr %r1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b2) #10 %20 = load ptr, ptr %next_rgb565, align 8 %arrayidx29 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx29, align 1 %conv30 = zext i8 %21 to i32 %and31 = and i32 %conv30, 31 %conv32 = trunc i32 %and31 to i8 store i8 %conv32, ptr %b2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g2) #10 %22 = load ptr, ptr %next_rgb565, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %23 to i32 %shr35 = ashr i32 %conv34, 5 %24 = load ptr, ptr %next_rgb565, align 8 %arrayidx36 = getelementptr inbounds i8, ptr %24, i64 1 %25 = load i8, ptr %arrayidx36, align 1 %conv37 = zext i8 %25 to i32 %and38 = and i32 %conv37, 7 %shl39 = shl i32 %and38, 3 %or40 = or i32 %shr35, %shl39 %conv41 = trunc i32 %or40 to i8 store i8 %conv41, ptr %g2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r2) #10 %26 = load ptr, ptr %next_rgb565, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %26, i64 1 %27 = load i8, ptr %arrayidx42, align 1 %conv43 = zext i8 %27 to i32 %shr44 = ashr i32 %conv43, 3 %conv45 = trunc i32 %shr44 to i8 store i8 %conv45, ptr %r2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b3) #10 %28 = load ptr, ptr %next_rgb565, align 8 %arrayidx46 = getelementptr inbounds i8, ptr %28, i64 2 %29 = load i8, ptr %arrayidx46, align 1 %conv47 = zext i8 %29 to i32 %and48 = and i32 %conv47, 31 %conv49 = trunc i32 %and48 to i8 store i8 %conv49, ptr %b3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g3) #10 %30 = load ptr, ptr %next_rgb565, align 8 %arrayidx50 = getelementptr inbounds i8, ptr %30, i64 2 %31 = load i8, ptr %arrayidx50, align 1 %conv51 = zext i8 %31 to i32 %shr52 = ashr i32 %conv51, 5 %32 = load ptr, ptr %next_rgb565, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %32, i64 3 %33 = load i8, ptr %arrayidx53, align 1 %conv54 = zext i8 %33 to i32 %and55 = and i32 %conv54, 7 %shl56 = shl i32 %and55, 3 %or57 = or i32 %shr52, %shl56 %conv58 = trunc i32 %or57 to i8 store i8 %conv58, ptr %g3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r3) #10 %34 = load ptr, ptr %next_rgb565, align 8 %arrayidx59 = getelementptr inbounds i8, ptr %34, i64 3 %35 = load i8, ptr %arrayidx59, align 1 %conv60 = zext i8 %35 to i32 %shr61 = ashr i32 %conv60, 3 %conv62 = trunc i32 %shr61 to i8 store i8 %conv62, ptr %r3, align 1 %36 = load i8, ptr %b0, align 1 %conv63 = zext i8 %36 to i32 %shl64 = shl i32 %conv63, 3 %37 = load i8, ptr %b0, align 1 %conv65 = zext i8 %37 to i32 %shr66 = ashr i32 %conv65, 2 %or67 = or i32 %shl64, %shr66 %conv68 = trunc i32 %or67 to i8 store i8 %conv68, ptr %b0, align 1 %38 = load i8, ptr %g0, align 1 %conv69 = zext i8 %38 to i32 %shl70 = shl i32 %conv69, 2 %39 = load i8, ptr %g0, align 1 %conv71 = zext i8 %39 to i32 %shr72 = ashr i32 %conv71, 4 %or73 = or i32 %shl70, %shr72 %conv74 = trunc i32 %or73 to i8 store i8 %conv74, ptr %g0, align 1 %40 = load i8, ptr %r0, align 1 %conv75 = zext i8 %40 to i32 %shl76 = shl i32 %conv75, 3 %41 = load i8, ptr %r0, align 1 %conv77 = zext i8 %41 to i32 %shr78 = ashr i32 %conv77, 2 %or79 = or i32 %shl76, %shr78 %conv80 = trunc i32 %or79 to i8 store i8 %conv80, ptr %r0, align 1 %42 = load i8, ptr %b1, align 1 %conv81 = zext i8 %42 to i32 %shl82 = shl i32 %conv81, 3 %43 = load i8, ptr %b1, align 1 %conv83 = zext i8 %43 to i32 %shr84 = ashr i32 %conv83, 2 %or85 = or i32 %shl82, %shr84 %conv86 = trunc i32 %or85 to i8 store i8 %conv86, ptr %b1, align 1 %44 = load i8, ptr %g1, align 1 %conv87 = zext i8 %44 to i32 %shl88 = shl i32 %conv87, 2 %45 = load i8, ptr %g1, align 1 %conv89 = zext i8 %45 to i32 %shr90 = ashr i32 %conv89, 4 %or91 = or i32 %shl88, %shr90 %conv92 = trunc i32 %or91 to i8 store i8 %conv92, ptr %g1, align 1 %46 = load i8, ptr %r1, align 1 %conv93 = zext i8 %46 to i32 %shl94 = shl i32 %conv93, 3 %47 = load i8, ptr %r1, align 1 %conv95 = zext i8 %47 to i32 %shr96 = ashr i32 %conv95, 2 %or97 = or i32 %shl94, %shr96 %conv98 = trunc i32 %or97 to i8 store i8 %conv98, ptr %r1, align 1 %48 = load i8, ptr %b2, align 1 %conv99 = zext i8 %48 to i32 %shl100 = shl i32 %conv99, 3 %49 = load i8, ptr %b2, align 1 %conv101 = zext i8 %49 to i32 %shr102 = ashr i32 %conv101, 2 %or103 = or i32 %shl100, %shr102 %conv104 = trunc i32 %or103 to i8 store i8 %conv104, ptr %b2, align 1 %50 = load i8, ptr %g2, align 1 %conv105 = zext i8 %50 to i32 %shl106 = shl i32 %conv105, 2 %51 = load i8, ptr %g2, align 1 %conv107 = zext i8 %51 to i32 %shr108 = ashr i32 %conv107, 4 %or109 = or i32 %shl106, %shr108 %conv110 = trunc i32 %or109 to i8 store i8 %conv110, ptr %g2, align 1 %52 = load i8, ptr %r2, align 1 %conv111 = zext i8 %52 to i32 %shl112 = shl i32 %conv111, 3 %53 = load i8, ptr %r2, align 1 %conv113 = zext i8 %53 to i32 %shr114 = ashr i32 %conv113, 2 %or115 = or i32 %shl112, %shr114 %conv116 = trunc i32 %or115 to i8 store i8 %conv116, ptr %r2, align 1 %54 = load i8, ptr %b3, align 1 %conv117 = zext i8 %54 to i32 %shl118 = shl i32 %conv117, 3 %55 = load i8, ptr %b3, align 1 %conv119 = zext i8 %55 to i32 %shr120 = ashr i32 %conv119, 2 %or121 = or i32 %shl118, %shr120 %conv122 = trunc i32 %or121 to i8 store i8 %conv122, ptr %b3, align 1 %56 = load i8, ptr %g3, align 1 %conv123 = zext i8 %56 to i32 %shl124 = shl i32 %conv123, 2 %57 = load i8, ptr %g3, align 1 %conv125 = zext i8 %57 to i32 %shr126 = ashr i32 %conv125, 4 %or127 = or i32 %shl124, %shr126 %conv128 = trunc i32 %or127 to i8 store i8 %conv128, ptr %g3, align 1 %58 = load i8, ptr %r3, align 1 %conv129 = zext i8 %58 to i32 %shl130 = shl i32 %conv129, 3 %59 = load i8, ptr %r3, align 1 %conv131 = zext i8 %59 to i32 %shr132 = ashr i32 %conv131, 2 %or133 = or i32 %shl130, %shr132 %conv134 = trunc i32 %or133 to i8 store i8 %conv134, ptr %r3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %60 = load i8, ptr %b0, align 1 %conv135 = zext i8 %60 to i32 %61 = load i8, ptr %b2, align 1 %conv136 = zext i8 %61 to i32 %add = add nsw i32 %conv135, %conv136 %add137 = add nsw i32 %add, 1 %shr138 = ashr i32 %add137, 1 %62 = load i8, ptr %b1, align 1 %conv139 = zext i8 %62 to i32 %63 = load i8, ptr %b3, align 1 %conv140 = zext i8 %63 to i32 %add141 = add nsw i32 %conv139, %conv140 %add142 = add nsw i32 %add141, 1 %shr143 = ashr i32 %add142, 1 %add144 = add nsw i32 %shr138, %shr143 %add145 = add nsw i32 %add144, 1 %shr146 = ashr i32 %add145, 1 %conv147 = trunc i32 %shr146 to i8 store i8 %conv147, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %64 = load i8, ptr %g0, align 1 %conv148 = zext i8 %64 to i32 %65 = load i8, ptr %g2, align 1 %conv149 = zext i8 %65 to i32 %add150 = add nsw i32 %conv148, %conv149 %add151 = add nsw i32 %add150, 1 %shr152 = ashr i32 %add151, 1 %66 = load i8, ptr %g1, align 1 %conv153 = zext i8 %66 to i32 %67 = load i8, ptr %g3, align 1 %conv154 = zext i8 %67 to i32 %add155 = add nsw i32 %conv153, %conv154 %add156 = add nsw i32 %add155, 1 %shr157 = ashr i32 %add156, 1 %add158 = add nsw i32 %shr152, %shr157 %add159 = add nsw i32 %add158, 1 %shr160 = ashr i32 %add159, 1 %conv161 = trunc i32 %shr160 to i8 store i8 %conv161, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %68 = load i8, ptr %r0, align 1 %conv162 = zext i8 %68 to i32 %69 = load i8, ptr %r2, align 1 %conv163 = zext i8 %69 to i32 %add164 = add nsw i32 %conv162, %conv163 %add165 = add nsw i32 %add164, 1 %shr166 = ashr i32 %add165, 1 %70 = load i8, ptr %r1, align 1 %conv167 = zext i8 %70 to i32 %71 = load i8, ptr %r3, align 1 %conv168 = zext i8 %71 to i32 %add169 = add nsw i32 %conv167, %conv168 %add170 = add nsw i32 %add169, 1 %shr171 = ashr i32 %add170, 1 %add172 = add nsw i32 %shr166, %shr171 %add173 = add nsw i32 %add172, 1 %shr174 = ashr i32 %add173, 1 %conv175 = trunc i32 %shr174 to i8 store i8 %conv175, ptr %ar, align 1 %72 = load i8, ptr %ar, align 1 %73 = load i8, ptr %ag, align 1 %74 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %72, i8 noundef zeroext %73, i8 noundef zeroext %74) %75 = load ptr, ptr %dst_u.addr, align 8 %arrayidx176 = getelementptr inbounds i8, ptr %75, i64 0 store i8 %call, ptr %arrayidx176, align 1 %76 = load i8, ptr %ar, align 1 %77 = load i8, ptr %ag, align 1 %78 = load i8, ptr %ab, align 1 %call177 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %76, i8 noundef zeroext %77, i8 noundef zeroext %78) %79 = load ptr, ptr %dst_v.addr, align 8 %arrayidx178 = getelementptr inbounds i8, ptr %79, i64 0 store i8 %call177, ptr %arrayidx178, align 1 %80 = load ptr, ptr %src_rgb565.addr, align 8 %add.ptr179 = getelementptr inbounds i8, ptr %80, i64 4 store ptr %add.ptr179, ptr %src_rgb565.addr, align 8 %81 = load ptr, ptr %next_rgb565, align 8 %add.ptr180 = getelementptr inbounds i8, ptr %81, i64 4 store ptr %add.ptr180, ptr %next_rgb565, align 8 %82 = load ptr, ptr %dst_u.addr, align 8 %add.ptr181 = getelementptr inbounds i8, ptr %82, i64 1 store ptr %add.ptr181, ptr %dst_u.addr, align 8 %83 = load ptr, ptr %dst_v.addr, align 8 %add.ptr182 = getelementptr inbounds i8, ptr %83, i64 1 store ptr %add.ptr182, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %84 = load i32, ptr %x, align 4 %add183 = add nsw i32 %84, 2 store i32 %add183, ptr %x, align 4 br label %for.cond, !llvm.loop !59 for.end: ; preds = %for.cond %85 = load i32, ptr %width.addr, align 4 %and184 = and i32 %85, 1 %tobool = icmp ne i32 %and184, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %b0185) #10 %86 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx186 = getelementptr inbounds i8, ptr %86, i64 0 %87 = load i8, ptr %arrayidx186, align 1 %conv187 = zext i8 %87 to i32 %and188 = and i32 %conv187, 31 %conv189 = trunc i32 %and188 to i8 store i8 %conv189, ptr %b0185, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0190) #10 %88 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx191 = getelementptr inbounds i8, ptr %88, i64 0 %89 = load i8, ptr %arrayidx191, align 1 %conv192 = zext i8 %89 to i32 %shr193 = ashr i32 %conv192, 5 %90 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx194 = getelementptr inbounds i8, ptr %90, i64 1 %91 = load i8, ptr %arrayidx194, align 1 %conv195 = zext i8 %91 to i32 %and196 = and i32 %conv195, 7 %shl197 = shl i32 %and196, 3 %or198 = or i32 %shr193, %shl197 %conv199 = trunc i32 %or198 to i8 store i8 %conv199, ptr %g0190, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0200) #10 %92 = load ptr, ptr %src_rgb565.addr, align 8 %arrayidx201 = getelementptr inbounds i8, ptr %92, i64 1 %93 = load i8, ptr %arrayidx201, align 1 %conv202 = zext i8 %93 to i32 %shr203 = ashr i32 %conv202, 3 %conv204 = trunc i32 %shr203 to i8 store i8 %conv204, ptr %r0200, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b2205) #10 %94 = load ptr, ptr %next_rgb565, align 8 %arrayidx206 = getelementptr inbounds i8, ptr %94, i64 0 %95 = load i8, ptr %arrayidx206, align 1 %conv207 = zext i8 %95 to i32 %and208 = and i32 %conv207, 31 %conv209 = trunc i32 %and208 to i8 store i8 %conv209, ptr %b2205, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g2210) #10 %96 = load ptr, ptr %next_rgb565, align 8 %arrayidx211 = getelementptr inbounds i8, ptr %96, i64 0 %97 = load i8, ptr %arrayidx211, align 1 %conv212 = zext i8 %97 to i32 %shr213 = ashr i32 %conv212, 5 %98 = load ptr, ptr %next_rgb565, align 8 %arrayidx214 = getelementptr inbounds i8, ptr %98, i64 1 %99 = load i8, ptr %arrayidx214, align 1 %conv215 = zext i8 %99 to i32 %and216 = and i32 %conv215, 7 %shl217 = shl i32 %and216, 3 %or218 = or i32 %shr213, %shl217 %conv219 = trunc i32 %or218 to i8 store i8 %conv219, ptr %g2210, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r2220) #10 %100 = load ptr, ptr %next_rgb565, align 8 %arrayidx221 = getelementptr inbounds i8, ptr %100, i64 1 %101 = load i8, ptr %arrayidx221, align 1 %conv222 = zext i8 %101 to i32 %shr223 = ashr i32 %conv222, 3 %conv224 = trunc i32 %shr223 to i8 store i8 %conv224, ptr %r2220, align 1 %102 = load i8, ptr %b0185, align 1 %conv225 = zext i8 %102 to i32 %shl226 = shl i32 %conv225, 3 %103 = load i8, ptr %b0185, align 1 %conv227 = zext i8 %103 to i32 %shr228 = ashr i32 %conv227, 2 %or229 = or i32 %shl226, %shr228 %conv230 = trunc i32 %or229 to i8 store i8 %conv230, ptr %b0185, align 1 %104 = load i8, ptr %g0190, align 1 %conv231 = zext i8 %104 to i32 %shl232 = shl i32 %conv231, 2 %105 = load i8, ptr %g0190, align 1 %conv233 = zext i8 %105 to i32 %shr234 = ashr i32 %conv233, 4 %or235 = or i32 %shl232, %shr234 %conv236 = trunc i32 %or235 to i8 store i8 %conv236, ptr %g0190, align 1 %106 = load i8, ptr %r0200, align 1 %conv237 = zext i8 %106 to i32 %shl238 = shl i32 %conv237, 3 %107 = load i8, ptr %r0200, align 1 %conv239 = zext i8 %107 to i32 %shr240 = ashr i32 %conv239, 2 %or241 = or i32 %shl238, %shr240 %conv242 = trunc i32 %or241 to i8 store i8 %conv242, ptr %r0200, align 1 %108 = load i8, ptr %b2205, align 1 %conv243 = zext i8 %108 to i32 %shl244 = shl i32 %conv243, 3 %109 = load i8, ptr %b2205, align 1 %conv245 = zext i8 %109 to i32 %shr246 = ashr i32 %conv245, 2 %or247 = or i32 %shl244, %shr246 %conv248 = trunc i32 %or247 to i8 store i8 %conv248, ptr %b2205, align 1 %110 = load i8, ptr %g2210, align 1 %conv249 = zext i8 %110 to i32 %shl250 = shl i32 %conv249, 2 %111 = load i8, ptr %g2210, align 1 %conv251 = zext i8 %111 to i32 %shr252 = ashr i32 %conv251, 4 %or253 = or i32 %shl250, %shr252 %conv254 = trunc i32 %or253 to i8 store i8 %conv254, ptr %g2210, align 1 %112 = load i8, ptr %r2220, align 1 %conv255 = zext i8 %112 to i32 %shl256 = shl i32 %conv255, 3 %113 = load i8, ptr %r2220, align 1 %conv257 = zext i8 %113 to i32 %shr258 = ashr i32 %conv257, 2 %or259 = or i32 %shl256, %shr258 %conv260 = trunc i32 %or259 to i8 store i8 %conv260, ptr %r2220, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ab261) #10 %114 = load i8, ptr %b0185, align 1 %conv262 = zext i8 %114 to i32 %115 = load i8, ptr %b2205, align 1 %conv263 = zext i8 %115 to i32 %add264 = add nsw i32 %conv262, %conv263 %add265 = add nsw i32 %add264, 1 %shr266 = ashr i32 %add265, 1 %conv267 = trunc i32 %shr266 to i8 store i8 %conv267, ptr %ab261, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag268) #10 %116 = load i8, ptr %g0190, align 1 %conv269 = zext i8 %116 to i32 %117 = load i8, ptr %g2210, align 1 %conv270 = zext i8 %117 to i32 %add271 = add nsw i32 %conv269, %conv270 %add272 = add nsw i32 %add271, 1 %shr273 = ashr i32 %add272, 1 %conv274 = trunc i32 %shr273 to i8 store i8 %conv274, ptr %ag268, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar275) #10 %118 = load i8, ptr %r0200, align 1 %conv276 = zext i8 %118 to i32 %119 = load i8, ptr %r2220, align 1 %conv277 = zext i8 %119 to i32 %add278 = add nsw i32 %conv276, %conv277 %add279 = add nsw i32 %add278, 1 %shr280 = ashr i32 %add279, 1 %conv281 = trunc i32 %shr280 to i8 store i8 %conv281, ptr %ar275, align 1 %120 = load i8, ptr %ar275, align 1 %121 = load i8, ptr %ag268, align 1 %122 = load i8, ptr %ab261, align 1 %call282 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %120, i8 noundef zeroext %121, i8 noundef zeroext %122) %123 = load ptr, ptr %dst_u.addr, align 8 %arrayidx283 = getelementptr inbounds i8, ptr %123, i64 0 store i8 %call282, ptr %arrayidx283, align 1 %124 = load i8, ptr %ar275, align 1 %125 = load i8, ptr %ag268, align 1 %126 = load i8, ptr %ab261, align 1 %call284 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %124, i8 noundef zeroext %125, i8 noundef zeroext %126) %127 = load ptr, ptr %dst_v.addr, align 8 %arrayidx285 = getelementptr inbounds i8, ptr %127, i64 0 store i8 %call284, ptr %arrayidx285, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar275) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag268) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab261) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r2220) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g2210) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b2205) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0200) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0190) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0185) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %next_rgb565) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGB1555ToUVRow_C(ptr noundef %src_argb1555, i32 noundef %src_stride_argb1555, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_argb1555.addr = alloca ptr, align 8 %src_stride_argb1555.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %next_argb1555 = alloca ptr, align 8 %x = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %b2 = alloca i8, align 1 %g2 = alloca i8, align 1 %r2 = alloca i8, align 1 %b3 = alloca i8, align 1 %g3 = alloca i8, align 1 %r3 = alloca i8, align 1 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %b0189 = alloca i8, align 1 %g0194 = alloca i8, align 1 %r0204 = alloca i8, align 1 %b2210 = alloca i8, align 1 %g2215 = alloca i8, align 1 %r2225 = alloca i8, align 1 %ab267 = alloca i8, align 1 %ag274 = alloca i8, align 1 %ar281 = alloca i8, align 1 store ptr %src_argb1555, ptr %src_argb1555.addr, align 8 store i32 %src_stride_argb1555, ptr %src_stride_argb1555.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %next_argb1555) #10 %0 = load ptr, ptr %src_argb1555.addr, align 8 %1 = load i32, ptr %src_stride_argb1555.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %next_argb1555, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %4 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %and = and i32 %conv, 31 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %6 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 %shr = ashr i32 %conv3, 5 %8 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %and6 = and i32 %conv5, 3 %shl = shl i32 %and6, 3 %or = or i32 %shr, %shl %conv7 = trunc i32 %or to i8 store i8 %conv7, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %10 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %10, i64 1 %11 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %11 to i32 %and10 = and i32 %conv9, 124 %shr11 = ashr i32 %and10, 2 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %12 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %13 to i32 %and15 = and i32 %conv14, 31 %conv16 = trunc i32 %and15 to i8 store i8 %conv16, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %14 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %shr19 = ashr i32 %conv18, 5 %16 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %16, i64 3 %17 = load i8, ptr %arrayidx20, align 1 %conv21 = zext i8 %17 to i32 %and22 = and i32 %conv21, 3 %shl23 = shl i32 %and22, 3 %or24 = or i32 %shr19, %shl23 %conv25 = trunc i32 %or24 to i8 store i8 %conv25, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %18 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx26 = getelementptr inbounds i8, ptr %18, i64 3 %19 = load i8, ptr %arrayidx26, align 1 %conv27 = zext i8 %19 to i32 %and28 = and i32 %conv27, 124 %shr29 = ashr i32 %and28, 2 %conv30 = trunc i32 %shr29 to i8 store i8 %conv30, ptr %r1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b2) #10 %20 = load ptr, ptr %next_argb1555, align 8 %arrayidx31 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx31, align 1 %conv32 = zext i8 %21 to i32 %and33 = and i32 %conv32, 31 %conv34 = trunc i32 %and33 to i8 store i8 %conv34, ptr %b2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g2) #10 %22 = load ptr, ptr %next_argb1555, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %23 to i32 %shr37 = ashr i32 %conv36, 5 %24 = load ptr, ptr %next_argb1555, align 8 %arrayidx38 = getelementptr inbounds i8, ptr %24, i64 1 %25 = load i8, ptr %arrayidx38, align 1 %conv39 = zext i8 %25 to i32 %and40 = and i32 %conv39, 3 %shl41 = shl i32 %and40, 3 %or42 = or i32 %shr37, %shl41 %conv43 = trunc i32 %or42 to i8 store i8 %conv43, ptr %g2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r2) #10 %26 = load ptr, ptr %next_argb1555, align 8 %arrayidx44 = getelementptr inbounds i8, ptr %26, i64 1 %27 = load i8, ptr %arrayidx44, align 1 %conv45 = zext i8 %27 to i32 %and46 = and i32 %conv45, 124 %shr47 = ashr i32 %and46, 2 %conv48 = trunc i32 %shr47 to i8 store i8 %conv48, ptr %r2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b3) #10 %28 = load ptr, ptr %next_argb1555, align 8 %arrayidx49 = getelementptr inbounds i8, ptr %28, i64 2 %29 = load i8, ptr %arrayidx49, align 1 %conv50 = zext i8 %29 to i32 %and51 = and i32 %conv50, 31 %conv52 = trunc i32 %and51 to i8 store i8 %conv52, ptr %b3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g3) #10 %30 = load ptr, ptr %next_argb1555, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %30, i64 2 %31 = load i8, ptr %arrayidx53, align 1 %conv54 = zext i8 %31 to i32 %shr55 = ashr i32 %conv54, 5 %32 = load ptr, ptr %next_argb1555, align 8 %arrayidx56 = getelementptr inbounds i8, ptr %32, i64 3 %33 = load i8, ptr %arrayidx56, align 1 %conv57 = zext i8 %33 to i32 %and58 = and i32 %conv57, 3 %shl59 = shl i32 %and58, 3 %or60 = or i32 %shr55, %shl59 %conv61 = trunc i32 %or60 to i8 store i8 %conv61, ptr %g3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r3) #10 %34 = load ptr, ptr %next_argb1555, align 8 %arrayidx62 = getelementptr inbounds i8, ptr %34, i64 3 %35 = load i8, ptr %arrayidx62, align 1 %conv63 = zext i8 %35 to i32 %and64 = and i32 %conv63, 124 %shr65 = ashr i32 %and64, 2 %conv66 = trunc i32 %shr65 to i8 store i8 %conv66, ptr %r3, align 1 %36 = load i8, ptr %b0, align 1 %conv67 = zext i8 %36 to i32 %shl68 = shl i32 %conv67, 3 %37 = load i8, ptr %b0, align 1 %conv69 = zext i8 %37 to i32 %shr70 = ashr i32 %conv69, 2 %or71 = or i32 %shl68, %shr70 %conv72 = trunc i32 %or71 to i8 store i8 %conv72, ptr %b0, align 1 %38 = load i8, ptr %g0, align 1 %conv73 = zext i8 %38 to i32 %shl74 = shl i32 %conv73, 3 %39 = load i8, ptr %g0, align 1 %conv75 = zext i8 %39 to i32 %shr76 = ashr i32 %conv75, 2 %or77 = or i32 %shl74, %shr76 %conv78 = trunc i32 %or77 to i8 store i8 %conv78, ptr %g0, align 1 %40 = load i8, ptr %r0, align 1 %conv79 = zext i8 %40 to i32 %shl80 = shl i32 %conv79, 3 %41 = load i8, ptr %r0, align 1 %conv81 = zext i8 %41 to i32 %shr82 = ashr i32 %conv81, 2 %or83 = or i32 %shl80, %shr82 %conv84 = trunc i32 %or83 to i8 store i8 %conv84, ptr %r0, align 1 %42 = load i8, ptr %b1, align 1 %conv85 = zext i8 %42 to i32 %shl86 = shl i32 %conv85, 3 %43 = load i8, ptr %b1, align 1 %conv87 = zext i8 %43 to i32 %shr88 = ashr i32 %conv87, 2 %or89 = or i32 %shl86, %shr88 %conv90 = trunc i32 %or89 to i8 store i8 %conv90, ptr %b1, align 1 %44 = load i8, ptr %g1, align 1 %conv91 = zext i8 %44 to i32 %shl92 = shl i32 %conv91, 3 %45 = load i8, ptr %g1, align 1 %conv93 = zext i8 %45 to i32 %shr94 = ashr i32 %conv93, 2 %or95 = or i32 %shl92, %shr94 %conv96 = trunc i32 %or95 to i8 store i8 %conv96, ptr %g1, align 1 %46 = load i8, ptr %r1, align 1 %conv97 = zext i8 %46 to i32 %shl98 = shl i32 %conv97, 3 %47 = load i8, ptr %r1, align 1 %conv99 = zext i8 %47 to i32 %shr100 = ashr i32 %conv99, 2 %or101 = or i32 %shl98, %shr100 %conv102 = trunc i32 %or101 to i8 store i8 %conv102, ptr %r1, align 1 %48 = load i8, ptr %b2, align 1 %conv103 = zext i8 %48 to i32 %shl104 = shl i32 %conv103, 3 %49 = load i8, ptr %b2, align 1 %conv105 = zext i8 %49 to i32 %shr106 = ashr i32 %conv105, 2 %or107 = or i32 %shl104, %shr106 %conv108 = trunc i32 %or107 to i8 store i8 %conv108, ptr %b2, align 1 %50 = load i8, ptr %g2, align 1 %conv109 = zext i8 %50 to i32 %shl110 = shl i32 %conv109, 3 %51 = load i8, ptr %g2, align 1 %conv111 = zext i8 %51 to i32 %shr112 = ashr i32 %conv111, 2 %or113 = or i32 %shl110, %shr112 %conv114 = trunc i32 %or113 to i8 store i8 %conv114, ptr %g2, align 1 %52 = load i8, ptr %r2, align 1 %conv115 = zext i8 %52 to i32 %shl116 = shl i32 %conv115, 3 %53 = load i8, ptr %r2, align 1 %conv117 = zext i8 %53 to i32 %shr118 = ashr i32 %conv117, 2 %or119 = or i32 %shl116, %shr118 %conv120 = trunc i32 %or119 to i8 store i8 %conv120, ptr %r2, align 1 %54 = load i8, ptr %b3, align 1 %conv121 = zext i8 %54 to i32 %shl122 = shl i32 %conv121, 3 %55 = load i8, ptr %b3, align 1 %conv123 = zext i8 %55 to i32 %shr124 = ashr i32 %conv123, 2 %or125 = or i32 %shl122, %shr124 %conv126 = trunc i32 %or125 to i8 store i8 %conv126, ptr %b3, align 1 %56 = load i8, ptr %g3, align 1 %conv127 = zext i8 %56 to i32 %shl128 = shl i32 %conv127, 3 %57 = load i8, ptr %g3, align 1 %conv129 = zext i8 %57 to i32 %shr130 = ashr i32 %conv129, 2 %or131 = or i32 %shl128, %shr130 %conv132 = trunc i32 %or131 to i8 store i8 %conv132, ptr %g3, align 1 %58 = load i8, ptr %r3, align 1 %conv133 = zext i8 %58 to i32 %shl134 = shl i32 %conv133, 3 %59 = load i8, ptr %r3, align 1 %conv135 = zext i8 %59 to i32 %shr136 = ashr i32 %conv135, 2 %or137 = or i32 %shl134, %shr136 %conv138 = trunc i32 %or137 to i8 store i8 %conv138, ptr %r3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %60 = load i8, ptr %b0, align 1 %conv139 = zext i8 %60 to i32 %61 = load i8, ptr %b2, align 1 %conv140 = zext i8 %61 to i32 %add = add nsw i32 %conv139, %conv140 %add141 = add nsw i32 %add, 1 %shr142 = ashr i32 %add141, 1 %62 = load i8, ptr %b1, align 1 %conv143 = zext i8 %62 to i32 %63 = load i8, ptr %b3, align 1 %conv144 = zext i8 %63 to i32 %add145 = add nsw i32 %conv143, %conv144 %add146 = add nsw i32 %add145, 1 %shr147 = ashr i32 %add146, 1 %add148 = add nsw i32 %shr142, %shr147 %add149 = add nsw i32 %add148, 1 %shr150 = ashr i32 %add149, 1 %conv151 = trunc i32 %shr150 to i8 store i8 %conv151, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %64 = load i8, ptr %g0, align 1 %conv152 = zext i8 %64 to i32 %65 = load i8, ptr %g2, align 1 %conv153 = zext i8 %65 to i32 %add154 = add nsw i32 %conv152, %conv153 %add155 = add nsw i32 %add154, 1 %shr156 = ashr i32 %add155, 1 %66 = load i8, ptr %g1, align 1 %conv157 = zext i8 %66 to i32 %67 = load i8, ptr %g3, align 1 %conv158 = zext i8 %67 to i32 %add159 = add nsw i32 %conv157, %conv158 %add160 = add nsw i32 %add159, 1 %shr161 = ashr i32 %add160, 1 %add162 = add nsw i32 %shr156, %shr161 %add163 = add nsw i32 %add162, 1 %shr164 = ashr i32 %add163, 1 %conv165 = trunc i32 %shr164 to i8 store i8 %conv165, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %68 = load i8, ptr %r0, align 1 %conv166 = zext i8 %68 to i32 %69 = load i8, ptr %r2, align 1 %conv167 = zext i8 %69 to i32 %add168 = add nsw i32 %conv166, %conv167 %add169 = add nsw i32 %add168, 1 %shr170 = ashr i32 %add169, 1 %70 = load i8, ptr %r1, align 1 %conv171 = zext i8 %70 to i32 %71 = load i8, ptr %r3, align 1 %conv172 = zext i8 %71 to i32 %add173 = add nsw i32 %conv171, %conv172 %add174 = add nsw i32 %add173, 1 %shr175 = ashr i32 %add174, 1 %add176 = add nsw i32 %shr170, %shr175 %add177 = add nsw i32 %add176, 1 %shr178 = ashr i32 %add177, 1 %conv179 = trunc i32 %shr178 to i8 store i8 %conv179, ptr %ar, align 1 %72 = load i8, ptr %ar, align 1 %73 = load i8, ptr %ag, align 1 %74 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %72, i8 noundef zeroext %73, i8 noundef zeroext %74) %75 = load ptr, ptr %dst_u.addr, align 8 %arrayidx180 = getelementptr inbounds i8, ptr %75, i64 0 store i8 %call, ptr %arrayidx180, align 1 %76 = load i8, ptr %ar, align 1 %77 = load i8, ptr %ag, align 1 %78 = load i8, ptr %ab, align 1 %call181 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %76, i8 noundef zeroext %77, i8 noundef zeroext %78) %79 = load ptr, ptr %dst_v.addr, align 8 %arrayidx182 = getelementptr inbounds i8, ptr %79, i64 0 store i8 %call181, ptr %arrayidx182, align 1 %80 = load ptr, ptr %src_argb1555.addr, align 8 %add.ptr183 = getelementptr inbounds i8, ptr %80, i64 4 store ptr %add.ptr183, ptr %src_argb1555.addr, align 8 %81 = load ptr, ptr %next_argb1555, align 8 %add.ptr184 = getelementptr inbounds i8, ptr %81, i64 4 store ptr %add.ptr184, ptr %next_argb1555, align 8 %82 = load ptr, ptr %dst_u.addr, align 8 %add.ptr185 = getelementptr inbounds i8, ptr %82, i64 1 store ptr %add.ptr185, ptr %dst_u.addr, align 8 %83 = load ptr, ptr %dst_v.addr, align 8 %add.ptr186 = getelementptr inbounds i8, ptr %83, i64 1 store ptr %add.ptr186, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %84 = load i32, ptr %x, align 4 %add187 = add nsw i32 %84, 2 store i32 %add187, ptr %x, align 4 br label %for.cond, !llvm.loop !60 for.end: ; preds = %for.cond %85 = load i32, ptr %width.addr, align 4 %and188 = and i32 %85, 1 %tobool = icmp ne i32 %and188, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %b0189) #10 %86 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx190 = getelementptr inbounds i8, ptr %86, i64 0 %87 = load i8, ptr %arrayidx190, align 1 %conv191 = zext i8 %87 to i32 %and192 = and i32 %conv191, 31 %conv193 = trunc i32 %and192 to i8 store i8 %conv193, ptr %b0189, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0194) #10 %88 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx195 = getelementptr inbounds i8, ptr %88, i64 0 %89 = load i8, ptr %arrayidx195, align 1 %conv196 = zext i8 %89 to i32 %shr197 = ashr i32 %conv196, 5 %90 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx198 = getelementptr inbounds i8, ptr %90, i64 1 %91 = load i8, ptr %arrayidx198, align 1 %conv199 = zext i8 %91 to i32 %and200 = and i32 %conv199, 3 %shl201 = shl i32 %and200, 3 %or202 = or i32 %shr197, %shl201 %conv203 = trunc i32 %or202 to i8 store i8 %conv203, ptr %g0194, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0204) #10 %92 = load ptr, ptr %src_argb1555.addr, align 8 %arrayidx205 = getelementptr inbounds i8, ptr %92, i64 1 %93 = load i8, ptr %arrayidx205, align 1 %conv206 = zext i8 %93 to i32 %and207 = and i32 %conv206, 124 %shr208 = ashr i32 %and207, 2 %conv209 = trunc i32 %shr208 to i8 store i8 %conv209, ptr %r0204, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b2210) #10 %94 = load ptr, ptr %next_argb1555, align 8 %arrayidx211 = getelementptr inbounds i8, ptr %94, i64 0 %95 = load i8, ptr %arrayidx211, align 1 %conv212 = zext i8 %95 to i32 %and213 = and i32 %conv212, 31 %conv214 = trunc i32 %and213 to i8 store i8 %conv214, ptr %b2210, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g2215) #10 %96 = load ptr, ptr %next_argb1555, align 8 %arrayidx216 = getelementptr inbounds i8, ptr %96, i64 0 %97 = load i8, ptr %arrayidx216, align 1 %conv217 = zext i8 %97 to i32 %shr218 = ashr i32 %conv217, 5 %98 = load ptr, ptr %next_argb1555, align 8 %arrayidx219 = getelementptr inbounds i8, ptr %98, i64 1 %99 = load i8, ptr %arrayidx219, align 1 %conv220 = zext i8 %99 to i32 %and221 = and i32 %conv220, 3 %shl222 = shl i32 %and221, 3 %or223 = or i32 %shr218, %shl222 %conv224 = trunc i32 %or223 to i8 store i8 %conv224, ptr %g2215, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r2225) #10 %100 = load ptr, ptr %next_argb1555, align 8 %arrayidx226 = getelementptr inbounds i8, ptr %100, i64 1 %101 = load i8, ptr %arrayidx226, align 1 %conv227 = zext i8 %101 to i32 %and228 = and i32 %conv227, 124 %shr229 = ashr i32 %and228, 2 %conv230 = trunc i32 %shr229 to i8 store i8 %conv230, ptr %r2225, align 1 %102 = load i8, ptr %b0189, align 1 %conv231 = zext i8 %102 to i32 %shl232 = shl i32 %conv231, 3 %103 = load i8, ptr %b0189, align 1 %conv233 = zext i8 %103 to i32 %shr234 = ashr i32 %conv233, 2 %or235 = or i32 %shl232, %shr234 %conv236 = trunc i32 %or235 to i8 store i8 %conv236, ptr %b0189, align 1 %104 = load i8, ptr %g0194, align 1 %conv237 = zext i8 %104 to i32 %shl238 = shl i32 %conv237, 3 %105 = load i8, ptr %g0194, align 1 %conv239 = zext i8 %105 to i32 %shr240 = ashr i32 %conv239, 2 %or241 = or i32 %shl238, %shr240 %conv242 = trunc i32 %or241 to i8 store i8 %conv242, ptr %g0194, align 1 %106 = load i8, ptr %r0204, align 1 %conv243 = zext i8 %106 to i32 %shl244 = shl i32 %conv243, 3 %107 = load i8, ptr %r0204, align 1 %conv245 = zext i8 %107 to i32 %shr246 = ashr i32 %conv245, 2 %or247 = or i32 %shl244, %shr246 %conv248 = trunc i32 %or247 to i8 store i8 %conv248, ptr %r0204, align 1 %108 = load i8, ptr %b2210, align 1 %conv249 = zext i8 %108 to i32 %shl250 = shl i32 %conv249, 3 %109 = load i8, ptr %b2210, align 1 %conv251 = zext i8 %109 to i32 %shr252 = ashr i32 %conv251, 2 %or253 = or i32 %shl250, %shr252 %conv254 = trunc i32 %or253 to i8 store i8 %conv254, ptr %b2210, align 1 %110 = load i8, ptr %g2215, align 1 %conv255 = zext i8 %110 to i32 %shl256 = shl i32 %conv255, 3 %111 = load i8, ptr %g2215, align 1 %conv257 = zext i8 %111 to i32 %shr258 = ashr i32 %conv257, 2 %or259 = or i32 %shl256, %shr258 %conv260 = trunc i32 %or259 to i8 store i8 %conv260, ptr %g2215, align 1 %112 = load i8, ptr %r2225, align 1 %conv261 = zext i8 %112 to i32 %shl262 = shl i32 %conv261, 3 %113 = load i8, ptr %r2225, align 1 %conv263 = zext i8 %113 to i32 %shr264 = ashr i32 %conv263, 2 %or265 = or i32 %shl262, %shr264 %conv266 = trunc i32 %or265 to i8 store i8 %conv266, ptr %r2225, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ab267) #10 %114 = load i8, ptr %b0189, align 1 %conv268 = zext i8 %114 to i32 %115 = load i8, ptr %b2210, align 1 %conv269 = zext i8 %115 to i32 %add270 = add nsw i32 %conv268, %conv269 %add271 = add nsw i32 %add270, 1 %shr272 = ashr i32 %add271, 1 %conv273 = trunc i32 %shr272 to i8 store i8 %conv273, ptr %ab267, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag274) #10 %116 = load i8, ptr %g0194, align 1 %conv275 = zext i8 %116 to i32 %117 = load i8, ptr %g2215, align 1 %conv276 = zext i8 %117 to i32 %add277 = add nsw i32 %conv275, %conv276 %add278 = add nsw i32 %add277, 1 %shr279 = ashr i32 %add278, 1 %conv280 = trunc i32 %shr279 to i8 store i8 %conv280, ptr %ag274, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar281) #10 %118 = load i8, ptr %r0204, align 1 %conv282 = zext i8 %118 to i32 %119 = load i8, ptr %r2225, align 1 %conv283 = zext i8 %119 to i32 %add284 = add nsw i32 %conv282, %conv283 %add285 = add nsw i32 %add284, 1 %shr286 = ashr i32 %add285, 1 %conv287 = trunc i32 %shr286 to i8 store i8 %conv287, ptr %ar281, align 1 %120 = load i8, ptr %ar281, align 1 %121 = load i8, ptr %ag274, align 1 %122 = load i8, ptr %ab267, align 1 %call288 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %120, i8 noundef zeroext %121, i8 noundef zeroext %122) %123 = load ptr, ptr %dst_u.addr, align 8 %arrayidx289 = getelementptr inbounds i8, ptr %123, i64 0 store i8 %call288, ptr %arrayidx289, align 1 %124 = load i8, ptr %ar281, align 1 %125 = load i8, ptr %ag274, align 1 %126 = load i8, ptr %ab267, align 1 %call290 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %124, i8 noundef zeroext %125, i8 noundef zeroext %126) %127 = load ptr, ptr %dst_v.addr, align 8 %arrayidx291 = getelementptr inbounds i8, ptr %127, i64 0 store i8 %call290, ptr %arrayidx291, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar281) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag274) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab267) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r2225) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g2215) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b2210) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0204) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0194) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0189) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %next_argb1555) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGB4444ToUVRow_C(ptr noundef %src_argb4444, i32 noundef %src_stride_argb4444, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_argb4444.addr = alloca ptr, align 8 %src_stride_argb4444.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %next_argb4444 = alloca ptr, align 8 %x = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %b2 = alloca i8, align 1 %g2 = alloca i8, align 1 %r2 = alloca i8, align 1 %b3 = alloca i8, align 1 %g3 = alloca i8, align 1 %r3 = alloca i8, align 1 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 %b0153 = alloca i8, align 1 %g0158 = alloca i8, align 1 %r0163 = alloca i8, align 1 %b2168 = alloca i8, align 1 %g2173 = alloca i8, align 1 %r2178 = alloca i8, align 1 %ab213 = alloca i8, align 1 %ag220 = alloca i8, align 1 %ar227 = alloca i8, align 1 store ptr %src_argb4444, ptr %src_argb4444.addr, align 8 store i32 %src_stride_argb4444, ptr %src_stride_argb4444.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %next_argb4444) #10 %0 = load ptr, ptr %src_argb4444.addr, align 8 %1 = load i32, ptr %src_stride_argb4444.addr, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext store ptr %add.ptr, ptr %next_argb4444, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 %4 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %and = and i32 %conv, 15 %conv1 = trunc i32 %and to i8 store i8 %conv1, ptr %b0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 %6 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 %shr = ashr i32 %conv3, 4 %conv4 = trunc i32 %shr to i8 store i8 %conv4, ptr %g0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 %8 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 %and7 = and i32 %conv6, 15 %conv8 = trunc i32 %and7 to i8 store i8 %conv8, ptr %r0, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 %10 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %11 to i32 %and11 = and i32 %conv10, 15 %conv12 = trunc i32 %and11 to i8 store i8 %conv12, ptr %b1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 %12 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %12, i64 2 %13 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %13 to i32 %shr15 = ashr i32 %conv14, 4 %conv16 = trunc i32 %shr15 to i8 store i8 %conv16, ptr %g1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 %14 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %14, i64 3 %15 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %15 to i32 %and19 = and i32 %conv18, 15 %conv20 = trunc i32 %and19 to i8 store i8 %conv20, ptr %r1, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b2) #10 %16 = load ptr, ptr %next_argb4444, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %16, i64 0 %17 = load i8, ptr %arrayidx21, align 1 %conv22 = zext i8 %17 to i32 %and23 = and i32 %conv22, 15 %conv24 = trunc i32 %and23 to i8 store i8 %conv24, ptr %b2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g2) #10 %18 = load ptr, ptr %next_argb4444, align 8 %arrayidx25 = getelementptr inbounds i8, ptr %18, i64 0 %19 = load i8, ptr %arrayidx25, align 1 %conv26 = zext i8 %19 to i32 %shr27 = ashr i32 %conv26, 4 %conv28 = trunc i32 %shr27 to i8 store i8 %conv28, ptr %g2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r2) #10 %20 = load ptr, ptr %next_argb4444, align 8 %arrayidx29 = getelementptr inbounds i8, ptr %20, i64 1 %21 = load i8, ptr %arrayidx29, align 1 %conv30 = zext i8 %21 to i32 %and31 = and i32 %conv30, 15 %conv32 = trunc i32 %and31 to i8 store i8 %conv32, ptr %r2, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b3) #10 %22 = load ptr, ptr %next_argb4444, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %22, i64 2 %23 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %23 to i32 %and35 = and i32 %conv34, 15 %conv36 = trunc i32 %and35 to i8 store i8 %conv36, ptr %b3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g3) #10 %24 = load ptr, ptr %next_argb4444, align 8 %arrayidx37 = getelementptr inbounds i8, ptr %24, i64 2 %25 = load i8, ptr %arrayidx37, align 1 %conv38 = zext i8 %25 to i32 %shr39 = ashr i32 %conv38, 4 %conv40 = trunc i32 %shr39 to i8 store i8 %conv40, ptr %g3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r3) #10 %26 = load ptr, ptr %next_argb4444, align 8 %arrayidx41 = getelementptr inbounds i8, ptr %26, i64 3 %27 = load i8, ptr %arrayidx41, align 1 %conv42 = zext i8 %27 to i32 %and43 = and i32 %conv42, 15 %conv44 = trunc i32 %and43 to i8 store i8 %conv44, ptr %r3, align 1 %28 = load i8, ptr %b0, align 1 %conv45 = zext i8 %28 to i32 %shl = shl i32 %conv45, 4 %29 = load i8, ptr %b0, align 1 %conv46 = zext i8 %29 to i32 %or = or i32 %shl, %conv46 %conv47 = trunc i32 %or to i8 store i8 %conv47, ptr %b0, align 1 %30 = load i8, ptr %g0, align 1 %conv48 = zext i8 %30 to i32 %shl49 = shl i32 %conv48, 4 %31 = load i8, ptr %g0, align 1 %conv50 = zext i8 %31 to i32 %or51 = or i32 %shl49, %conv50 %conv52 = trunc i32 %or51 to i8 store i8 %conv52, ptr %g0, align 1 %32 = load i8, ptr %r0, align 1 %conv53 = zext i8 %32 to i32 %shl54 = shl i32 %conv53, 4 %33 = load i8, ptr %r0, align 1 %conv55 = zext i8 %33 to i32 %or56 = or i32 %shl54, %conv55 %conv57 = trunc i32 %or56 to i8 store i8 %conv57, ptr %r0, align 1 %34 = load i8, ptr %b1, align 1 %conv58 = zext i8 %34 to i32 %shl59 = shl i32 %conv58, 4 %35 = load i8, ptr %b1, align 1 %conv60 = zext i8 %35 to i32 %or61 = or i32 %shl59, %conv60 %conv62 = trunc i32 %or61 to i8 store i8 %conv62, ptr %b1, align 1 %36 = load i8, ptr %g1, align 1 %conv63 = zext i8 %36 to i32 %shl64 = shl i32 %conv63, 4 %37 = load i8, ptr %g1, align 1 %conv65 = zext i8 %37 to i32 %or66 = or i32 %shl64, %conv65 %conv67 = trunc i32 %or66 to i8 store i8 %conv67, ptr %g1, align 1 %38 = load i8, ptr %r1, align 1 %conv68 = zext i8 %38 to i32 %shl69 = shl i32 %conv68, 4 %39 = load i8, ptr %r1, align 1 %conv70 = zext i8 %39 to i32 %or71 = or i32 %shl69, %conv70 %conv72 = trunc i32 %or71 to i8 store i8 %conv72, ptr %r1, align 1 %40 = load i8, ptr %b2, align 1 %conv73 = zext i8 %40 to i32 %shl74 = shl i32 %conv73, 4 %41 = load i8, ptr %b2, align 1 %conv75 = zext i8 %41 to i32 %or76 = or i32 %shl74, %conv75 %conv77 = trunc i32 %or76 to i8 store i8 %conv77, ptr %b2, align 1 %42 = load i8, ptr %g2, align 1 %conv78 = zext i8 %42 to i32 %shl79 = shl i32 %conv78, 4 %43 = load i8, ptr %g2, align 1 %conv80 = zext i8 %43 to i32 %or81 = or i32 %shl79, %conv80 %conv82 = trunc i32 %or81 to i8 store i8 %conv82, ptr %g2, align 1 %44 = load i8, ptr %r2, align 1 %conv83 = zext i8 %44 to i32 %shl84 = shl i32 %conv83, 4 %45 = load i8, ptr %r2, align 1 %conv85 = zext i8 %45 to i32 %or86 = or i32 %shl84, %conv85 %conv87 = trunc i32 %or86 to i8 store i8 %conv87, ptr %r2, align 1 %46 = load i8, ptr %b3, align 1 %conv88 = zext i8 %46 to i32 %shl89 = shl i32 %conv88, 4 %47 = load i8, ptr %b3, align 1 %conv90 = zext i8 %47 to i32 %or91 = or i32 %shl89, %conv90 %conv92 = trunc i32 %or91 to i8 store i8 %conv92, ptr %b3, align 1 %48 = load i8, ptr %g3, align 1 %conv93 = zext i8 %48 to i32 %shl94 = shl i32 %conv93, 4 %49 = load i8, ptr %g3, align 1 %conv95 = zext i8 %49 to i32 %or96 = or i32 %shl94, %conv95 %conv97 = trunc i32 %or96 to i8 store i8 %conv97, ptr %g3, align 1 %50 = load i8, ptr %r3, align 1 %conv98 = zext i8 %50 to i32 %shl99 = shl i32 %conv98, 4 %51 = load i8, ptr %r3, align 1 %conv100 = zext i8 %51 to i32 %or101 = or i32 %shl99, %conv100 %conv102 = trunc i32 %or101 to i8 store i8 %conv102, ptr %r3, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %52 = load i8, ptr %b0, align 1 %conv103 = zext i8 %52 to i32 %53 = load i8, ptr %b2, align 1 %conv104 = zext i8 %53 to i32 %add = add nsw i32 %conv103, %conv104 %add105 = add nsw i32 %add, 1 %shr106 = ashr i32 %add105, 1 %54 = load i8, ptr %b1, align 1 %conv107 = zext i8 %54 to i32 %55 = load i8, ptr %b3, align 1 %conv108 = zext i8 %55 to i32 %add109 = add nsw i32 %conv107, %conv108 %add110 = add nsw i32 %add109, 1 %shr111 = ashr i32 %add110, 1 %add112 = add nsw i32 %shr106, %shr111 %add113 = add nsw i32 %add112, 1 %shr114 = ashr i32 %add113, 1 %conv115 = trunc i32 %shr114 to i8 store i8 %conv115, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %56 = load i8, ptr %g0, align 1 %conv116 = zext i8 %56 to i32 %57 = load i8, ptr %g2, align 1 %conv117 = zext i8 %57 to i32 %add118 = add nsw i32 %conv116, %conv117 %add119 = add nsw i32 %add118, 1 %shr120 = ashr i32 %add119, 1 %58 = load i8, ptr %g1, align 1 %conv121 = zext i8 %58 to i32 %59 = load i8, ptr %g3, align 1 %conv122 = zext i8 %59 to i32 %add123 = add nsw i32 %conv121, %conv122 %add124 = add nsw i32 %add123, 1 %shr125 = ashr i32 %add124, 1 %add126 = add nsw i32 %shr120, %shr125 %add127 = add nsw i32 %add126, 1 %shr128 = ashr i32 %add127, 1 %conv129 = trunc i32 %shr128 to i8 store i8 %conv129, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %60 = load i8, ptr %r0, align 1 %conv130 = zext i8 %60 to i32 %61 = load i8, ptr %r2, align 1 %conv131 = zext i8 %61 to i32 %add132 = add nsw i32 %conv130, %conv131 %add133 = add nsw i32 %add132, 1 %shr134 = ashr i32 %add133, 1 %62 = load i8, ptr %r1, align 1 %conv135 = zext i8 %62 to i32 %63 = load i8, ptr %r3, align 1 %conv136 = zext i8 %63 to i32 %add137 = add nsw i32 %conv135, %conv136 %add138 = add nsw i32 %add137, 1 %shr139 = ashr i32 %add138, 1 %add140 = add nsw i32 %shr134, %shr139 %add141 = add nsw i32 %add140, 1 %shr142 = ashr i32 %add141, 1 %conv143 = trunc i32 %shr142 to i8 store i8 %conv143, ptr %ar, align 1 %64 = load i8, ptr %ar, align 1 %65 = load i8, ptr %ag, align 1 %66 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %64, i8 noundef zeroext %65, i8 noundef zeroext %66) %67 = load ptr, ptr %dst_u.addr, align 8 %arrayidx144 = getelementptr inbounds i8, ptr %67, i64 0 store i8 %call, ptr %arrayidx144, align 1 %68 = load i8, ptr %ar, align 1 %69 = load i8, ptr %ag, align 1 %70 = load i8, ptr %ab, align 1 %call145 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %68, i8 noundef zeroext %69, i8 noundef zeroext %70) %71 = load ptr, ptr %dst_v.addr, align 8 %arrayidx146 = getelementptr inbounds i8, ptr %71, i64 0 store i8 %call145, ptr %arrayidx146, align 1 %72 = load ptr, ptr %src_argb4444.addr, align 8 %add.ptr147 = getelementptr inbounds i8, ptr %72, i64 4 store ptr %add.ptr147, ptr %src_argb4444.addr, align 8 %73 = load ptr, ptr %next_argb4444, align 8 %add.ptr148 = getelementptr inbounds i8, ptr %73, i64 4 store ptr %add.ptr148, ptr %next_argb4444, align 8 %74 = load ptr, ptr %dst_u.addr, align 8 %add.ptr149 = getelementptr inbounds i8, ptr %74, i64 1 store ptr %add.ptr149, ptr %dst_u.addr, align 8 %75 = load ptr, ptr %dst_v.addr, align 8 %add.ptr150 = getelementptr inbounds i8, ptr %75, i64 1 store ptr %add.ptr150, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b3) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b2) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 br label %for.inc for.inc: ; preds = %for.body %76 = load i32, ptr %x, align 4 %add151 = add nsw i32 %76, 2 store i32 %add151, ptr %x, align 4 br label %for.cond, !llvm.loop !61 for.end: ; preds = %for.cond %77 = load i32, ptr %width.addr, align 4 %and152 = and i32 %77, 1 %tobool = icmp ne i32 %and152, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 1, ptr %b0153) #10 %78 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx154 = getelementptr inbounds i8, ptr %78, i64 0 %79 = load i8, ptr %arrayidx154, align 1 %conv155 = zext i8 %79 to i32 %and156 = and i32 %conv155, 15 %conv157 = trunc i32 %and156 to i8 store i8 %conv157, ptr %b0153, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g0158) #10 %80 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx159 = getelementptr inbounds i8, ptr %80, i64 0 %81 = load i8, ptr %arrayidx159, align 1 %conv160 = zext i8 %81 to i32 %shr161 = ashr i32 %conv160, 4 %conv162 = trunc i32 %shr161 to i8 store i8 %conv162, ptr %g0158, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r0163) #10 %82 = load ptr, ptr %src_argb4444.addr, align 8 %arrayidx164 = getelementptr inbounds i8, ptr %82, i64 1 %83 = load i8, ptr %arrayidx164, align 1 %conv165 = zext i8 %83 to i32 %and166 = and i32 %conv165, 15 %conv167 = trunc i32 %and166 to i8 store i8 %conv167, ptr %r0163, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %b2168) #10 %84 = load ptr, ptr %next_argb4444, align 8 %arrayidx169 = getelementptr inbounds i8, ptr %84, i64 0 %85 = load i8, ptr %arrayidx169, align 1 %conv170 = zext i8 %85 to i32 %and171 = and i32 %conv170, 15 %conv172 = trunc i32 %and171 to i8 store i8 %conv172, ptr %b2168, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g2173) #10 %86 = load ptr, ptr %next_argb4444, align 8 %arrayidx174 = getelementptr inbounds i8, ptr %86, i64 0 %87 = load i8, ptr %arrayidx174, align 1 %conv175 = zext i8 %87 to i32 %shr176 = ashr i32 %conv175, 4 %conv177 = trunc i32 %shr176 to i8 store i8 %conv177, ptr %g2173, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r2178) #10 %88 = load ptr, ptr %next_argb4444, align 8 %arrayidx179 = getelementptr inbounds i8, ptr %88, i64 1 %89 = load i8, ptr %arrayidx179, align 1 %conv180 = zext i8 %89 to i32 %and181 = and i32 %conv180, 15 %conv182 = trunc i32 %and181 to i8 store i8 %conv182, ptr %r2178, align 1 %90 = load i8, ptr %b0153, align 1 %conv183 = zext i8 %90 to i32 %shl184 = shl i32 %conv183, 4 %91 = load i8, ptr %b0153, align 1 %conv185 = zext i8 %91 to i32 %or186 = or i32 %shl184, %conv185 %conv187 = trunc i32 %or186 to i8 store i8 %conv187, ptr %b0153, align 1 %92 = load i8, ptr %g0158, align 1 %conv188 = zext i8 %92 to i32 %shl189 = shl i32 %conv188, 4 %93 = load i8, ptr %g0158, align 1 %conv190 = zext i8 %93 to i32 %or191 = or i32 %shl189, %conv190 %conv192 = trunc i32 %or191 to i8 store i8 %conv192, ptr %g0158, align 1 %94 = load i8, ptr %r0163, align 1 %conv193 = zext i8 %94 to i32 %shl194 = shl i32 %conv193, 4 %95 = load i8, ptr %r0163, align 1 %conv195 = zext i8 %95 to i32 %or196 = or i32 %shl194, %conv195 %conv197 = trunc i32 %or196 to i8 store i8 %conv197, ptr %r0163, align 1 %96 = load i8, ptr %b2168, align 1 %conv198 = zext i8 %96 to i32 %shl199 = shl i32 %conv198, 4 %97 = load i8, ptr %b2168, align 1 %conv200 = zext i8 %97 to i32 %or201 = or i32 %shl199, %conv200 %conv202 = trunc i32 %or201 to i8 store i8 %conv202, ptr %b2168, align 1 %98 = load i8, ptr %g2173, align 1 %conv203 = zext i8 %98 to i32 %shl204 = shl i32 %conv203, 4 %99 = load i8, ptr %g2173, align 1 %conv205 = zext i8 %99 to i32 %or206 = or i32 %shl204, %conv205 %conv207 = trunc i32 %or206 to i8 store i8 %conv207, ptr %g2173, align 1 %100 = load i8, ptr %r2178, align 1 %conv208 = zext i8 %100 to i32 %shl209 = shl i32 %conv208, 4 %101 = load i8, ptr %r2178, align 1 %conv210 = zext i8 %101 to i32 %or211 = or i32 %shl209, %conv210 %conv212 = trunc i32 %or211 to i8 store i8 %conv212, ptr %r2178, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ab213) #10 %102 = load i8, ptr %b0153, align 1 %conv214 = zext i8 %102 to i32 %103 = load i8, ptr %b2168, align 1 %conv215 = zext i8 %103 to i32 %add216 = add nsw i32 %conv214, %conv215 %add217 = add nsw i32 %add216, 1 %shr218 = ashr i32 %add217, 1 %conv219 = trunc i32 %shr218 to i8 store i8 %conv219, ptr %ab213, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag220) #10 %104 = load i8, ptr %g0158, align 1 %conv221 = zext i8 %104 to i32 %105 = load i8, ptr %g2173, align 1 %conv222 = zext i8 %105 to i32 %add223 = add nsw i32 %conv221, %conv222 %add224 = add nsw i32 %add223, 1 %shr225 = ashr i32 %add224, 1 %conv226 = trunc i32 %shr225 to i8 store i8 %conv226, ptr %ag220, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar227) #10 %106 = load i8, ptr %r0163, align 1 %conv228 = zext i8 %106 to i32 %107 = load i8, ptr %r2178, align 1 %conv229 = zext i8 %107 to i32 %add230 = add nsw i32 %conv228, %conv229 %add231 = add nsw i32 %add230, 1 %shr232 = ashr i32 %add231, 1 %conv233 = trunc i32 %shr232 to i8 store i8 %conv233, ptr %ar227, align 1 %108 = load i8, ptr %ar227, align 1 %109 = load i8, ptr %ag220, align 1 %110 = load i8, ptr %ab213, align 1 %call234 = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %108, i8 noundef zeroext %109, i8 noundef zeroext %110) %111 = load ptr, ptr %dst_u.addr, align 8 %arrayidx235 = getelementptr inbounds i8, ptr %111, i64 0 store i8 %call234, ptr %arrayidx235, align 1 %112 = load i8, ptr %ar227, align 1 %113 = load i8, ptr %ag220, align 1 %114 = load i8, ptr %ab213, align 1 %call236 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %112, i8 noundef zeroext %113, i8 noundef zeroext %114) %115 = load ptr, ptr %dst_v.addr, align 8 %arrayidx237 = getelementptr inbounds i8, ptr %115, i64 0 store i8 %call236, ptr %arrayidx237, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %ar227) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag220) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab213) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r2178) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g2173) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b2168) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0163) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0158) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0153) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %next_argb4444) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBToUV444Row_C(ptr noundef %src_argb, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %ab = alloca i8, align 1 %ag = alloca i8, align 1 %ar = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %ab) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %ab, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ag) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %ag, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %ar) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 store i8 %7, ptr %ar, align 1 %8 = load i8, ptr %ar, align 1 %9 = load i8, ptr %ag, align 1 %10 = load i8, ptr %ab, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL6RGBToUEhhh(i8 noundef zeroext %8, i8 noundef zeroext %9, i8 noundef zeroext %10) %11 = load ptr, ptr %dst_u.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %call, ptr %arrayidx3, align 1 %12 = load i8, ptr %ar, align 1 %13 = load i8, ptr %ag, align 1 %14 = load i8, ptr %ab, align 1 %call4 = call noundef zeroext i8 @_ZN6libyuvL6RGBToVEhhh(i8 noundef zeroext %12, i8 noundef zeroext %13, i8 noundef zeroext %14) %15 = load ptr, ptr %dst_v.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %15, i64 0 store i8 %call4, ptr %arrayidx5, align 1 %16 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %16, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %17 = load ptr, ptr %dst_u.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %17, i64 1 store ptr %add.ptr6, ptr %dst_u.addr, align 8 %18 = load ptr, ptr %dst_v.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %18, i64 1 store ptr %add.ptr7, ptr %dst_v.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %ar) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ag) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ab) #10 br label %for.inc for.inc: ; preds = %for.body %19 = load i32, ptr %x, align 4 %inc = add nsw i32 %19, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !62 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBGrayRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %y) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 2 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %call = call noundef zeroext i8 @_ZN6libyuvL7RGBToYJEhhh(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7) store i8 %call, ptr %y, align 1 %8 = load i8, ptr %y, align 1 %9 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 0 store i8 %8, ptr %arrayidx3, align 1 %10 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %10, i64 1 store i8 %8, ptr %arrayidx4, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %11, i64 2 store i8 %8, ptr %arrayidx5, align 1 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %12, i64 3 %13 = load i8, ptr %arrayidx6, align 1 %14 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx7, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %16 = load ptr, ptr %src_argb.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %16, i64 4 store ptr %add.ptr8, ptr %src_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %y) #10 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !63 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBSepiaRow_C(ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %sb = alloca i32, align 4 %sg = alloca i32, align 4 %sr = alloca i32, align 4 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sb) #10 %8 = load i32, ptr %b, align 4 %mul = mul nsw i32 %8, 17 %9 = load i32, ptr %g, align 4 %mul5 = mul nsw i32 %9, 68 %add = add nsw i32 %mul, %mul5 %10 = load i32, ptr %r, align 4 %mul6 = mul nsw i32 %10, 35 %add7 = add nsw i32 %add, %mul6 %shr = ashr i32 %add7, 7 store i32 %shr, ptr %sb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sg) #10 %11 = load i32, ptr %b, align 4 %mul8 = mul nsw i32 %11, 22 %12 = load i32, ptr %g, align 4 %mul9 = mul nsw i32 %12, 88 %add10 = add nsw i32 %mul8, %mul9 %13 = load i32, ptr %r, align 4 %mul11 = mul nsw i32 %13, 45 %add12 = add nsw i32 %add10, %mul11 %shr13 = ashr i32 %add12, 7 store i32 %shr13, ptr %sg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sr) #10 %14 = load i32, ptr %b, align 4 %mul14 = mul nsw i32 %14, 24 %15 = load i32, ptr %g, align 4 %mul15 = mul nsw i32 %15, 98 %add16 = add nsw i32 %mul14, %mul15 %16 = load i32, ptr %r, align 4 %mul17 = mul nsw i32 %16, 50 %add18 = add nsw i32 %add16, %mul17 %shr19 = ashr i32 %add18, 7 store i32 %shr19, ptr %sr, align 4 %17 = load i32, ptr %sb, align 4 %conv20 = trunc i32 %17 to i8 %18 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %18, i64 0 store i8 %conv20, ptr %arrayidx21, align 1 %19 = load i32, ptr %sg, align 4 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %19) %conv22 = trunc i32 %call to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %20, i64 1 store i8 %conv22, ptr %arrayidx23, align 1 %21 = load i32, ptr %sr, align 4 %call24 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %21) %conv25 = trunc i32 %call24 to i8 %22 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx26 = getelementptr inbounds i8, ptr %22, i64 2 store i8 %conv25, ptr %arrayidx26, align 1 %23 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %23, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %sr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %sg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %sb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %24 = load i32, ptr %x, align 4 %inc = add nsw i32 %24, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !64 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBColorMatrixRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, ptr noundef %matrix_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %matrix_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 %sb = alloca i32, align 4 %sg = alloca i32, align 4 %sr = alloca i32, align 4 %sa = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %matrix_argb, ptr %matrix_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sb) #10 %10 = load i32, ptr %b, align 4 %11 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx7, align 1 %conv8 = sext i8 %12 to i32 %mul = mul nsw i32 %10, %conv8 %13 = load i32, ptr %g, align 4 %14 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx9, align 1 %conv10 = sext i8 %15 to i32 %mul11 = mul nsw i32 %13, %conv10 %add = add nsw i32 %mul, %mul11 %16 = load i32, ptr %r, align 4 %17 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %17, i64 2 %18 = load i8, ptr %arrayidx12, align 1 %conv13 = sext i8 %18 to i32 %mul14 = mul nsw i32 %16, %conv13 %add15 = add nsw i32 %add, %mul14 %19 = load i32, ptr %a, align 4 %20 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %20, i64 3 %21 = load i8, ptr %arrayidx16, align 1 %conv17 = sext i8 %21 to i32 %mul18 = mul nsw i32 %19, %conv17 %add19 = add nsw i32 %add15, %mul18 %shr = ashr i32 %add19, 6 store i32 %shr, ptr %sb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sg) #10 %22 = load i32, ptr %b, align 4 %23 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %23, i64 4 %24 = load i8, ptr %arrayidx20, align 1 %conv21 = sext i8 %24 to i32 %mul22 = mul nsw i32 %22, %conv21 %25 = load i32, ptr %g, align 4 %26 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %26, i64 5 %27 = load i8, ptr %arrayidx23, align 1 %conv24 = sext i8 %27 to i32 %mul25 = mul nsw i32 %25, %conv24 %add26 = add nsw i32 %mul22, %mul25 %28 = load i32, ptr %r, align 4 %29 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx27 = getelementptr inbounds i8, ptr %29, i64 6 %30 = load i8, ptr %arrayidx27, align 1 %conv28 = sext i8 %30 to i32 %mul29 = mul nsw i32 %28, %conv28 %add30 = add nsw i32 %add26, %mul29 %31 = load i32, ptr %a, align 4 %32 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx31 = getelementptr inbounds i8, ptr %32, i64 7 %33 = load i8, ptr %arrayidx31, align 1 %conv32 = sext i8 %33 to i32 %mul33 = mul nsw i32 %31, %conv32 %add34 = add nsw i32 %add30, %mul33 %shr35 = ashr i32 %add34, 6 store i32 %shr35, ptr %sg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sr) #10 %34 = load i32, ptr %b, align 4 %35 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx36 = getelementptr inbounds i8, ptr %35, i64 8 %36 = load i8, ptr %arrayidx36, align 1 %conv37 = sext i8 %36 to i32 %mul38 = mul nsw i32 %34, %conv37 %37 = load i32, ptr %g, align 4 %38 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx39 = getelementptr inbounds i8, ptr %38, i64 9 %39 = load i8, ptr %arrayidx39, align 1 %conv40 = sext i8 %39 to i32 %mul41 = mul nsw i32 %37, %conv40 %add42 = add nsw i32 %mul38, %mul41 %40 = load i32, ptr %r, align 4 %41 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %41, i64 10 %42 = load i8, ptr %arrayidx43, align 1 %conv44 = sext i8 %42 to i32 %mul45 = mul nsw i32 %40, %conv44 %add46 = add nsw i32 %add42, %mul45 %43 = load i32, ptr %a, align 4 %44 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx47 = getelementptr inbounds i8, ptr %44, i64 11 %45 = load i8, ptr %arrayidx47, align 1 %conv48 = sext i8 %45 to i32 %mul49 = mul nsw i32 %43, %conv48 %add50 = add nsw i32 %add46, %mul49 %shr51 = ashr i32 %add50, 6 store i32 %shr51, ptr %sr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sa) #10 %46 = load i32, ptr %b, align 4 %47 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx52 = getelementptr inbounds i8, ptr %47, i64 12 %48 = load i8, ptr %arrayidx52, align 1 %conv53 = sext i8 %48 to i32 %mul54 = mul nsw i32 %46, %conv53 %49 = load i32, ptr %g, align 4 %50 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx55 = getelementptr inbounds i8, ptr %50, i64 13 %51 = load i8, ptr %arrayidx55, align 1 %conv56 = sext i8 %51 to i32 %mul57 = mul nsw i32 %49, %conv56 %add58 = add nsw i32 %mul54, %mul57 %52 = load i32, ptr %r, align 4 %53 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx59 = getelementptr inbounds i8, ptr %53, i64 14 %54 = load i8, ptr %arrayidx59, align 1 %conv60 = sext i8 %54 to i32 %mul61 = mul nsw i32 %52, %conv60 %add62 = add nsw i32 %add58, %mul61 %55 = load i32, ptr %a, align 4 %56 = load ptr, ptr %matrix_argb.addr, align 8 %arrayidx63 = getelementptr inbounds i8, ptr %56, i64 15 %57 = load i8, ptr %arrayidx63, align 1 %conv64 = sext i8 %57 to i32 %mul65 = mul nsw i32 %55, %conv64 %add66 = add nsw i32 %add62, %mul65 %shr67 = ashr i32 %add66, 6 store i32 %shr67, ptr %sa, align 4 %58 = load i32, ptr %sb, align 4 %call = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %58) %conv68 = trunc i32 %call to i8 %59 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %59, i64 0 store i8 %conv68, ptr %arrayidx69, align 1 %60 = load i32, ptr %sg, align 4 %call70 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %60) %conv71 = trunc i32 %call70 to i8 %61 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx72 = getelementptr inbounds i8, ptr %61, i64 1 store i8 %conv71, ptr %arrayidx72, align 1 %62 = load i32, ptr %sr, align 4 %call73 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %62) %conv74 = trunc i32 %call73 to i8 %63 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx75 = getelementptr inbounds i8, ptr %63, i64 2 store i8 %conv74, ptr %arrayidx75, align 1 %64 = load i32, ptr %sa, align 4 %call76 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %64) %conv77 = trunc i32 %call76 to i8 %65 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx78 = getelementptr inbounds i8, ptr %65, i64 3 store i8 %conv77, ptr %arrayidx78, align 1 %66 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %66, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %67 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr79 = getelementptr inbounds i8, ptr %67, i64 4 store ptr %add.ptr79, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %sa) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %sr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %sg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %sb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %68 = load i32, ptr %x, align 4 %inc = add nsw i32 %68, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !65 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %val) #4 { entry: %val.addr = alloca i32, align 4 %v = alloca i32, align 4 store i32 %val, ptr %val.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %v) #10 %0 = load i32, ptr %val.addr, align 4 %call = call noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %0) store i32 %call, ptr %v, align 4 %1 = load i32, ptr %v, align 4 %call1 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %1) call void @llvm.lifetime.end.p0(i64 4, ptr %v) #10 ret i32 %call1 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBColorTableRow_C(ptr noundef %dst_argb, ptr noundef %table_argb, i32 noundef %width) #0 { entry: %dst_argb.addr = alloca ptr, align 8 %table_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %table_argb, ptr %table_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 %10 = load ptr, ptr %table_argb.addr, align 8 %11 = load i32, ptr %b, align 4 %mul = mul nsw i32 %11, 4 %add = add nsw i32 %mul, 0 %idxprom = sext i32 %add to i64 %arrayidx7 = getelementptr inbounds i8, ptr %10, i64 %idxprom %12 = load i8, ptr %arrayidx7, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %13, i64 0 store i8 %12, ptr %arrayidx8, align 1 %14 = load ptr, ptr %table_argb.addr, align 8 %15 = load i32, ptr %g, align 4 %mul9 = mul nsw i32 %15, 4 %add10 = add nsw i32 %mul9, 1 %idxprom11 = sext i32 %add10 to i64 %arrayidx12 = getelementptr inbounds i8, ptr %14, i64 %idxprom11 %16 = load i8, ptr %arrayidx12, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %17, i64 1 store i8 %16, ptr %arrayidx13, align 1 %18 = load ptr, ptr %table_argb.addr, align 8 %19 = load i32, ptr %r, align 4 %mul14 = mul nsw i32 %19, 4 %add15 = add nsw i32 %mul14, 2 %idxprom16 = sext i32 %add15 to i64 %arrayidx17 = getelementptr inbounds i8, ptr %18, i64 %idxprom16 %20 = load i8, ptr %arrayidx17, align 1 %21 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %21, i64 2 store i8 %20, ptr %arrayidx18, align 1 %22 = load ptr, ptr %table_argb.addr, align 8 %23 = load i32, ptr %a, align 4 %mul19 = mul nsw i32 %23, 4 %add20 = add nsw i32 %mul19, 3 %idxprom21 = sext i32 %add20 to i64 %arrayidx22 = getelementptr inbounds i8, ptr %22, i64 %idxprom21 %24 = load i8, ptr %arrayidx22, align 1 %25 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %25, i64 3 store i8 %24, ptr %arrayidx23, align 1 %26 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %26, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %27 = load i32, ptr %x, align 4 %inc = add nsw i32 %27, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !66 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGBColorTableRow_C(ptr noundef %dst_argb, ptr noundef %table_argb, i32 noundef %width) #0 { entry: %dst_argb.addr = alloca ptr, align 8 %table_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %table_argb, ptr %table_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 %8 = load ptr, ptr %table_argb.addr, align 8 %9 = load i32, ptr %b, align 4 %mul = mul nsw i32 %9, 4 %add = add nsw i32 %mul, 0 %idxprom = sext i32 %add to i64 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %idxprom %10 = load i8, ptr %arrayidx5, align 1 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx6, align 1 %12 = load ptr, ptr %table_argb.addr, align 8 %13 = load i32, ptr %g, align 4 %mul7 = mul nsw i32 %13, 4 %add8 = add nsw i32 %mul7, 1 %idxprom9 = sext i32 %add8 to i64 %arrayidx10 = getelementptr inbounds i8, ptr %12, i64 %idxprom9 %14 = load i8, ptr %arrayidx10, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %15, i64 1 store i8 %14, ptr %arrayidx11, align 1 %16 = load ptr, ptr %table_argb.addr, align 8 %17 = load i32, ptr %r, align 4 %mul12 = mul nsw i32 %17, 4 %add13 = add nsw i32 %mul12, 2 %idxprom14 = sext i32 %add13 to i64 %arrayidx15 = getelementptr inbounds i8, ptr %16, i64 %idxprom14 %18 = load i8, ptr %arrayidx15, align 1 %19 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %19, i64 2 store i8 %18, ptr %arrayidx16, align 1 %20 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %21 = load i32, ptr %x, align 4 %inc = add nsw i32 %21, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !67 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBQuantizeRow_C(ptr noundef %dst_argb, i32 noundef %scale, i32 noundef %interval_size, i32 noundef %interval_offset, i32 noundef %width) #0 { entry: %dst_argb.addr = alloca ptr, align 8 %scale.addr = alloca i32, align 4 %interval_size.addr = alloca i32, align 4 %interval_offset.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %interval_size, ptr %interval_size.addr, align 4 store i32 %interval_offset, ptr %interval_offset.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 %8 = load i32, ptr %b, align 4 %9 = load i32, ptr %scale.addr, align 4 %mul = mul nsw i32 %8, %9 %shr = ashr i32 %mul, 16 %10 = load i32, ptr %interval_size.addr, align 4 %mul5 = mul nsw i32 %shr, %10 %11 = load i32, ptr %interval_offset.addr, align 4 %add = add nsw i32 %mul5, %11 %conv6 = trunc i32 %add to i8 %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv6, ptr %arrayidx7, align 1 %13 = load i32, ptr %g, align 4 %14 = load i32, ptr %scale.addr, align 4 %mul8 = mul nsw i32 %13, %14 %shr9 = ashr i32 %mul8, 16 %15 = load i32, ptr %interval_size.addr, align 4 %mul10 = mul nsw i32 %shr9, %15 %16 = load i32, ptr %interval_offset.addr, align 4 %add11 = add nsw i32 %mul10, %16 %conv12 = trunc i32 %add11 to i8 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %17, i64 1 store i8 %conv12, ptr %arrayidx13, align 1 %18 = load i32, ptr %r, align 4 %19 = load i32, ptr %scale.addr, align 4 %mul14 = mul nsw i32 %18, %19 %shr15 = ashr i32 %mul14, 16 %20 = load i32, ptr %interval_size.addr, align 4 %mul16 = mul nsw i32 %shr15, %20 %21 = load i32, ptr %interval_offset.addr, align 4 %add17 = add nsw i32 %mul16, %21 %conv18 = trunc i32 %add17 to i8 %22 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %22, i64 2 store i8 %conv18, ptr %arrayidx19, align 1 %23 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %23, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %24 = load i32, ptr %x, align 4 %inc = add nsw i32 %24, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !68 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBShadeRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, i32 noundef %width, i32 noundef %value) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %value.addr = alloca i32, align 4 %b_scale = alloca i32, align 4 %g_scale = alloca i32, align 4 %r_scale = alloca i32, align 4 %a_scale = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 store i32 %value, ptr %value.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_scale) #10 %0 = load i32, ptr %value.addr, align 4 %and = and i32 %0, 255 %1 = load i32, ptr %value.addr, align 4 %and1 = and i32 %1, 255 %shl = shl i32 %and1, 8 %or = or i32 %and, %shl store i32 %or, ptr %b_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g_scale) #10 %2 = load i32, ptr %value.addr, align 4 %shr = lshr i32 %2, 8 %and2 = and i32 %shr, 255 %3 = load i32, ptr %value.addr, align 4 %shr3 = lshr i32 %3, 8 %and4 = and i32 %shr3, 255 %shl5 = shl i32 %and4, 8 %or6 = or i32 %and2, %shl5 store i32 %or6, ptr %g_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r_scale) #10 %4 = load i32, ptr %value.addr, align 4 %shr7 = lshr i32 %4, 16 %and8 = and i32 %shr7, 255 %5 = load i32, ptr %value.addr, align 4 %shr9 = lshr i32 %5, 16 %and10 = and i32 %shr9, 255 %shl11 = shl i32 %and10, 8 %or12 = or i32 %and8, %shl11 store i32 %or12, ptr %r_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_scale) #10 %6 = load i32, ptr %value.addr, align 4 %shr13 = lshr i32 %6, 24 %7 = load i32, ptr %value.addr, align 4 %shr14 = lshr i32 %7, 24 %shl15 = shl i32 %shr14, 8 %or16 = or i32 %shr13, %shl15 store i32 %or16, ptr %a_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %8 = load i32, ptr %i, align 4 %9 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %8, %9 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %10, i64 0 %11 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %11 to i32 %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %12, i64 0 %13 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %13 to i32 %shl19 = shl i32 %conv18, 8 %or20 = or i32 %conv, %shl19 store i32 %or20, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %14 = load ptr, ptr %src_argb.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx21, align 1 %conv22 = zext i8 %15 to i32 %16 = load ptr, ptr %src_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %16, i64 1 %17 = load i8, ptr %arrayidx23, align 1 %conv24 = zext i8 %17 to i32 %shl25 = shl i32 %conv24, 8 %or26 = or i32 %conv22, %shl25 store i32 %or26, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %18 = load ptr, ptr %src_argb.addr, align 8 %arrayidx27 = getelementptr inbounds i8, ptr %18, i64 2 %19 = load i8, ptr %arrayidx27, align 1 %conv28 = zext i8 %19 to i32 %20 = load ptr, ptr %src_argb.addr, align 8 %arrayidx29 = getelementptr inbounds i8, ptr %20, i64 2 %21 = load i8, ptr %arrayidx29, align 1 %conv30 = zext i8 %21 to i32 %shl31 = shl i32 %conv30, 8 %or32 = or i32 %conv28, %shl31 store i32 %or32, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %22 = load ptr, ptr %src_argb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %22, i64 3 %23 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %23 to i32 %24 = load ptr, ptr %src_argb.addr, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %24, i64 3 %25 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %25 to i32 %shl37 = shl i32 %conv36, 8 %or38 = or i32 %conv34, %shl37 store i32 %or38, ptr %a, align 4 %26 = load i32, ptr %b_scale, align 4 %27 = load i32, ptr %b, align 4 %mul = mul i32 %26, %27 %shr39 = lshr i32 %mul, 24 %conv40 = trunc i32 %shr39 to i8 %28 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx41 = getelementptr inbounds i8, ptr %28, i64 0 store i8 %conv40, ptr %arrayidx41, align 1 %29 = load i32, ptr %g_scale, align 4 %30 = load i32, ptr %g, align 4 %mul42 = mul i32 %29, %30 %shr43 = lshr i32 %mul42, 24 %conv44 = trunc i32 %shr43 to i8 %31 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx45 = getelementptr inbounds i8, ptr %31, i64 1 store i8 %conv44, ptr %arrayidx45, align 1 %32 = load i32, ptr %r_scale, align 4 %33 = load i32, ptr %r, align 4 %mul46 = mul i32 %32, %33 %shr47 = lshr i32 %mul46, 24 %conv48 = trunc i32 %shr47 to i8 %34 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx49 = getelementptr inbounds i8, ptr %34, i64 2 store i8 %conv48, ptr %arrayidx49, align 1 %35 = load i32, ptr %a_scale, align 4 %36 = load i32, ptr %a, align 4 %mul50 = mul i32 %35, %36 %shr51 = lshr i32 %mul50, 24 %conv52 = trunc i32 %shr51 to i8 %37 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx53 = getelementptr inbounds i8, ptr %37, i64 3 store i8 %conv52, ptr %arrayidx53, align 1 %38 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %38, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %39 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %39, i64 4 store ptr %add.ptr54, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %40 = load i32, ptr %i, align 4 %inc = add nsw i32 %40, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !69 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_scale) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBMultiplyRow_C(ptr noundef %src_argb, ptr noundef %src_argb1, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %src_argb1.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 %b_scale = alloca i32, align 4 %g_scale = alloca i32, align 4 %r_scale = alloca i32, align 4 %a_scale = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %src_argb1, ptr %src_argb1.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_scale) #10 %10 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %10, i64 0 %11 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %11 to i32 store i32 %conv8, ptr %b_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g_scale) #10 %12 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %13 to i32 store i32 %conv10, ptr %g_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r_scale) #10 %14 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %15 to i32 store i32 %conv12, ptr %r_scale, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_scale) #10 %16 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %16, i64 3 %17 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %17 to i32 store i32 %conv14, ptr %a_scale, align 4 %18 = load i32, ptr %b, align 4 %19 = load i32, ptr %b_scale, align 4 %mul = mul i32 %18, %19 %add = add i32 %mul, 128 %shr = lshr i32 %add, 8 %conv15 = trunc i32 %shr to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %20, i64 0 store i8 %conv15, ptr %arrayidx16, align 1 %21 = load i32, ptr %g, align 4 %22 = load i32, ptr %g_scale, align 4 %mul17 = mul i32 %21, %22 %add18 = add i32 %mul17, 128 %shr19 = lshr i32 %add18, 8 %conv20 = trunc i32 %shr19 to i8 %23 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv20, ptr %arrayidx21, align 1 %24 = load i32, ptr %r, align 4 %25 = load i32, ptr %r_scale, align 4 %mul22 = mul i32 %24, %25 %add23 = add i32 %mul22, 128 %shr24 = lshr i32 %add23, 8 %conv25 = trunc i32 %shr24 to i8 %26 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx26 = getelementptr inbounds i8, ptr %26, i64 2 store i8 %conv25, ptr %arrayidx26, align 1 %27 = load i32, ptr %a, align 4 %28 = load i32, ptr %a_scale, align 4 %mul27 = mul i32 %27, %28 %add28 = add i32 %mul27, 128 %shr29 = lshr i32 %add28, 8 %conv30 = trunc i32 %shr29 to i8 %29 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx31 = getelementptr inbounds i8, ptr %29, i64 3 store i8 %conv30, ptr %arrayidx31, align 1 %30 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %30, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %31 = load ptr, ptr %src_argb1.addr, align 8 %add.ptr32 = getelementptr inbounds i8, ptr %31, i64 4 store ptr %add.ptr32, ptr %src_argb1.addr, align 8 %32 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr33 = getelementptr inbounds i8, ptr %32, i64 4 store ptr %add.ptr33, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_scale) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %33 = load i32, ptr %i, align 4 %inc = add nsw i32 %33, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !70 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBAddRow_C(ptr noundef %src_argb, ptr noundef %src_argb1, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %src_argb1.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 %b_add = alloca i32, align 4 %g_add = alloca i32, align 4 %r_add = alloca i32, align 4 %a_add = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %src_argb1, ptr %src_argb1.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_add) #10 %10 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %10, i64 0 %11 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %11 to i32 store i32 %conv8, ptr %b_add, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g_add) #10 %12 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %13 to i32 store i32 %conv10, ptr %g_add, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r_add) #10 %14 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %15 to i32 store i32 %conv12, ptr %r_add, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_add) #10 %16 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %16, i64 3 %17 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %17 to i32 store i32 %conv14, ptr %a_add, align 4 %18 = load i32, ptr %b_add, align 4 %19 = load i32, ptr %b, align 4 %add = add nsw i32 %18, %19 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add) %conv15 = trunc i32 %call to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %20, i64 0 store i8 %conv15, ptr %arrayidx16, align 1 %21 = load i32, ptr %g_add, align 4 %22 = load i32, ptr %g, align 4 %add17 = add nsw i32 %21, %22 %call18 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add17) %conv19 = trunc i32 %call18 to i8 %23 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv19, ptr %arrayidx20, align 1 %24 = load i32, ptr %r_add, align 4 %25 = load i32, ptr %r, align 4 %add21 = add nsw i32 %24, %25 %call22 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add21) %conv23 = trunc i32 %call22 to i8 %26 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %26, i64 2 store i8 %conv23, ptr %arrayidx24, align 1 %27 = load i32, ptr %a_add, align 4 %28 = load i32, ptr %a, align 4 %add25 = add nsw i32 %27, %28 %call26 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add25) %conv27 = trunc i32 %call26 to i8 %29 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx28 = getelementptr inbounds i8, ptr %29, i64 3 store i8 %conv27, ptr %arrayidx28, align 1 %30 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %30, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %31 = load ptr, ptr %src_argb1.addr, align 8 %add.ptr29 = getelementptr inbounds i8, ptr %31, i64 4 store ptr %add.ptr29, ptr %src_argb1.addr, align 8 %32 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr30 = getelementptr inbounds i8, ptr %32, i64 4 store ptr %add.ptr30, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a_add) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r_add) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g_add) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_add) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %33 = load i32, ptr %i, align 4 %inc = add nsw i32 %33, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !71 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBSubtractRow_C(ptr noundef %src_argb, ptr noundef %src_argb1, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %src_argb1.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 %b_sub = alloca i32, align 4 %g_sub = alloca i32, align 4 %r_sub = alloca i32, align 4 %a_sub = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %src_argb1, ptr %src_argb1.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_sub) #10 %10 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %10, i64 0 %11 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %11 to i32 store i32 %conv8, ptr %b_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g_sub) #10 %12 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %13 to i32 store i32 %conv10, ptr %g_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r_sub) #10 %14 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %15 to i32 store i32 %conv12, ptr %r_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_sub) #10 %16 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %16, i64 3 %17 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %17 to i32 store i32 %conv14, ptr %a_sub, align 4 %18 = load i32, ptr %b, align 4 %19 = load i32, ptr %b_sub, align 4 %sub = sub nsw i32 %18, %19 %call = call noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %sub) %conv15 = trunc i32 %call to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %20, i64 0 store i8 %conv15, ptr %arrayidx16, align 1 %21 = load i32, ptr %g, align 4 %22 = load i32, ptr %g_sub, align 4 %sub17 = sub nsw i32 %21, %22 %call18 = call noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %sub17) %conv19 = trunc i32 %call18 to i8 %23 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv19, ptr %arrayidx20, align 1 %24 = load i32, ptr %r, align 4 %25 = load i32, ptr %r_sub, align 4 %sub21 = sub nsw i32 %24, %25 %call22 = call noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %sub21) %conv23 = trunc i32 %call22 to i8 %26 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %26, i64 2 store i8 %conv23, ptr %arrayidx24, align 1 %27 = load i32, ptr %a, align 4 %28 = load i32, ptr %a_sub, align 4 %sub25 = sub nsw i32 %27, %28 %call26 = call noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %sub25) %conv27 = trunc i32 %call26 to i8 %29 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx28 = getelementptr inbounds i8, ptr %29, i64 3 store i8 %conv27, ptr %arrayidx28, align 1 %30 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %30, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %31 = load ptr, ptr %src_argb1.addr, align 8 %add.ptr29 = getelementptr inbounds i8, ptr %31, i64 4 store ptr %add.ptr29, ptr %src_argb1.addr, align 8 %32 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr30 = getelementptr inbounds i8, ptr %32, i64 4 store ptr %add.ptr30, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %33 = load i32, ptr %i, align 4 %inc = add nsw i32 %33, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !72 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %v) #4 { entry: %v.addr = alloca i32, align 4 store i32 %v, ptr %v.addr, align 4 %0 = load i32, ptr %v.addr, align 4 %cmp = icmp sge i32 %0, 0 %conv = zext i1 %cmp to i32 %sub = sub nsw i32 0, %conv %1 = load i32, ptr %v.addr, align 4 %and = and i32 %sub, %1 ret i32 %and } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SobelXRow_C(ptr noundef %src_y0, ptr noundef %src_y1, ptr noundef %src_y2, ptr noundef %dst_sobelx, i32 noundef %width) #0 { entry: %src_y0.addr = alloca ptr, align 8 %src_y1.addr = alloca ptr, align 8 %src_y2.addr = alloca ptr, align 8 %dst_sobelx.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %a = alloca i32, align 4 %b = alloca i32, align 4 %c = alloca i32, align 4 %a_sub = alloca i32, align 4 %b_sub = alloca i32, align 4 %c_sub = alloca i32, align 4 %a_diff = alloca i32, align 4 %b_diff = alloca i32, align 4 %c_diff = alloca i32, align 4 %sobel = alloca i32, align 4 store ptr %src_y0, ptr %src_y0.addr, align 8 store ptr %src_y1, ptr %src_y1.addr, align 8 store ptr %src_y2, ptr %src_y2.addr, align 8 store ptr %dst_sobelx, ptr %dst_sobelx.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %2 = load ptr, ptr %src_y0.addr, align 8 %3 = load i32, ptr %i, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 store i32 %conv, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %5 = load ptr, ptr %src_y1.addr, align 8 %6 = load i32, ptr %i, align 4 %idxprom1 = sext i32 %6 to i64 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 %idxprom1 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 store i32 %conv3, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %c) #10 %8 = load ptr, ptr %src_y2.addr, align 8 %9 = load i32, ptr %i, align 4 %idxprom4 = sext i32 %9 to i64 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %idxprom4 %10 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %10 to i32 store i32 %conv6, ptr %c, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_sub) #10 %11 = load ptr, ptr %src_y0.addr, align 8 %12 = load i32, ptr %i, align 4 %add = add nsw i32 %12, 2 %idxprom7 = sext i32 %add to i64 %arrayidx8 = getelementptr inbounds i8, ptr %11, i64 %idxprom7 %13 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %13 to i32 store i32 %conv9, ptr %a_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_sub) #10 %14 = load ptr, ptr %src_y1.addr, align 8 %15 = load i32, ptr %i, align 4 %add10 = add nsw i32 %15, 2 %idxprom11 = sext i32 %add10 to i64 %arrayidx12 = getelementptr inbounds i8, ptr %14, i64 %idxprom11 %16 = load i8, ptr %arrayidx12, align 1 %conv13 = zext i8 %16 to i32 store i32 %conv13, ptr %b_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %c_sub) #10 %17 = load ptr, ptr %src_y2.addr, align 8 %18 = load i32, ptr %i, align 4 %add14 = add nsw i32 %18, 2 %idxprom15 = sext i32 %add14 to i64 %arrayidx16 = getelementptr inbounds i8, ptr %17, i64 %idxprom15 %19 = load i8, ptr %arrayidx16, align 1 %conv17 = zext i8 %19 to i32 store i32 %conv17, ptr %c_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_diff) #10 %20 = load i32, ptr %a, align 4 %21 = load i32, ptr %a_sub, align 4 %sub = sub nsw i32 %20, %21 store i32 %sub, ptr %a_diff, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_diff) #10 %22 = load i32, ptr %b, align 4 %23 = load i32, ptr %b_sub, align 4 %sub18 = sub nsw i32 %22, %23 store i32 %sub18, ptr %b_diff, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %c_diff) #10 %24 = load i32, ptr %c, align 4 %25 = load i32, ptr %c_sub, align 4 %sub19 = sub nsw i32 %24, %25 store i32 %sub19, ptr %c_diff, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sobel) #10 %26 = load i32, ptr %a_diff, align 4 %27 = load i32, ptr %b_diff, align 4 %mul = mul nsw i32 %27, 2 %add20 = add nsw i32 %26, %mul %28 = load i32, ptr %c_diff, align 4 %add21 = add nsw i32 %add20, %28 %call = call noundef i32 @_ZN6libyuvL3AbsEi(i32 noundef %add21) store i32 %call, ptr %sobel, align 4 %29 = load i32, ptr %sobel, align 4 %call22 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %29) %conv23 = trunc i32 %call22 to i8 %30 = load ptr, ptr %dst_sobelx.addr, align 8 %31 = load i32, ptr %i, align 4 %idxprom24 = sext i32 %31 to i64 %arrayidx25 = getelementptr inbounds i8, ptr %30, i64 %idxprom24 store i8 %conv23, ptr %arrayidx25, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %sobel) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %c_diff) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_diff) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a_diff) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %c_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %c) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 br label %for.inc for.inc: ; preds = %for.body %32 = load i32, ptr %i, align 4 %inc = add nsw i32 %32, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !73 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL3AbsEi(i32 noundef %v) #4 { entry: %v.addr = alloca i32, align 4 %m = alloca i32, align 4 store i32 %v, ptr %v.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %m) #10 %0 = load i32, ptr %v.addr, align 4 %cmp = icmp slt i32 %0, 0 %conv = zext i1 %cmp to i32 %sub = sub nsw i32 0, %conv store i32 %sub, ptr %m, align 4 %1 = load i32, ptr %v.addr, align 4 %2 = load i32, ptr %m, align 4 %add = add nsw i32 %1, %2 %3 = load i32, ptr %m, align 4 %xor = xor i32 %add, %3 call void @llvm.lifetime.end.p0(i64 4, ptr %m) #10 ret i32 %xor } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SobelYRow_C(ptr noundef %src_y0, ptr noundef %src_y1, ptr noundef %dst_sobely, i32 noundef %width) #0 { entry: %src_y0.addr = alloca ptr, align 8 %src_y1.addr = alloca ptr, align 8 %dst_sobely.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %a = alloca i32, align 4 %b = alloca i32, align 4 %c = alloca i32, align 4 %a_sub = alloca i32, align 4 %b_sub = alloca i32, align 4 %c_sub = alloca i32, align 4 %a_diff = alloca i32, align 4 %b_diff = alloca i32, align 4 %c_diff = alloca i32, align 4 %sobel = alloca i32, align 4 store ptr %src_y0, ptr %src_y0.addr, align 8 store ptr %src_y1, ptr %src_y1.addr, align 8 store ptr %dst_sobely, ptr %dst_sobely.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %2 = load ptr, ptr %src_y0.addr, align 8 %3 = load i32, ptr %i, align 4 %add = add nsw i32 %3, 0 %idxprom = sext i32 %add to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 store i32 %conv, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %5 = load ptr, ptr %src_y0.addr, align 8 %6 = load i32, ptr %i, align 4 %add1 = add nsw i32 %6, 1 %idxprom2 = sext i32 %add1 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %5, i64 %idxprom2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %c) #10 %8 = load ptr, ptr %src_y0.addr, align 8 %9 = load i32, ptr %i, align 4 %add5 = add nsw i32 %9, 2 %idxprom6 = sext i32 %add5 to i64 %arrayidx7 = getelementptr inbounds i8, ptr %8, i64 %idxprom6 %10 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %10 to i32 store i32 %conv8, ptr %c, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_sub) #10 %11 = load ptr, ptr %src_y1.addr, align 8 %12 = load i32, ptr %i, align 4 %add9 = add nsw i32 %12, 0 %idxprom10 = sext i32 %add9 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %11, i64 %idxprom10 %13 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %13 to i32 store i32 %conv12, ptr %a_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_sub) #10 %14 = load ptr, ptr %src_y1.addr, align 8 %15 = load i32, ptr %i, align 4 %add13 = add nsw i32 %15, 1 %idxprom14 = sext i32 %add13 to i64 %arrayidx15 = getelementptr inbounds i8, ptr %14, i64 %idxprom14 %16 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %16 to i32 store i32 %conv16, ptr %b_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %c_sub) #10 %17 = load ptr, ptr %src_y1.addr, align 8 %18 = load i32, ptr %i, align 4 %add17 = add nsw i32 %18, 2 %idxprom18 = sext i32 %add17 to i64 %arrayidx19 = getelementptr inbounds i8, ptr %17, i64 %idxprom18 %19 = load i8, ptr %arrayidx19, align 1 %conv20 = zext i8 %19 to i32 store i32 %conv20, ptr %c_sub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a_diff) #10 %20 = load i32, ptr %a, align 4 %21 = load i32, ptr %a_sub, align 4 %sub = sub nsw i32 %20, %21 store i32 %sub, ptr %a_diff, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b_diff) #10 %22 = load i32, ptr %b, align 4 %23 = load i32, ptr %b_sub, align 4 %sub21 = sub nsw i32 %22, %23 store i32 %sub21, ptr %b_diff, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %c_diff) #10 %24 = load i32, ptr %c, align 4 %25 = load i32, ptr %c_sub, align 4 %sub22 = sub nsw i32 %24, %25 store i32 %sub22, ptr %c_diff, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %sobel) #10 %26 = load i32, ptr %a_diff, align 4 %27 = load i32, ptr %b_diff, align 4 %mul = mul nsw i32 %27, 2 %add23 = add nsw i32 %26, %mul %28 = load i32, ptr %c_diff, align 4 %add24 = add nsw i32 %add23, %28 %call = call noundef i32 @_ZN6libyuvL3AbsEi(i32 noundef %add24) store i32 %call, ptr %sobel, align 4 %29 = load i32, ptr %sobel, align 4 %call25 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %29) %conv26 = trunc i32 %call25 to i8 %30 = load ptr, ptr %dst_sobely.addr, align 8 %31 = load i32, ptr %i, align 4 %idxprom27 = sext i32 %31 to i64 %arrayidx28 = getelementptr inbounds i8, ptr %30, i64 %idxprom27 store i8 %conv26, ptr %arrayidx28, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %sobel) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %c_diff) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_diff) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a_diff) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %c_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a_sub) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %c) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 br label %for.inc for.inc: ; preds = %for.body %32 = load i32, ptr %i, align 4 %inc = add nsw i32 %32, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !74 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SobelRow_C(ptr noundef %src_sobelx, ptr noundef %src_sobely, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_sobelx.addr = alloca ptr, align 8 %src_sobely.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %r = alloca i32, align 4 %b = alloca i32, align 4 %s = alloca i32, align 4 store ptr %src_sobelx, ptr %src_sobelx.addr, align 8 store ptr %src_sobely, ptr %src_sobely.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %2 = load ptr, ptr %src_sobelx.addr, align 8 %3 = load i32, ptr %i, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 store i32 %conv, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %5 = load ptr, ptr %src_sobely.addr, align 8 %6 = load i32, ptr %i, align 4 %idxprom1 = sext i32 %6 to i64 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 %idxprom1 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 store i32 %conv3, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %s) #10 %8 = load i32, ptr %r, align 4 %9 = load i32, ptr %b, align 4 %add = add nsw i32 %8, %9 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add) store i32 %call, ptr %s, align 4 %10 = load i32, ptr %s, align 4 %conv4 = trunc i32 %10 to i8 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %conv4, ptr %arrayidx5, align 1 %12 = load i32, ptr %s, align 4 %conv6 = trunc i32 %12 to i8 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %conv6, ptr %arrayidx7, align 1 %14 = load i32, ptr %s, align 4 %conv8 = trunc i32 %14 to i8 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %conv8, ptr %arrayidx9, align 1 %16 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %16, i64 3 store i8 -1, ptr %arrayidx10, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %17, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %s) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %18 = load i32, ptr %i, align 4 %inc = add nsw i32 %18, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !75 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SobelToPlaneRow_C(ptr noundef %src_sobelx, ptr noundef %src_sobely, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_sobelx.addr = alloca ptr, align 8 %src_sobely.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %r = alloca i32, align 4 %b = alloca i32, align 4 %s = alloca i32, align 4 store ptr %src_sobelx, ptr %src_sobelx.addr, align 8 store ptr %src_sobely, ptr %src_sobely.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %2 = load ptr, ptr %src_sobelx.addr, align 8 %3 = load i32, ptr %i, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 store i32 %conv, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %5 = load ptr, ptr %src_sobely.addr, align 8 %6 = load i32, ptr %i, align 4 %idxprom1 = sext i32 %6 to i64 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 %idxprom1 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 store i32 %conv3, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %s) #10 %8 = load i32, ptr %r, align 4 %9 = load i32, ptr %b, align 4 %add = add nsw i32 %8, %9 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add) store i32 %call, ptr %s, align 4 %10 = load i32, ptr %s, align 4 %conv4 = trunc i32 %10 to i8 %11 = load ptr, ptr %dst_y.addr, align 8 %12 = load i32, ptr %i, align 4 %idxprom5 = sext i32 %12 to i64 %arrayidx6 = getelementptr inbounds i8, ptr %11, i64 %idxprom5 store i8 %conv4, ptr %arrayidx6, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %s) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %13 = load i32, ptr %i, align 4 %inc = add nsw i32 %13, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !76 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SobelXYRow_C(ptr noundef %src_sobelx, ptr noundef %src_sobely, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_sobelx.addr = alloca ptr, align 8 %src_sobely.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %r = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 store ptr %src_sobelx, ptr %src_sobelx.addr, align 8 store ptr %src_sobely, ptr %src_sobely.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %2 = load ptr, ptr %src_sobelx.addr, align 8 %3 = load i32, ptr %i, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 store i32 %conv, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %5 = load ptr, ptr %src_sobely.addr, align 8 %6 = load i32, ptr %i, align 4 %idxprom1 = sext i32 %6 to i64 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 %idxprom1 %7 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %7 to i32 store i32 %conv3, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %8 = load i32, ptr %r, align 4 %9 = load i32, ptr %b, align 4 %add = add nsw i32 %8, %9 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add) store i32 %call, ptr %g, align 4 %10 = load i32, ptr %b, align 4 %conv4 = trunc i32 %10 to i8 %11 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %conv4, ptr %arrayidx5, align 1 %12 = load i32, ptr %g, align 4 %conv6 = trunc i32 %12 to i8 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %conv6, ptr %arrayidx7, align 1 %14 = load i32, ptr %r, align 4 %conv8 = trunc i32 %14 to i8 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %conv8, ptr %arrayidx9, align 1 %16 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %16, i64 3 store i8 -1, ptr %arrayidx10, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %17, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %18 = load i32, ptr %i, align 4 %inc = add nsw i32 %18, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !77 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @J400ToARGBRow_C(ptr noundef %src_y, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i8, align 1 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %y) #10 %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %y, align 1 %4 = load i8, ptr %y, align 1 %5 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 0 store i8 %4, ptr %arrayidx1, align 1 %6 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 store i8 %4, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 2 store i8 %4, ptr %arrayidx3, align 1 %8 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 3 store i8 -1, ptr %arrayidx4, align 1 %9 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %9, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 %10 = load ptr, ptr %src_y.addr, align 8 %incdec.ptr = getelementptr inbounds nuw i8, ptr %10, i32 1 store ptr %incdec.ptr, ptr %src_y.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %y) #10 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !78 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I444ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %13, i64 1 store ptr %add.ptr6, ptr %src_y.addr, align 8 %14 = load ptr, ptr %src_u.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %14, i64 1 store ptr %add.ptr7, ptr %src_u.addr, align 8 %15 = load ptr, ptr %src_v.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %15, i64 1 store ptr %add.ptr8, ptr %src_v.addr, align 8 %16 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %16, i64 4 store ptr %add.ptr9, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !79 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %y, i8 noundef zeroext %u, i8 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i8, align 1 %u.addr = alloca i8, align 1 %v.addr = alloca i8, align 1 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ub = alloca i32, align 4 %ug = alloca i32, align 4 %vg = alloca i32, align 4 %vr = alloca i32, align 4 %yg = alloca i32, align 4 %yb = alloca i32, align 4 %y32 = alloca i32, align 4 %y1 = alloca i32, align 4 %ui = alloca i8, align 1 %vi = alloca i8, align 1 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i8 %y, ptr %y.addr, align 1 store i8 %u, ptr %u.addr, align 1 store i8 %v, ptr %v.addr, align 1 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ub) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToB = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 0 %arrayidx = getelementptr inbounds [32 x i8], ptr %kUVToB, i64 0, i64 0 %1 = load i8, ptr %arrayidx, align 2 %conv = zext i8 %1 to i32 store i32 %conv, ptr %ub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ug) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 1 %arrayidx1 = getelementptr inbounds [32 x i8], ptr %kUVToG, i64 0, i64 0 %3 = load i8, ptr %arrayidx1, align 2 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %ug, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vg) #10 %4 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG3 = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %4, i32 0, i32 1 %arrayidx4 = getelementptr inbounds [32 x i8], ptr %kUVToG3, i64 0, i64 1 %5 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %5 to i32 store i32 %conv5, ptr %vg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vr) #10 %6 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToR = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %6, i32 0, i32 2 %arrayidx6 = getelementptr inbounds [32 x i8], ptr %kUVToR, i64 0, i64 1 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 store i32 %conv7, ptr %vr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %8 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %8, i32 0, i32 3 %arrayidx8 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %9 = load i16, ptr %arrayidx8, align 2 %conv9 = sext i16 %9 to i32 store i32 %conv9, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yb) #10 %10 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %10, i32 0, i32 4 %arrayidx10 = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %11 = load i16, ptr %arrayidx10, align 2 %conv11 = sext i16 %11 to i32 store i32 %conv11, ptr %yb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y32) #10 %12 = load i8, ptr %y.addr, align 1 %conv12 = zext i8 %12 to i32 %mul = mul nsw i32 %conv12, 257 store i32 %mul, ptr %y32, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %13 = load i32, ptr %y32, align 4 %14 = load i32, ptr %yg, align 4 %mul13 = mul i32 %13, %14 %shr = lshr i32 %mul13, 16 %15 = load i32, ptr %yb, align 4 %add = add i32 %shr, %15 store i32 %add, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %ui) #10 %16 = load i8, ptr %u.addr, align 1 store i8 %16, ptr %ui, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %vi) #10 %17 = load i8, ptr %v.addr, align 1 store i8 %17, ptr %vi, align 1 %18 = load i8, ptr %ui, align 1 %conv14 = sext i8 %18 to i32 %sub = sub nsw i32 %conv14, 128 %conv15 = trunc i32 %sub to i8 store i8 %conv15, ptr %ui, align 1 %19 = load i8, ptr %vi, align 1 %conv16 = sext i8 %19 to i32 %sub17 = sub nsw i32 %conv16, 128 %conv18 = trunc i32 %sub17 to i8 store i8 %conv18, ptr %vi, align 1 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 %20 = load i32, ptr %y1, align 4 %21 = load i8, ptr %ui, align 1 %conv19 = sext i8 %21 to i32 %22 = load i32, ptr %ub, align 4 %mul20 = mul nsw i32 %conv19, %22 %add21 = add nsw i32 %20, %mul20 store i32 %add21, ptr %b16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 %23 = load i32, ptr %y1, align 4 %24 = load i8, ptr %ui, align 1 %conv22 = sext i8 %24 to i32 %25 = load i32, ptr %ug, align 4 %mul23 = mul nsw i32 %conv22, %25 %26 = load i8, ptr %vi, align 1 %conv24 = sext i8 %26 to i32 %27 = load i32, ptr %vg, align 4 %mul25 = mul nsw i32 %conv24, %27 %add26 = add nsw i32 %mul23, %mul25 %sub27 = sub nsw i32 %23, %add26 store i32 %sub27, ptr %g16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 %28 = load i32, ptr %y1, align 4 %29 = load i8, ptr %vi, align 1 %conv28 = sext i8 %29 to i32 %30 = load i32, ptr %vr, align 4 %mul29 = mul nsw i32 %conv28, %30 %add30 = add nsw i32 %28, %mul29 store i32 %add30, ptr %r16, align 4 %31 = load i32, ptr %b16, align 4 %shr31 = ashr i32 %31, 6 %call = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr31) %conv32 = trunc i32 %call to i8 %32 = load ptr, ptr %b.addr, align 8 store i8 %conv32, ptr %32, align 1 %33 = load i32, ptr %g16, align 4 %shr33 = ashr i32 %33, 6 %call34 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr33) %conv35 = trunc i32 %call34 to i8 %34 = load ptr, ptr %g.addr, align 8 store i8 %conv35, ptr %34, align 1 %35 = load i32, ptr %r16, align 4 %shr36 = ashr i32 %35, 6 %call37 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr36) %conv38 = trunc i32 %call37 to i8 %36 = load ptr, ptr %r.addr, align 8 store i8 %conv38, ptr %36, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %vi) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ui) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ug) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ub) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I444ToRGB24Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_y.addr, align 8 %add.ptr5 = getelementptr inbounds i8, ptr %12, i64 1 store ptr %add.ptr5, ptr %src_y.addr, align 8 %13 = load ptr, ptr %src_u.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %13, i64 1 store ptr %add.ptr6, ptr %src_u.addr, align 8 %14 = load ptr, ptr %src_v.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %14, i64 1 store ptr %add.ptr7, ptr %src_v.addr, align 8 %15 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %15, i64 3 store ptr %add.ptr8, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !80 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 0 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 1 store ptr %add.ptr14, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %26, i64 1 store ptr %add.ptr15, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr16 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr16, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !81 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %30, i64 0 %31 = load i8, ptr %arrayidx17, align 1 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx18, align 1 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load i8, ptr %arrayidx19, align 1 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 0 %37 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 1 %38 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %38, i64 2 %39 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %31, i8 noundef zeroext %33, i8 noundef zeroext %35, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %add.ptr22, ptr noundef %39) %40 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %40, i64 3 store i8 -1, ptr %arrayidx23, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I210ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i16, ptr %13, i64 1 %14 = load i16, ptr %arrayidx6, align 2 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx7 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx7, align 2 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx8 = getelementptr inbounds i16, ptr %17, i64 0 %18 = load i16, ptr %arrayidx8, align 2 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %14, i16 noundef zeroext %16, i16 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i16, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr14 = getelementptr inbounds i16, ptr %25, i64 1 store ptr %add.ptr14, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr15 = getelementptr inbounds i16, ptr %26, i64 1 store ptr %add.ptr15, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr16 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr16, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !82 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx17 = getelementptr inbounds i16, ptr %30, i64 0 %31 = load i16, ptr %arrayidx17, align 2 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx18 = getelementptr inbounds i16, ptr %32, i64 0 %33 = load i16, ptr %arrayidx18, align 2 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx19 = getelementptr inbounds i16, ptr %34, i64 0 %35 = load i16, ptr %arrayidx19, align 2 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 0 %37 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 1 %38 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %38, i64 2 %39 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %31, i16 noundef zeroext %33, i16 noundef zeroext %35, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %add.ptr22, ptr noundef %39) %40 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %40, i64 3 store i8 -1, ptr %arrayidx23, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %y, i16 noundef zeroext %u, i16 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i16, align 2 %u.addr = alloca i16, align 2 %v.addr = alloca i16, align 2 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i16 %y, ptr %y.addr, align 2 store i16 %u, ptr %u.addr, align 2 store i16 %v, ptr %v.addr, align 2 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 store i32 -1431655766, ptr %b16, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 store i32 -1431655766, ptr %g16, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 store i32 -1431655766, ptr %r16, align 4, !annotation !4 %0 = load i16, ptr %y.addr, align 2 %1 = load i16, ptr %u.addr, align 2 %2 = load i16, ptr %v.addr, align 2 %3 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel10_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %0, i16 noundef zeroext %1, i16 noundef zeroext %2, ptr noundef %b16, ptr noundef %g16, ptr noundef %r16, ptr noundef %3) %4 = load i32, ptr %b16, align 4 %shr = ashr i32 %4, 6 %call = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr) %conv = trunc i32 %call to i8 %5 = load ptr, ptr %b.addr, align 8 store i8 %conv, ptr %5, align 1 %6 = load i32, ptr %g16, align 4 %shr1 = ashr i32 %6, 6 %call2 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr1) %conv3 = trunc i32 %call2 to i8 %7 = load ptr, ptr %g.addr, align 8 store i8 %conv3, ptr %7, align 1 %8 = load i32, ptr %r16, align 4 %shr4 = ashr i32 %8, 6 %call5 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr4) %conv6 = trunc i32 %call5 to i8 %9 = load ptr, ptr %r.addr, align 8 store i8 %conv6, ptr %9, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I410ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i16, ptr %13, i64 1 store ptr %add.ptr6, ptr %src_y.addr, align 8 %14 = load ptr, ptr %src_u.addr, align 8 %add.ptr7 = getelementptr inbounds i16, ptr %14, i64 1 store ptr %add.ptr7, ptr %src_u.addr, align 8 %15 = load ptr, ptr %src_v.addr, align 8 %add.ptr8 = getelementptr inbounds i16, ptr %15, i64 1 store ptr %add.ptr8, ptr %src_v.addr, align 8 %16 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %16, i64 4 store ptr %add.ptr9, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !83 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I210AlphaToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %src_a, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_a.addr, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %12, i64 0 %13 = load i16, ptr %arrayidx5, align 2 %conv = zext i16 %13 to i32 %shr = ashr i32 %conv, 2 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv6 = trunc i32 %call to i8 %14 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %conv6, ptr %arrayidx7, align 1 %15 = load ptr, ptr %src_y.addr, align 8 %arrayidx8 = getelementptr inbounds i16, ptr %15, i64 1 %16 = load i16, ptr %arrayidx8, align 2 %17 = load ptr, ptr %src_u.addr, align 8 %arrayidx9 = getelementptr inbounds i16, ptr %17, i64 0 %18 = load i16, ptr %arrayidx9, align 2 %19 = load ptr, ptr %src_v.addr, align 8 %arrayidx10 = getelementptr inbounds i16, ptr %19, i64 0 %20 = load i16, ptr %arrayidx10, align 2 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 4 %22 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %22, i64 5 %23 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %23, i64 6 %24 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %16, i16 noundef zeroext %18, i16 noundef zeroext %20, ptr noundef %add.ptr11, ptr noundef %add.ptr12, ptr noundef %add.ptr13, ptr noundef %24) %25 = load ptr, ptr %src_a.addr, align 8 %arrayidx14 = getelementptr inbounds i16, ptr %25, i64 1 %26 = load i16, ptr %arrayidx14, align 2 %conv15 = zext i16 %26 to i32 %shr16 = ashr i32 %conv15, 2 %call17 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr16) %conv18 = trunc i32 %call17 to i8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %27, i64 7 store i8 %conv18, ptr %arrayidx19, align 1 %28 = load ptr, ptr %src_y.addr, align 8 %add.ptr20 = getelementptr inbounds i16, ptr %28, i64 2 store ptr %add.ptr20, ptr %src_y.addr, align 8 %29 = load ptr, ptr %src_u.addr, align 8 %add.ptr21 = getelementptr inbounds i16, ptr %29, i64 1 store ptr %add.ptr21, ptr %src_u.addr, align 8 %30 = load ptr, ptr %src_v.addr, align 8 %add.ptr22 = getelementptr inbounds i16, ptr %30, i64 1 store ptr %add.ptr22, ptr %src_v.addr, align 8 %31 = load ptr, ptr %src_a.addr, align 8 %add.ptr23 = getelementptr inbounds i16, ptr %31, i64 2 store ptr %add.ptr23, ptr %src_a.addr, align 8 %32 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr24 = getelementptr inbounds i8, ptr %32, i64 8 store ptr %add.ptr24, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %33 = load i32, ptr %x, align 4 %add = add nsw i32 %33, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !84 for.end: ; preds = %for.cond %34 = load i32, ptr %width.addr, align 4 %and = and i32 %34, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %35 = load ptr, ptr %src_y.addr, align 8 %arrayidx25 = getelementptr inbounds i16, ptr %35, i64 0 %36 = load i16, ptr %arrayidx25, align 2 %37 = load ptr, ptr %src_u.addr, align 8 %arrayidx26 = getelementptr inbounds i16, ptr %37, i64 0 %38 = load i16, ptr %arrayidx26, align 2 %39 = load ptr, ptr %src_v.addr, align 8 %arrayidx27 = getelementptr inbounds i16, ptr %39, i64 0 %40 = load i16, ptr %arrayidx27, align 2 %41 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr28 = getelementptr inbounds i8, ptr %41, i64 0 %42 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr29 = getelementptr inbounds i8, ptr %42, i64 1 %43 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr30 = getelementptr inbounds i8, ptr %43, i64 2 %44 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %36, i16 noundef zeroext %38, i16 noundef zeroext %40, ptr noundef %add.ptr28, ptr noundef %add.ptr29, ptr noundef %add.ptr30, ptr noundef %44) %45 = load ptr, ptr %src_a.addr, align 8 %arrayidx31 = getelementptr inbounds i16, ptr %45, i64 0 %46 = load i16, ptr %arrayidx31, align 2 %conv32 = zext i16 %46 to i32 %shr33 = ashr i32 %conv32, 2 %call34 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr33) %conv35 = trunc i32 %call34 to i8 %47 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx36 = getelementptr inbounds i8, ptr %47, i64 3 store i8 %conv35, ptr %arrayidx36, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I410AlphaToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %src_a, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel10EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_a.addr, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %12, i64 0 %13 = load i16, ptr %arrayidx5, align 2 %conv = zext i16 %13 to i32 %shr = ashr i32 %conv, 2 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv6 = trunc i32 %call to i8 %14 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %conv6, ptr %arrayidx7, align 1 %15 = load ptr, ptr %src_y.addr, align 8 %add.ptr8 = getelementptr inbounds i16, ptr %15, i64 1 store ptr %add.ptr8, ptr %src_y.addr, align 8 %16 = load ptr, ptr %src_u.addr, align 8 %add.ptr9 = getelementptr inbounds i16, ptr %16, i64 1 store ptr %add.ptr9, ptr %src_u.addr, align 8 %17 = load ptr, ptr %src_v.addr, align 8 %add.ptr10 = getelementptr inbounds i16, ptr %17, i64 1 store ptr %add.ptr10, ptr %src_v.addr, align 8 %18 = load ptr, ptr %src_a.addr, align 8 %add.ptr11 = getelementptr inbounds i16, ptr %18, i64 1 store ptr %add.ptr11, ptr %src_a.addr, align 8 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr12, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !85 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I212ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel12EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i16, ptr %13, i64 1 %14 = load i16, ptr %arrayidx6, align 2 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx7 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx7, align 2 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx8 = getelementptr inbounds i16, ptr %17, i64 0 %18 = load i16, ptr %arrayidx8, align 2 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel12EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %14, i16 noundef zeroext %16, i16 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i16, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr14 = getelementptr inbounds i16, ptr %25, i64 1 store ptr %add.ptr14, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr15 = getelementptr inbounds i16, ptr %26, i64 1 store ptr %add.ptr15, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr16 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr16, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !86 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx17 = getelementptr inbounds i16, ptr %30, i64 0 %31 = load i16, ptr %arrayidx17, align 2 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx18 = getelementptr inbounds i16, ptr %32, i64 0 %33 = load i16, ptr %arrayidx18, align 2 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx19 = getelementptr inbounds i16, ptr %34, i64 0 %35 = load i16, ptr %arrayidx19, align 2 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 0 %37 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 1 %38 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %38, i64 2 %39 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL10YuvPixel12EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %31, i16 noundef zeroext %33, i16 noundef zeroext %35, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %add.ptr22, ptr noundef %39) %40 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %40, i64 3 store i8 -1, ptr %arrayidx23, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL10YuvPixel12EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %y, i16 noundef zeroext %u, i16 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i16, align 2 %u.addr = alloca i16, align 2 %v.addr = alloca i16, align 2 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i16 %y, ptr %y.addr, align 2 store i16 %u, ptr %u.addr, align 2 store i16 %v, ptr %v.addr, align 2 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 store i32 -1431655766, ptr %b16, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 store i32 -1431655766, ptr %g16, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 store i32 -1431655766, ptr %r16, align 4, !annotation !4 %0 = load i16, ptr %y.addr, align 2 %1 = load i16, ptr %u.addr, align 2 %2 = load i16, ptr %v.addr, align 2 %3 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel12_16EsssPiS0_S0_PKNS_12YuvConstantsE(i16 noundef signext %0, i16 noundef signext %1, i16 noundef signext %2, ptr noundef %b16, ptr noundef %g16, ptr noundef %r16, ptr noundef %3) %4 = load i32, ptr %b16, align 4 %shr = ashr i32 %4, 6 %call = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr) %conv = trunc i32 %call to i8 %5 = load ptr, ptr %b.addr, align 8 store i8 %conv, ptr %5, align 1 %6 = load i32, ptr %g16, align 4 %shr1 = ashr i32 %6, 6 %call2 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr1) %conv3 = trunc i32 %call2 to i8 %7 = load ptr, ptr %g.addr, align 8 store i8 %conv3, ptr %7, align 1 %8 = load i32, ptr %r16, align 4 %shr4 = ashr i32 %8, 6 %call5 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr4) %conv6 = trunc i32 %call5 to i8 %9 = load ptr, ptr %r.addr, align 8 store i8 %conv6, ptr %9, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I210ToAR30Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 store i32 -1431655766, ptr %b, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 store i32 -1431655766, ptr %g, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 store i32 -1431655766, ptr %r, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel10_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %8) %9 = load ptr, ptr %rgb_buf.addr, align 8 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %g, align 4 %12 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12) %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i16, ptr %13, i64 1 %14 = load i16, ptr %arrayidx3, align 2 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx4 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx4, align 2 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %17, i64 0 %18 = load i16, ptr %arrayidx5, align 2 %19 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel10_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %14, i16 noundef zeroext %16, i16 noundef zeroext %18, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %19) %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 4 %21 = load i32, ptr %b, align 4 %22 = load i32, ptr %g, align 4 %23 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %add.ptr, i32 noundef %21, i32 noundef %22, i32 noundef %23) %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i16, ptr %24, i64 2 store ptr %add.ptr6, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr7 = getelementptr inbounds i16, ptr %25, i64 1 store ptr %add.ptr7, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr8 = getelementptr inbounds i16, ptr %26, i64 1 store ptr %add.ptr8, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr9, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !87 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx10 = getelementptr inbounds i16, ptr %30, i64 0 %31 = load i16, ptr %arrayidx10, align 2 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx11 = getelementptr inbounds i16, ptr %32, i64 0 %33 = load i16, ptr %arrayidx11, align 2 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx12 = getelementptr inbounds i16, ptr %34, i64 0 %35 = load i16, ptr %arrayidx12, align 2 %36 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel10_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %31, i16 noundef zeroext %33, i16 noundef zeroext %35, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %36) %37 = load ptr, ptr %rgb_buf.addr, align 8 %38 = load i32, ptr %b, align 4 %39 = load i32, ptr %g, align 4 %40 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %37, i32 noundef %38, i32 noundef %39, i32 noundef %40) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL13YuvPixel10_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %y, i16 noundef zeroext %u, i16 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i16, align 2 %u.addr = alloca i16, align 2 %v.addr = alloca i16, align 2 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ub = alloca i32, align 4 %ug = alloca i32, align 4 %vg = alloca i32, align 4 %vr = alloca i32, align 4 %yg = alloca i32, align 4 %yb = alloca i32, align 4 %y32 = alloca i32, align 4 %y1 = alloca i32, align 4 %ui = alloca i8, align 1 %vi = alloca i8, align 1 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i16 %y, ptr %y.addr, align 2 store i16 %u, ptr %u.addr, align 2 store i16 %v, ptr %v.addr, align 2 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ub) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToB = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 0 %arrayidx = getelementptr inbounds [32 x i8], ptr %kUVToB, i64 0, i64 0 %1 = load i8, ptr %arrayidx, align 2 %conv = zext i8 %1 to i32 store i32 %conv, ptr %ub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ug) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 1 %arrayidx1 = getelementptr inbounds [32 x i8], ptr %kUVToG, i64 0, i64 0 %3 = load i8, ptr %arrayidx1, align 2 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %ug, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vg) #10 %4 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG3 = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %4, i32 0, i32 1 %arrayidx4 = getelementptr inbounds [32 x i8], ptr %kUVToG3, i64 0, i64 1 %5 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %5 to i32 store i32 %conv5, ptr %vg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vr) #10 %6 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToR = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %6, i32 0, i32 2 %arrayidx6 = getelementptr inbounds [32 x i8], ptr %kUVToR, i64 0, i64 1 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 store i32 %conv7, ptr %vr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %8 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %8, i32 0, i32 3 %arrayidx8 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %9 = load i16, ptr %arrayidx8, align 2 %conv9 = sext i16 %9 to i32 store i32 %conv9, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yb) #10 %10 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %10, i32 0, i32 4 %arrayidx10 = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %11 = load i16, ptr %arrayidx10, align 2 %conv11 = sext i16 %11 to i32 store i32 %conv11, ptr %yb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y32) #10 %12 = load i16, ptr %y.addr, align 2 %conv12 = zext i16 %12 to i32 %shl = shl i32 %conv12, 6 %13 = load i16, ptr %y.addr, align 2 %conv13 = zext i16 %13 to i32 %shr = ashr i32 %conv13, 4 %or = or i32 %shl, %shr store i32 %or, ptr %y32, align 4 %14 = load i16, ptr %u.addr, align 2 %conv14 = zext i16 %14 to i32 %shr15 = ashr i32 %conv14, 2 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr15) %conv16 = trunc i32 %call to i8 %conv17 = zext i8 %conv16 to i16 store i16 %conv17, ptr %u.addr, align 2 %15 = load i16, ptr %v.addr, align 2 %conv18 = zext i16 %15 to i32 %shr19 = ashr i32 %conv18, 2 %call20 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr19) %conv21 = trunc i32 %call20 to i8 %conv22 = zext i8 %conv21 to i16 store i16 %conv22, ptr %v.addr, align 2 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %16 = load i32, ptr %y32, align 4 %17 = load i32, ptr %yg, align 4 %mul = mul i32 %16, %17 %shr23 = lshr i32 %mul, 16 %18 = load i32, ptr %yb, align 4 %add = add i32 %shr23, %18 store i32 %add, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %ui) #10 %19 = load i16, ptr %u.addr, align 2 %conv24 = trunc i16 %19 to i8 store i8 %conv24, ptr %ui, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %vi) #10 %20 = load i16, ptr %v.addr, align 2 %conv25 = trunc i16 %20 to i8 store i8 %conv25, ptr %vi, align 1 %21 = load i8, ptr %ui, align 1 %conv26 = sext i8 %21 to i32 %sub = sub nsw i32 %conv26, 128 %conv27 = trunc i32 %sub to i8 store i8 %conv27, ptr %ui, align 1 %22 = load i8, ptr %vi, align 1 %conv28 = sext i8 %22 to i32 %sub29 = sub nsw i32 %conv28, 128 %conv30 = trunc i32 %sub29 to i8 store i8 %conv30, ptr %vi, align 1 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 %23 = load i32, ptr %y1, align 4 %24 = load i8, ptr %ui, align 1 %conv31 = sext i8 %24 to i32 %25 = load i32, ptr %ub, align 4 %mul32 = mul nsw i32 %conv31, %25 %add33 = add nsw i32 %23, %mul32 store i32 %add33, ptr %b16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 %26 = load i32, ptr %y1, align 4 %27 = load i8, ptr %ui, align 1 %conv34 = sext i8 %27 to i32 %28 = load i32, ptr %ug, align 4 %mul35 = mul nsw i32 %conv34, %28 %29 = load i8, ptr %vi, align 1 %conv36 = sext i8 %29 to i32 %30 = load i32, ptr %vg, align 4 %mul37 = mul nsw i32 %conv36, %30 %add38 = add nsw i32 %mul35, %mul37 %sub39 = sub nsw i32 %26, %add38 store i32 %sub39, ptr %g16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 %31 = load i32, ptr %y1, align 4 %32 = load i8, ptr %vi, align 1 %conv40 = sext i8 %32 to i32 %33 = load i32, ptr %vr, align 4 %mul41 = mul nsw i32 %conv40, %33 %add42 = add nsw i32 %31, %mul41 store i32 %add42, ptr %r16, align 4 %34 = load i32, ptr %b16, align 4 %35 = load ptr, ptr %b.addr, align 8 store i32 %34, ptr %35, align 4 %36 = load i32, ptr %g16, align 4 %37 = load ptr, ptr %g.addr, align 8 store i32 %36, ptr %37, align 4 %38 = load i32, ptr %r16, align 4 %39 = load ptr, ptr %r.addr, align 8 store i32 %38, ptr %39, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %vi) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ui) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ug) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ub) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %rgb_buf, i32 noundef %b, i32 noundef %g, i32 noundef %r) #0 { entry: %rgb_buf.addr = alloca ptr, align 8 %b.addr = alloca i32, align 4 %g.addr = alloca i32, align 4 %r.addr = alloca i32, align 4 %ar30 = alloca i32, align 4 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store i32 %b, ptr %b.addr, align 4 store i32 %g, ptr %g.addr, align 4 store i32 %r, ptr %r.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ar30) #10 store i32 -1431655766, ptr %ar30, align 4, !annotation !4 %0 = load i32, ptr %b.addr, align 4 %shr = ashr i32 %0, 4 store i32 %shr, ptr %b.addr, align 4 %1 = load i32, ptr %g.addr, align 4 %shr1 = ashr i32 %1, 4 store i32 %shr1, ptr %g.addr, align 4 %2 = load i32, ptr %r.addr, align 4 %shr2 = ashr i32 %2, 4 store i32 %shr2, ptr %r.addr, align 4 %3 = load i32, ptr %b.addr, align 4 %call = call noundef i32 @_ZN6libyuvL7Clamp10Ei(i32 noundef %3) store i32 %call, ptr %b.addr, align 4 %4 = load i32, ptr %g.addr, align 4 %call3 = call noundef i32 @_ZN6libyuvL7Clamp10Ei(i32 noundef %4) store i32 %call3, ptr %g.addr, align 4 %5 = load i32, ptr %r.addr, align 4 %call4 = call noundef i32 @_ZN6libyuvL7Clamp10Ei(i32 noundef %5) store i32 %call4, ptr %r.addr, align 4 %6 = load i32, ptr %b.addr, align 4 %7 = load i32, ptr %g.addr, align 4 %shl = shl i32 %7, 10 %or = or i32 %6, %shl %8 = load i32, ptr %r.addr, align 4 %shl5 = shl i32 %8, 20 %or6 = or i32 %or, %shl5 %or7 = or i32 %or6, -1073741824 store i32 %or7, ptr %ar30, align 4 %9 = load i32, ptr %ar30, align 4 %10 = load ptr, ptr %rgb_buf.addr, align 8 store i32 %9, ptr %10, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %ar30) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I212ToAR30Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 store i32 -1431655766, ptr %b, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 store i32 -1431655766, ptr %g, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 store i32 -1431655766, ptr %r, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel12_16EsssPiS0_S0_PKNS_12YuvConstantsE(i16 noundef signext %3, i16 noundef signext %5, i16 noundef signext %7, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %8) %9 = load ptr, ptr %rgb_buf.addr, align 8 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %g, align 4 %12 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12) %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i16, ptr %13, i64 1 %14 = load i16, ptr %arrayidx3, align 2 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx4 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx4, align 2 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %17, i64 0 %18 = load i16, ptr %arrayidx5, align 2 %19 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel12_16EsssPiS0_S0_PKNS_12YuvConstantsE(i16 noundef signext %14, i16 noundef signext %16, i16 noundef signext %18, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %19) %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 4 %21 = load i32, ptr %b, align 4 %22 = load i32, ptr %g, align 4 %23 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %add.ptr, i32 noundef %21, i32 noundef %22, i32 noundef %23) %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i16, ptr %24, i64 2 store ptr %add.ptr6, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr7 = getelementptr inbounds i16, ptr %25, i64 1 store ptr %add.ptr7, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr8 = getelementptr inbounds i16, ptr %26, i64 1 store ptr %add.ptr8, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr9, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !88 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx10 = getelementptr inbounds i16, ptr %30, i64 0 %31 = load i16, ptr %arrayidx10, align 2 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx11 = getelementptr inbounds i16, ptr %32, i64 0 %33 = load i16, ptr %arrayidx11, align 2 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx12 = getelementptr inbounds i16, ptr %34, i64 0 %35 = load i16, ptr %arrayidx12, align 2 %36 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel12_16EsssPiS0_S0_PKNS_12YuvConstantsE(i16 noundef signext %31, i16 noundef signext %33, i16 noundef signext %35, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %36) %37 = load ptr, ptr %rgb_buf.addr, align 8 %38 = load i32, ptr %b, align 4 %39 = load i32, ptr %g, align 4 %40 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %37, i32 noundef %38, i32 noundef %39, i32 noundef %40) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL13YuvPixel12_16EsssPiS0_S0_PKNS_12YuvConstantsE(i16 noundef signext %y, i16 noundef signext %u, i16 noundef signext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i16, align 2 %u.addr = alloca i16, align 2 %v.addr = alloca i16, align 2 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ub = alloca i32, align 4 %ug = alloca i32, align 4 %vg = alloca i32, align 4 %vr = alloca i32, align 4 %yg = alloca i32, align 4 %yb = alloca i32, align 4 %y32 = alloca i32, align 4 %y1 = alloca i32, align 4 %ui = alloca i8, align 1 %vi = alloca i8, align 1 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i16 %y, ptr %y.addr, align 2 store i16 %u, ptr %u.addr, align 2 store i16 %v, ptr %v.addr, align 2 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ub) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToB = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 0 %arrayidx = getelementptr inbounds [32 x i8], ptr %kUVToB, i64 0, i64 0 %1 = load i8, ptr %arrayidx, align 2 %conv = zext i8 %1 to i32 store i32 %conv, ptr %ub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ug) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 1 %arrayidx1 = getelementptr inbounds [32 x i8], ptr %kUVToG, i64 0, i64 0 %3 = load i8, ptr %arrayidx1, align 2 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %ug, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vg) #10 %4 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG3 = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %4, i32 0, i32 1 %arrayidx4 = getelementptr inbounds [32 x i8], ptr %kUVToG3, i64 0, i64 1 %5 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %5 to i32 store i32 %conv5, ptr %vg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vr) #10 %6 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToR = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %6, i32 0, i32 2 %arrayidx6 = getelementptr inbounds [32 x i8], ptr %kUVToR, i64 0, i64 1 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 store i32 %conv7, ptr %vr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %8 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %8, i32 0, i32 3 %arrayidx8 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %9 = load i16, ptr %arrayidx8, align 2 %conv9 = sext i16 %9 to i32 store i32 %conv9, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yb) #10 %10 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %10, i32 0, i32 4 %arrayidx10 = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %11 = load i16, ptr %arrayidx10, align 2 %conv11 = sext i16 %11 to i32 store i32 %conv11, ptr %yb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y32) #10 %12 = load i16, ptr %y.addr, align 2 %conv12 = sext i16 %12 to i32 %shl = shl i32 %conv12, 4 %13 = load i16, ptr %y.addr, align 2 %conv13 = sext i16 %13 to i32 %shr = ashr i32 %conv13, 8 %or = or i32 %shl, %shr store i32 %or, ptr %y32, align 4 %14 = load i16, ptr %u.addr, align 2 %conv14 = sext i16 %14 to i32 %shr15 = ashr i32 %conv14, 4 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr15) %conv16 = trunc i32 %call to i8 %conv17 = zext i8 %conv16 to i16 store i16 %conv17, ptr %u.addr, align 2 %15 = load i16, ptr %v.addr, align 2 %conv18 = sext i16 %15 to i32 %shr19 = ashr i32 %conv18, 4 %call20 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr19) %conv21 = trunc i32 %call20 to i8 %conv22 = zext i8 %conv21 to i16 store i16 %conv22, ptr %v.addr, align 2 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %16 = load i32, ptr %y32, align 4 %17 = load i32, ptr %yg, align 4 %mul = mul i32 %16, %17 %shr23 = lshr i32 %mul, 16 %18 = load i32, ptr %yb, align 4 %add = add i32 %shr23, %18 store i32 %add, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %ui) #10 %19 = load i16, ptr %u.addr, align 2 %conv24 = trunc i16 %19 to i8 store i8 %conv24, ptr %ui, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %vi) #10 %20 = load i16, ptr %v.addr, align 2 %conv25 = trunc i16 %20 to i8 store i8 %conv25, ptr %vi, align 1 %21 = load i8, ptr %ui, align 1 %conv26 = sext i8 %21 to i32 %sub = sub nsw i32 %conv26, 128 %conv27 = trunc i32 %sub to i8 store i8 %conv27, ptr %ui, align 1 %22 = load i8, ptr %vi, align 1 %conv28 = sext i8 %22 to i32 %sub29 = sub nsw i32 %conv28, 128 %conv30 = trunc i32 %sub29 to i8 store i8 %conv30, ptr %vi, align 1 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 %23 = load i32, ptr %y1, align 4 %24 = load i8, ptr %ui, align 1 %conv31 = sext i8 %24 to i32 %25 = load i32, ptr %ub, align 4 %mul32 = mul nsw i32 %conv31, %25 %add33 = add nsw i32 %23, %mul32 store i32 %add33, ptr %b16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 %26 = load i32, ptr %y1, align 4 %27 = load i8, ptr %ui, align 1 %conv34 = sext i8 %27 to i32 %28 = load i32, ptr %ug, align 4 %mul35 = mul nsw i32 %conv34, %28 %29 = load i8, ptr %vi, align 1 %conv36 = sext i8 %29 to i32 %30 = load i32, ptr %vg, align 4 %mul37 = mul nsw i32 %conv36, %30 %add38 = add nsw i32 %mul35, %mul37 %sub39 = sub nsw i32 %26, %add38 store i32 %sub39, ptr %g16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 %31 = load i32, ptr %y1, align 4 %32 = load i8, ptr %vi, align 1 %conv40 = sext i8 %32 to i32 %33 = load i32, ptr %vr, align 4 %mul41 = mul nsw i32 %conv40, %33 %add42 = add nsw i32 %31, %mul41 store i32 %add42, ptr %r16, align 4 %34 = load i32, ptr %b16, align 4 %35 = load ptr, ptr %b.addr, align 8 store i32 %34, ptr %35, align 4 %36 = load i32, ptr %g16, align 4 %37 = load ptr, ptr %g.addr, align 8 store i32 %36, ptr %37, align 4 %38 = load i32, ptr %r16, align 4 %39 = load ptr, ptr %r.addr, align 8 store i32 %38, ptr %39, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %vi) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ui) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ug) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ub) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I410ToAR30Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 store i32 -1431655766, ptr %b, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 store i32 -1431655766, ptr %g, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 store i32 -1431655766, ptr %r, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 0 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel10_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %8) %9 = load ptr, ptr %rgb_buf.addr, align 8 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %g, align 4 %12 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12) %13 = load ptr, ptr %src_y.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %13, i64 1 store ptr %add.ptr, ptr %src_y.addr, align 8 %14 = load ptr, ptr %src_u.addr, align 8 %add.ptr3 = getelementptr inbounds i16, ptr %14, i64 1 store ptr %add.ptr3, ptr %src_u.addr, align 8 %15 = load ptr, ptr %src_v.addr, align 8 %add.ptr4 = getelementptr inbounds i16, ptr %15, i64 1 store ptr %add.ptr4, ptr %src_v.addr, align 8 %16 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr5 = getelementptr inbounds i8, ptr %16, i64 4 store ptr %add.ptr5, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %inc = add nsw i32 %17, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !89 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @P210ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_argb, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 1 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel16_8EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i16, ptr %13, i64 1 %14 = load i16, ptr %arrayidx6, align 2 %15 = load ptr, ptr %src_uv.addr, align 8 %arrayidx7 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx7, align 2 %17 = load ptr, ptr %src_uv.addr, align 8 %arrayidx8 = getelementptr inbounds i16, ptr %17, i64 1 %18 = load i16, ptr %arrayidx8, align 2 %19 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel16_8EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %14, i16 noundef zeroext %16, i16 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i16, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_uv.addr, align 8 %add.ptr14 = getelementptr inbounds i16, ptr %25, i64 2 store ptr %add.ptr14, ptr %src_uv.addr, align 8 %26 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %26, i64 8 store ptr %add.ptr15, ptr %dst_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %27 = load i32, ptr %x, align 4 %add = add nsw i32 %27, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !90 for.end: ; preds = %for.cond %28 = load i32, ptr %width.addr, align 4 %and = and i32 %28, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %29 = load ptr, ptr %src_y.addr, align 8 %arrayidx16 = getelementptr inbounds i16, ptr %29, i64 0 %30 = load i16, ptr %arrayidx16, align 2 %31 = load ptr, ptr %src_uv.addr, align 8 %arrayidx17 = getelementptr inbounds i16, ptr %31, i64 0 %32 = load i16, ptr %arrayidx17, align 2 %33 = load ptr, ptr %src_uv.addr, align 8 %arrayidx18 = getelementptr inbounds i16, ptr %33, i64 1 %34 = load i16, ptr %arrayidx18, align 2 %35 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 0 %36 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 1 %37 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 2 %38 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel16_8EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %30, i16 noundef zeroext %32, i16 noundef zeroext %34, ptr noundef %add.ptr19, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %38) %39 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %39, i64 3 store i8 -1, ptr %arrayidx22, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL12YuvPixel16_8EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %y, i16 noundef zeroext %u, i16 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i16, align 2 %u.addr = alloca i16, align 2 %v.addr = alloca i16, align 2 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ub = alloca i32, align 4 %ug = alloca i32, align 4 %vg = alloca i32, align 4 %vr = alloca i32, align 4 %yg = alloca i32, align 4 %yb = alloca i32, align 4 %y32 = alloca i32, align 4 %y1 = alloca i32, align 4 %ui = alloca i8, align 1 %vi = alloca i8, align 1 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i16 %y, ptr %y.addr, align 2 store i16 %u, ptr %u.addr, align 2 store i16 %v, ptr %v.addr, align 2 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ub) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToB = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 0 %arrayidx = getelementptr inbounds [32 x i8], ptr %kUVToB, i64 0, i64 0 %1 = load i8, ptr %arrayidx, align 2 %conv = zext i8 %1 to i32 store i32 %conv, ptr %ub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ug) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 1 %arrayidx1 = getelementptr inbounds [32 x i8], ptr %kUVToG, i64 0, i64 0 %3 = load i8, ptr %arrayidx1, align 2 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %ug, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vg) #10 %4 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG3 = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %4, i32 0, i32 1 %arrayidx4 = getelementptr inbounds [32 x i8], ptr %kUVToG3, i64 0, i64 1 %5 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %5 to i32 store i32 %conv5, ptr %vg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vr) #10 %6 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToR = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %6, i32 0, i32 2 %arrayidx6 = getelementptr inbounds [32 x i8], ptr %kUVToR, i64 0, i64 1 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 store i32 %conv7, ptr %vr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %8 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %8, i32 0, i32 3 %arrayidx8 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %9 = load i16, ptr %arrayidx8, align 2 %conv9 = sext i16 %9 to i32 store i32 %conv9, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yb) #10 %10 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %10, i32 0, i32 4 %arrayidx10 = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %11 = load i16, ptr %arrayidx10, align 2 %conv11 = sext i16 %11 to i32 store i32 %conv11, ptr %yb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y32) #10 %12 = load i16, ptr %y.addr, align 2 %conv12 = zext i16 %12 to i32 store i32 %conv12, ptr %y32, align 4 %13 = load i16, ptr %u.addr, align 2 %conv13 = zext i16 %13 to i32 %shr = ashr i32 %conv13, 8 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv14 = trunc i32 %call to i16 store i16 %conv14, ptr %u.addr, align 2 %14 = load i16, ptr %v.addr, align 2 %conv15 = zext i16 %14 to i32 %shr16 = ashr i32 %conv15, 8 %call17 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr16) %conv18 = trunc i32 %call17 to i16 store i16 %conv18, ptr %v.addr, align 2 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %15 = load i32, ptr %y32, align 4 %16 = load i32, ptr %yg, align 4 %mul = mul i32 %15, %16 %shr19 = lshr i32 %mul, 16 %17 = load i32, ptr %yb, align 4 %add = add i32 %shr19, %17 store i32 %add, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %ui) #10 %18 = load i16, ptr %u.addr, align 2 %conv20 = trunc i16 %18 to i8 store i8 %conv20, ptr %ui, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %vi) #10 %19 = load i16, ptr %v.addr, align 2 %conv21 = trunc i16 %19 to i8 store i8 %conv21, ptr %vi, align 1 %20 = load i8, ptr %ui, align 1 %conv22 = sext i8 %20 to i32 %sub = sub nsw i32 %conv22, 128 %conv23 = trunc i32 %sub to i8 store i8 %conv23, ptr %ui, align 1 %21 = load i8, ptr %vi, align 1 %conv24 = sext i8 %21 to i32 %sub25 = sub nsw i32 %conv24, 128 %conv26 = trunc i32 %sub25 to i8 store i8 %conv26, ptr %vi, align 1 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 %22 = load i32, ptr %y1, align 4 %23 = load i8, ptr %ui, align 1 %conv27 = sext i8 %23 to i32 %24 = load i32, ptr %ub, align 4 %mul28 = mul nsw i32 %conv27, %24 %add29 = add nsw i32 %22, %mul28 store i32 %add29, ptr %b16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 %25 = load i32, ptr %y1, align 4 %26 = load i8, ptr %ui, align 1 %conv30 = sext i8 %26 to i32 %27 = load i32, ptr %ug, align 4 %mul31 = mul nsw i32 %conv30, %27 %28 = load i8, ptr %vi, align 1 %conv32 = sext i8 %28 to i32 %29 = load i32, ptr %vg, align 4 %mul33 = mul nsw i32 %conv32, %29 %add34 = add nsw i32 %mul31, %mul33 %sub35 = sub nsw i32 %25, %add34 store i32 %sub35, ptr %g16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 %30 = load i32, ptr %y1, align 4 %31 = load i8, ptr %vi, align 1 %conv36 = sext i8 %31 to i32 %32 = load i32, ptr %vr, align 4 %mul37 = mul nsw i32 %conv36, %32 %add38 = add nsw i32 %30, %mul37 store i32 %add38, ptr %r16, align 4 %33 = load i32, ptr %b16, align 4 %shr39 = ashr i32 %33, 6 %call40 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr39) %conv41 = trunc i32 %call40 to i8 %34 = load ptr, ptr %b.addr, align 8 store i8 %conv41, ptr %34, align 1 %35 = load i32, ptr %g16, align 4 %shr42 = ashr i32 %35, 6 %call43 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr42) %conv44 = trunc i32 %call43 to i8 %36 = load ptr, ptr %g.addr, align 8 store i8 %conv44, ptr %36, align 1 %37 = load i32, ptr %r16, align 4 %shr45 = ashr i32 %37, 6 %call46 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr45) %conv47 = trunc i32 %call46 to i8 %38 = load ptr, ptr %r.addr, align 8 store i8 %conv47, ptr %38, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %vi) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ui) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ug) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ub) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @P410ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_argb, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 1 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel16_8EtttPhS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i16, ptr %13, i64 1 store ptr %add.ptr6, ptr %src_y.addr, align 8 %14 = load ptr, ptr %src_uv.addr, align 8 %add.ptr7 = getelementptr inbounds i16, ptr %14, i64 2 store ptr %add.ptr7, ptr %src_uv.addr, align 8 %15 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr8, ptr %dst_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !91 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @P210ToAR30Row_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_ar30, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_ar30.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_ar30, ptr %dst_ar30.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 store i32 -1431655766, ptr %b, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 store i32 -1431655766, ptr %g, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 store i32 -1431655766, ptr %r, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 1 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel16_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %8) %9 = load ptr, ptr %dst_ar30.addr, align 8 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %g, align 4 %12 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12) %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i16, ptr %13, i64 1 %14 = load i16, ptr %arrayidx3, align 2 %15 = load ptr, ptr %src_uv.addr, align 8 %arrayidx4 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx4, align 2 %17 = load ptr, ptr %src_uv.addr, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %17, i64 1 %18 = load i16, ptr %arrayidx5, align 2 %19 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel16_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %14, i16 noundef zeroext %16, i16 noundef zeroext %18, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %19) %20 = load ptr, ptr %dst_ar30.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 4 %21 = load i32, ptr %b, align 4 %22 = load i32, ptr %g, align 4 %23 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %add.ptr, i32 noundef %21, i32 noundef %22, i32 noundef %23) %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i16, ptr %24, i64 2 store ptr %add.ptr6, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_uv.addr, align 8 %add.ptr7 = getelementptr inbounds i16, ptr %25, i64 2 store ptr %add.ptr7, ptr %src_uv.addr, align 8 %26 = load ptr, ptr %dst_ar30.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %26, i64 8 store ptr %add.ptr8, ptr %dst_ar30.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %27 = load i32, ptr %x, align 4 %add = add nsw i32 %27, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !92 for.end: ; preds = %for.cond %28 = load i32, ptr %width.addr, align 4 %and = and i32 %28, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %29 = load ptr, ptr %src_y.addr, align 8 %arrayidx9 = getelementptr inbounds i16, ptr %29, i64 0 %30 = load i16, ptr %arrayidx9, align 2 %31 = load ptr, ptr %src_uv.addr, align 8 %arrayidx10 = getelementptr inbounds i16, ptr %31, i64 0 %32 = load i16, ptr %arrayidx10, align 2 %33 = load ptr, ptr %src_uv.addr, align 8 %arrayidx11 = getelementptr inbounds i16, ptr %33, i64 1 %34 = load i16, ptr %arrayidx11, align 2 %35 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel16_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %30, i16 noundef zeroext %32, i16 noundef zeroext %34, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %35) %36 = load ptr, ptr %dst_ar30.addr, align 8 %37 = load i32, ptr %b, align 4 %38 = load i32, ptr %g, align 4 %39 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %36, i32 noundef %37, i32 noundef %38, i32 noundef %39) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL13YuvPixel16_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %y, i16 noundef zeroext %u, i16 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i16, align 2 %u.addr = alloca i16, align 2 %v.addr = alloca i16, align 2 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ub = alloca i32, align 4 %ug = alloca i32, align 4 %vg = alloca i32, align 4 %vr = alloca i32, align 4 %yg = alloca i32, align 4 %yb = alloca i32, align 4 %y32 = alloca i32, align 4 %y1 = alloca i32, align 4 %ui = alloca i8, align 1 %vi = alloca i8, align 1 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i16 %y, ptr %y.addr, align 2 store i16 %u, ptr %u.addr, align 2 store i16 %v, ptr %v.addr, align 2 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ub) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToB = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 0 %arrayidx = getelementptr inbounds [32 x i8], ptr %kUVToB, i64 0, i64 0 %1 = load i8, ptr %arrayidx, align 2 %conv = zext i8 %1 to i32 store i32 %conv, ptr %ub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ug) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 1 %arrayidx1 = getelementptr inbounds [32 x i8], ptr %kUVToG, i64 0, i64 0 %3 = load i8, ptr %arrayidx1, align 2 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %ug, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vg) #10 %4 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG3 = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %4, i32 0, i32 1 %arrayidx4 = getelementptr inbounds [32 x i8], ptr %kUVToG3, i64 0, i64 1 %5 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %5 to i32 store i32 %conv5, ptr %vg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vr) #10 %6 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToR = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %6, i32 0, i32 2 %arrayidx6 = getelementptr inbounds [32 x i8], ptr %kUVToR, i64 0, i64 1 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 store i32 %conv7, ptr %vr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %8 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %8, i32 0, i32 3 %arrayidx8 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %9 = load i16, ptr %arrayidx8, align 2 %conv9 = sext i16 %9 to i32 store i32 %conv9, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yb) #10 %10 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %10, i32 0, i32 4 %arrayidx10 = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %11 = load i16, ptr %arrayidx10, align 2 %conv11 = sext i16 %11 to i32 store i32 %conv11, ptr %yb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y32) #10 %12 = load i16, ptr %y.addr, align 2 %conv12 = zext i16 %12 to i32 store i32 %conv12, ptr %y32, align 4 %13 = load i16, ptr %u.addr, align 2 %conv13 = zext i16 %13 to i32 %shr = ashr i32 %conv13, 8 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv14 = trunc i32 %call to i16 store i16 %conv14, ptr %u.addr, align 2 %14 = load i16, ptr %v.addr, align 2 %conv15 = zext i16 %14 to i32 %shr16 = ashr i32 %conv15, 8 %call17 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr16) %conv18 = trunc i32 %call17 to i16 store i16 %conv18, ptr %v.addr, align 2 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %15 = load i32, ptr %y32, align 4 %16 = load i32, ptr %yg, align 4 %mul = mul i32 %15, %16 %shr19 = lshr i32 %mul, 16 %17 = load i32, ptr %yb, align 4 %add = add i32 %shr19, %17 store i32 %add, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %ui) #10 %18 = load i16, ptr %u.addr, align 2 %conv20 = trunc i16 %18 to i8 store i8 %conv20, ptr %ui, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %vi) #10 %19 = load i16, ptr %v.addr, align 2 %conv21 = trunc i16 %19 to i8 store i8 %conv21, ptr %vi, align 1 %20 = load i8, ptr %ui, align 1 %conv22 = sext i8 %20 to i32 %sub = sub nsw i32 %conv22, 128 %conv23 = trunc i32 %sub to i8 store i8 %conv23, ptr %ui, align 1 %21 = load i8, ptr %vi, align 1 %conv24 = sext i8 %21 to i32 %sub25 = sub nsw i32 %conv24, 128 %conv26 = trunc i32 %sub25 to i8 store i8 %conv26, ptr %vi, align 1 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 %22 = load i32, ptr %y1, align 4 %23 = load i8, ptr %ui, align 1 %conv27 = sext i8 %23 to i32 %24 = load i32, ptr %ub, align 4 %mul28 = mul nsw i32 %conv27, %24 %add29 = add nsw i32 %22, %mul28 store i32 %add29, ptr %b16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 %25 = load i32, ptr %y1, align 4 %26 = load i8, ptr %ui, align 1 %conv30 = sext i8 %26 to i32 %27 = load i32, ptr %ug, align 4 %mul31 = mul nsw i32 %conv30, %27 %28 = load i8, ptr %vi, align 1 %conv32 = sext i8 %28 to i32 %29 = load i32, ptr %vg, align 4 %mul33 = mul nsw i32 %conv32, %29 %add34 = add nsw i32 %mul31, %mul33 %sub35 = sub nsw i32 %25, %add34 store i32 %sub35, ptr %g16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 %30 = load i32, ptr %y1, align 4 %31 = load i8, ptr %vi, align 1 %conv36 = sext i8 %31 to i32 %32 = load i32, ptr %vr, align 4 %mul37 = mul nsw i32 %conv36, %32 %add38 = add nsw i32 %30, %mul37 store i32 %add38, ptr %r16, align 4 %33 = load i32, ptr %b16, align 4 %34 = load ptr, ptr %b.addr, align 8 store i32 %33, ptr %34, align 4 %35 = load i32, ptr %g16, align 4 %36 = load ptr, ptr %g.addr, align 8 store i32 %35, ptr %36, align 4 %37 = load i32, ptr %r16, align 4 %38 = load ptr, ptr %r.addr, align 8 store i32 %37, ptr %38, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %vi) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ui) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ug) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ub) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @P410ToAR30Row_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_ar30, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_ar30.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_ar30, ptr %dst_ar30.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 store i32 -1431655766, ptr %b, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 store i32 -1431655766, ptr %g, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 store i32 -1431655766, ptr %r, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %2, i64 0 %3 = load i16, ptr %arrayidx, align 2 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx1, align 2 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 1 %7 = load i16, ptr %arrayidx2, align 2 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL13YuvPixel16_16EtttPiS0_S0_PKNS_12YuvConstantsE(i16 noundef zeroext %3, i16 noundef zeroext %5, i16 noundef zeroext %7, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %8) %9 = load ptr, ptr %dst_ar30.addr, align 8 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %g, align 4 %12 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12) %13 = load ptr, ptr %src_y.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %13, i64 1 store ptr %add.ptr, ptr %src_y.addr, align 8 %14 = load ptr, ptr %src_uv.addr, align 8 %add.ptr3 = getelementptr inbounds i16, ptr %14, i64 2 store ptr %add.ptr3, ptr %src_uv.addr, align 8 %15 = load ptr, ptr %dst_ar30.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr4, ptr %dst_ar30.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !93 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToAR30Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 store i32 -1431655766, ptr %b, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 store i32 -1431655766, ptr %g, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 store i32 -1431655766, ptr %r, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel8_16EhhhPiS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %8) %9 = load ptr, ptr %rgb_buf.addr, align 8 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %g, align 4 %12 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12) %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx3, align 1 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx4, align 1 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %17, i64 0 %18 = load i8, ptr %arrayidx5, align 1 %19 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel8_16EhhhPiS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %19) %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 4 %21 = load i32, ptr %b, align 4 %22 = load i32, ptr %g, align 4 %23 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %add.ptr, i32 noundef %21, i32 noundef %22, i32 noundef %23) %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr6, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %25, i64 1 store ptr %add.ptr7, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %26, i64 1 store ptr %add.ptr8, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr9, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !94 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %30, i64 0 %31 = load i8, ptr %arrayidx10, align 1 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx11, align 1 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load i8, ptr %arrayidx12, align 1 %36 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL12YuvPixel8_16EhhhPiS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %31, i8 noundef zeroext %33, i8 noundef zeroext %35, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %36) %37 = load ptr, ptr %rgb_buf.addr, align 8 %38 = load i32, ptr %b, align 4 %39 = load i32, ptr %g, align 4 %40 = load i32, ptr %r, align 4 call void @_ZN6libyuvL9StoreAR30EPhiii(ptr noundef %37, i32 noundef %38, i32 noundef %39, i32 noundef %40) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL12YuvPixel8_16EhhhPiS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %y, i8 noundef zeroext %u, i8 noundef zeroext %v, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i8, align 1 %u.addr = alloca i8, align 1 %v.addr = alloca i8, align 1 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ub = alloca i32, align 4 %ug = alloca i32, align 4 %vg = alloca i32, align 4 %vr = alloca i32, align 4 %yg = alloca i32, align 4 %yb = alloca i32, align 4 %y32 = alloca i32, align 4 %y1 = alloca i32, align 4 %ui = alloca i8, align 1 %vi = alloca i8, align 1 %b16 = alloca i32, align 4 %g16 = alloca i32, align 4 %r16 = alloca i32, align 4 store i8 %y, ptr %y.addr, align 1 store i8 %u, ptr %u.addr, align 1 store i8 %v, ptr %v.addr, align 1 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ub) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToB = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 0 %arrayidx = getelementptr inbounds [32 x i8], ptr %kUVToB, i64 0, i64 0 %1 = load i8, ptr %arrayidx, align 2 %conv = zext i8 %1 to i32 store i32 %conv, ptr %ub, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ug) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 1 %arrayidx1 = getelementptr inbounds [32 x i8], ptr %kUVToG, i64 0, i64 0 %3 = load i8, ptr %arrayidx1, align 2 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %ug, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vg) #10 %4 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToG3 = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %4, i32 0, i32 1 %arrayidx4 = getelementptr inbounds [32 x i8], ptr %kUVToG3, i64 0, i64 1 %5 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %5 to i32 store i32 %conv5, ptr %vg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vr) #10 %6 = load ptr, ptr %yuvconstants.addr, align 8 %kUVToR = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %6, i32 0, i32 2 %arrayidx6 = getelementptr inbounds [32 x i8], ptr %kUVToR, i64 0, i64 1 %7 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %7 to i32 store i32 %conv7, ptr %vr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %8 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %8, i32 0, i32 3 %arrayidx8 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %9 = load i16, ptr %arrayidx8, align 2 %conv9 = sext i16 %9 to i32 store i32 %conv9, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yb) #10 %10 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %10, i32 0, i32 4 %arrayidx10 = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %11 = load i16, ptr %arrayidx10, align 2 %conv11 = sext i16 %11 to i32 store i32 %conv11, ptr %yb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y32) #10 %12 = load i8, ptr %y.addr, align 1 %conv12 = zext i8 %12 to i32 %mul = mul nsw i32 %conv12, 257 store i32 %mul, ptr %y32, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %13 = load i32, ptr %y32, align 4 %14 = load i32, ptr %yg, align 4 %mul13 = mul i32 %13, %14 %shr = lshr i32 %mul13, 16 %15 = load i32, ptr %yb, align 4 %add = add i32 %shr, %15 store i32 %add, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %ui) #10 %16 = load i8, ptr %u.addr, align 1 store i8 %16, ptr %ui, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %vi) #10 %17 = load i8, ptr %v.addr, align 1 store i8 %17, ptr %vi, align 1 %18 = load i8, ptr %ui, align 1 %conv14 = sext i8 %18 to i32 %sub = sub nsw i32 %conv14, 128 %conv15 = trunc i32 %sub to i8 store i8 %conv15, ptr %ui, align 1 %19 = load i8, ptr %vi, align 1 %conv16 = sext i8 %19 to i32 %sub17 = sub nsw i32 %conv16, 128 %conv18 = trunc i32 %sub17 to i8 store i8 %conv18, ptr %vi, align 1 call void @llvm.lifetime.start.p0(i64 4, ptr %b16) #10 %20 = load i32, ptr %y1, align 4 %21 = load i8, ptr %ui, align 1 %conv19 = sext i8 %21 to i32 %22 = load i32, ptr %ub, align 4 %mul20 = mul nsw i32 %conv19, %22 %add21 = add nsw i32 %20, %mul20 store i32 %add21, ptr %b16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g16) #10 %23 = load i32, ptr %y1, align 4 %24 = load i8, ptr %ui, align 1 %conv22 = sext i8 %24 to i32 %25 = load i32, ptr %ug, align 4 %mul23 = mul nsw i32 %conv22, %25 %26 = load i8, ptr %vi, align 1 %conv24 = sext i8 %26 to i32 %27 = load i32, ptr %vg, align 4 %mul25 = mul nsw i32 %conv24, %27 %add26 = add nsw i32 %mul23, %mul25 %sub27 = sub nsw i32 %23, %add26 store i32 %sub27, ptr %g16, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r16) #10 %28 = load i32, ptr %y1, align 4 %29 = load i8, ptr %vi, align 1 %conv28 = sext i8 %29 to i32 %30 = load i32, ptr %vr, align 4 %mul29 = mul nsw i32 %conv28, %30 %add30 = add nsw i32 %28, %mul29 store i32 %add30, ptr %r16, align 4 %31 = load i32, ptr %b16, align 4 %32 = load ptr, ptr %b.addr, align 8 store i32 %31, ptr %32, align 4 %33 = load i32, ptr %g16, align 4 %34 = load ptr, ptr %g.addr, align 8 store i32 %33, ptr %34, align 4 %35 = load i32, ptr %r16, align 4 %36 = load ptr, ptr %r.addr, align 8 store i32 %35, ptr %36, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %r16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g16) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b16) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %vi) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %ui) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %vg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ug) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ub) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I444AlphaToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %src_a, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_a.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 0 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_y.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 1 store ptr %add.ptr7, ptr %src_y.addr, align 8 %16 = load ptr, ptr %src_u.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %16, i64 1 store ptr %add.ptr8, ptr %src_u.addr, align 8 %17 = load ptr, ptr %src_v.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 1 store ptr %add.ptr9, ptr %src_v.addr, align 8 %18 = load ptr, ptr %src_a.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %18, i64 1 store ptr %add.ptr10, ptr %src_a.addr, align 8 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr11, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !95 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422AlphaToARGBRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %src_a, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_a.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 0 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_y.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 1 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_u.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 0 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %src_v.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %19, i64 0 %20 = load i8, ptr %arrayidx9, align 1 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %21, i64 4 %22 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %22, i64 5 %23 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %23, i64 6 %24 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %16, i8 noundef zeroext %18, i8 noundef zeroext %20, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %add.ptr12, ptr noundef %24) %25 = load ptr, ptr %src_a.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %25, i64 1 %26 = load i8, ptr %arrayidx13, align 1 %27 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %27, i64 7 store i8 %26, ptr %arrayidx14, align 1 %28 = load ptr, ptr %src_y.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %28, i64 2 store ptr %add.ptr15, ptr %src_y.addr, align 8 %29 = load ptr, ptr %src_u.addr, align 8 %add.ptr16 = getelementptr inbounds i8, ptr %29, i64 1 store ptr %add.ptr16, ptr %src_u.addr, align 8 %30 = load ptr, ptr %src_v.addr, align 8 %add.ptr17 = getelementptr inbounds i8, ptr %30, i64 1 store ptr %add.ptr17, ptr %src_v.addr, align 8 %31 = load ptr, ptr %src_a.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %31, i64 2 store ptr %add.ptr18, ptr %src_a.addr, align 8 %32 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %32, i64 8 store ptr %add.ptr19, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %33 = load i32, ptr %x, align 4 %add = add nsw i32 %33, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !96 for.end: ; preds = %for.cond %34 = load i32, ptr %width.addr, align 4 %and = and i32 %34, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %35 = load ptr, ptr %src_y.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %35, i64 0 %36 = load i8, ptr %arrayidx20, align 1 %37 = load ptr, ptr %src_u.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %37, i64 0 %38 = load i8, ptr %arrayidx21, align 1 %39 = load ptr, ptr %src_v.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %39, i64 0 %40 = load i8, ptr %arrayidx22, align 1 %41 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr23 = getelementptr inbounds i8, ptr %41, i64 0 %42 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr24 = getelementptr inbounds i8, ptr %42, i64 1 %43 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr25 = getelementptr inbounds i8, ptr %43, i64 2 %44 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %36, i8 noundef zeroext %38, i8 noundef zeroext %40, ptr noundef %add.ptr23, ptr noundef %add.ptr24, ptr noundef %add.ptr25, ptr noundef %44) %45 = load ptr, ptr %src_a.addr, align 8 %arrayidx26 = getelementptr inbounds i8, ptr %45, i64 0 %46 = load i8, ptr %arrayidx26, align 1 %47 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx27 = getelementptr inbounds i8, ptr %47, i64 3 store i8 %46, ptr %arrayidx27, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToRGB24Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_y.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %src_u.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 0 %15 = load i8, ptr %arrayidx6, align 1 %16 = load ptr, ptr %src_v.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %16, i64 0 %17 = load i8, ptr %arrayidx7, align 1 %18 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %18, i64 3 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %13, i8 noundef zeroext %15, i8 noundef zeroext %17, ptr noundef %add.ptr8, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %21) %22 = load ptr, ptr %src_y.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %22, i64 2 store ptr %add.ptr11, ptr %src_y.addr, align 8 %23 = load ptr, ptr %src_u.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %23, i64 1 store ptr %add.ptr12, ptr %src_u.addr, align 8 %24 = load ptr, ptr %src_v.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 1 store ptr %add.ptr13, ptr %src_v.addr, align 8 %25 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 6 store ptr %add.ptr14, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %26 = load i32, ptr %x, align 4 %add = add nsw i32 %26, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !97 for.end: ; preds = %for.cond %27 = load i32, ptr %width.addr, align 4 %and = and i32 %27, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %28 = load ptr, ptr %src_y.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %28, i64 0 %29 = load i8, ptr %arrayidx15, align 1 %30 = load ptr, ptr %src_u.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %30, i64 0 %31 = load i8, ptr %arrayidx16, align 1 %32 = load ptr, ptr %src_v.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx17, align 1 %34 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 1 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 2 %37 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %29, i8 noundef zeroext %31, i8 noundef zeroext %33, ptr noundef %add.ptr18, ptr noundef %add.ptr19, ptr noundef %add.ptr20, ptr noundef %37) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGB4444Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_argb4444, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_argb4444.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_argb4444, ptr %dst_argb4444.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 store i8 -86, ptr %b0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 store i8 -86, ptr %g0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 store i8 -86, ptr %r0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 store i8 -86, ptr %b1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 store i8 -86, ptr %g1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 store i8 -86, ptr %r1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %8) %9 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx3, align 1 %11 = load ptr, ptr %src_u.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx4, align 1 %13 = load ptr, ptr %src_v.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 0 %14 = load i8, ptr %arrayidx5, align 1 %15 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %10, i8 noundef zeroext %12, i8 noundef zeroext %14, ptr noundef %b1, ptr noundef %g1, ptr noundef %r1, ptr noundef %15) %16 = load i8, ptr %b0, align 1 %conv = zext i8 %16 to i32 %shr = ashr i32 %conv, 4 %conv6 = trunc i32 %shr to i8 store i8 %conv6, ptr %b0, align 1 %17 = load i8, ptr %g0, align 1 %conv7 = zext i8 %17 to i32 %shr8 = ashr i32 %conv7, 4 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %g0, align 1 %18 = load i8, ptr %r0, align 1 %conv10 = zext i8 %18 to i32 %shr11 = ashr i32 %conv10, 4 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r0, align 1 %19 = load i8, ptr %b1, align 1 %conv13 = zext i8 %19 to i32 %shr14 = ashr i32 %conv13, 4 %conv15 = trunc i32 %shr14 to i8 store i8 %conv15, ptr %b1, align 1 %20 = load i8, ptr %g1, align 1 %conv16 = zext i8 %20 to i32 %shr17 = ashr i32 %conv16, 4 %conv18 = trunc i32 %shr17 to i8 store i8 %conv18, ptr %g1, align 1 %21 = load i8, ptr %r1, align 1 %conv19 = zext i8 %21 to i32 %shr20 = ashr i32 %conv19, 4 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %r1, align 1 %22 = load i8, ptr %b0, align 1 %conv22 = zext i8 %22 to i32 %23 = load i8, ptr %g0, align 1 %conv23 = zext i8 %23 to i32 %shl = shl i32 %conv23, 4 %or = or i32 %conv22, %shl %24 = load i8, ptr %r0, align 1 %conv24 = zext i8 %24 to i32 %shl25 = shl i32 %conv24, 8 %or26 = or i32 %or, %shl25 %or27 = or i32 %or26, 61440 %conv28 = trunc i32 %or27 to i16 %25 = load ptr, ptr %dst_argb4444.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %25, i64 0 store i16 %conv28, ptr %add.ptr, align 2 %26 = load i8, ptr %b1, align 1 %conv29 = zext i8 %26 to i32 %27 = load i8, ptr %g1, align 1 %conv30 = zext i8 %27 to i32 %shl31 = shl i32 %conv30, 4 %or32 = or i32 %conv29, %shl31 %28 = load i8, ptr %r1, align 1 %conv33 = zext i8 %28 to i32 %shl34 = shl i32 %conv33, 8 %or35 = or i32 %or32, %shl34 %or36 = or i32 %or35, 61440 %conv37 = trunc i32 %or36 to i16 %29 = load ptr, ptr %dst_argb4444.addr, align 8 %add.ptr38 = getelementptr inbounds i8, ptr %29, i64 2 store i16 %conv37, ptr %add.ptr38, align 2 %30 = load ptr, ptr %src_y.addr, align 8 %add.ptr39 = getelementptr inbounds i8, ptr %30, i64 2 store ptr %add.ptr39, ptr %src_y.addr, align 8 %31 = load ptr, ptr %src_u.addr, align 8 %add.ptr40 = getelementptr inbounds i8, ptr %31, i64 1 store ptr %add.ptr40, ptr %src_u.addr, align 8 %32 = load ptr, ptr %src_v.addr, align 8 %add.ptr41 = getelementptr inbounds i8, ptr %32, i64 1 store ptr %add.ptr41, ptr %src_v.addr, align 8 %33 = load ptr, ptr %dst_argb4444.addr, align 8 %add.ptr42 = getelementptr inbounds i8, ptr %33, i64 4 store ptr %add.ptr42, ptr %dst_argb4444.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %34 = load i32, ptr %x, align 4 %add = add nsw i32 %34, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !98 for.end: ; preds = %for.cond %35 = load i32, ptr %width.addr, align 4 %and = and i32 %35, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %36 = load ptr, ptr %src_y.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %36, i64 0 %37 = load i8, ptr %arrayidx43, align 1 %38 = load ptr, ptr %src_u.addr, align 8 %arrayidx44 = getelementptr inbounds i8, ptr %38, i64 0 %39 = load i8, ptr %arrayidx44, align 1 %40 = load ptr, ptr %src_v.addr, align 8 %arrayidx45 = getelementptr inbounds i8, ptr %40, i64 0 %41 = load i8, ptr %arrayidx45, align 1 %42 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %37, i8 noundef zeroext %39, i8 noundef zeroext %41, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %42) %43 = load i8, ptr %b0, align 1 %conv46 = zext i8 %43 to i32 %shr47 = ashr i32 %conv46, 4 %conv48 = trunc i32 %shr47 to i8 store i8 %conv48, ptr %b0, align 1 %44 = load i8, ptr %g0, align 1 %conv49 = zext i8 %44 to i32 %shr50 = ashr i32 %conv49, 4 %conv51 = trunc i32 %shr50 to i8 store i8 %conv51, ptr %g0, align 1 %45 = load i8, ptr %r0, align 1 %conv52 = zext i8 %45 to i32 %shr53 = ashr i32 %conv52, 4 %conv54 = trunc i32 %shr53 to i8 store i8 %conv54, ptr %r0, align 1 %46 = load i8, ptr %b0, align 1 %conv55 = zext i8 %46 to i32 %47 = load i8, ptr %g0, align 1 %conv56 = zext i8 %47 to i32 %shl57 = shl i32 %conv56, 4 %or58 = or i32 %conv55, %shl57 %48 = load i8, ptr %r0, align 1 %conv59 = zext i8 %48 to i32 %shl60 = shl i32 %conv59, 8 %or61 = or i32 %or58, %shl60 %or62 = or i32 %or61, 61440 %conv63 = trunc i32 %or62 to i16 %49 = load ptr, ptr %dst_argb4444.addr, align 8 store i16 %conv63, ptr %49, align 2 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGB1555Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_argb1555, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_argb1555.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_argb1555, ptr %dst_argb1555.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 store i8 -86, ptr %b0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 store i8 -86, ptr %g0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 store i8 -86, ptr %r0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 store i8 -86, ptr %b1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 store i8 -86, ptr %g1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 store i8 -86, ptr %r1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %8) %9 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx3, align 1 %11 = load ptr, ptr %src_u.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx4, align 1 %13 = load ptr, ptr %src_v.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 0 %14 = load i8, ptr %arrayidx5, align 1 %15 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %10, i8 noundef zeroext %12, i8 noundef zeroext %14, ptr noundef %b1, ptr noundef %g1, ptr noundef %r1, ptr noundef %15) %16 = load i8, ptr %b0, align 1 %conv = zext i8 %16 to i32 %shr = ashr i32 %conv, 3 %conv6 = trunc i32 %shr to i8 store i8 %conv6, ptr %b0, align 1 %17 = load i8, ptr %g0, align 1 %conv7 = zext i8 %17 to i32 %shr8 = ashr i32 %conv7, 3 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %g0, align 1 %18 = load i8, ptr %r0, align 1 %conv10 = zext i8 %18 to i32 %shr11 = ashr i32 %conv10, 3 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r0, align 1 %19 = load i8, ptr %b1, align 1 %conv13 = zext i8 %19 to i32 %shr14 = ashr i32 %conv13, 3 %conv15 = trunc i32 %shr14 to i8 store i8 %conv15, ptr %b1, align 1 %20 = load i8, ptr %g1, align 1 %conv16 = zext i8 %20 to i32 %shr17 = ashr i32 %conv16, 3 %conv18 = trunc i32 %shr17 to i8 store i8 %conv18, ptr %g1, align 1 %21 = load i8, ptr %r1, align 1 %conv19 = zext i8 %21 to i32 %shr20 = ashr i32 %conv19, 3 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %r1, align 1 %22 = load i8, ptr %b0, align 1 %conv22 = zext i8 %22 to i32 %23 = load i8, ptr %g0, align 1 %conv23 = zext i8 %23 to i32 %shl = shl i32 %conv23, 5 %or = or i32 %conv22, %shl %24 = load i8, ptr %r0, align 1 %conv24 = zext i8 %24 to i32 %shl25 = shl i32 %conv24, 10 %or26 = or i32 %or, %shl25 %or27 = or i32 %or26, 32768 %conv28 = trunc i32 %or27 to i16 %25 = load ptr, ptr %dst_argb1555.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %25, i64 0 store i16 %conv28, ptr %add.ptr, align 2 %26 = load i8, ptr %b1, align 1 %conv29 = zext i8 %26 to i32 %27 = load i8, ptr %g1, align 1 %conv30 = zext i8 %27 to i32 %shl31 = shl i32 %conv30, 5 %or32 = or i32 %conv29, %shl31 %28 = load i8, ptr %r1, align 1 %conv33 = zext i8 %28 to i32 %shl34 = shl i32 %conv33, 10 %or35 = or i32 %or32, %shl34 %or36 = or i32 %or35, 32768 %conv37 = trunc i32 %or36 to i16 %29 = load ptr, ptr %dst_argb1555.addr, align 8 %add.ptr38 = getelementptr inbounds i8, ptr %29, i64 2 store i16 %conv37, ptr %add.ptr38, align 2 %30 = load ptr, ptr %src_y.addr, align 8 %add.ptr39 = getelementptr inbounds i8, ptr %30, i64 2 store ptr %add.ptr39, ptr %src_y.addr, align 8 %31 = load ptr, ptr %src_u.addr, align 8 %add.ptr40 = getelementptr inbounds i8, ptr %31, i64 1 store ptr %add.ptr40, ptr %src_u.addr, align 8 %32 = load ptr, ptr %src_v.addr, align 8 %add.ptr41 = getelementptr inbounds i8, ptr %32, i64 1 store ptr %add.ptr41, ptr %src_v.addr, align 8 %33 = load ptr, ptr %dst_argb1555.addr, align 8 %add.ptr42 = getelementptr inbounds i8, ptr %33, i64 4 store ptr %add.ptr42, ptr %dst_argb1555.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %34 = load i32, ptr %x, align 4 %add = add nsw i32 %34, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !99 for.end: ; preds = %for.cond %35 = load i32, ptr %width.addr, align 4 %and = and i32 %35, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %36 = load ptr, ptr %src_y.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %36, i64 0 %37 = load i8, ptr %arrayidx43, align 1 %38 = load ptr, ptr %src_u.addr, align 8 %arrayidx44 = getelementptr inbounds i8, ptr %38, i64 0 %39 = load i8, ptr %arrayidx44, align 1 %40 = load ptr, ptr %src_v.addr, align 8 %arrayidx45 = getelementptr inbounds i8, ptr %40, i64 0 %41 = load i8, ptr %arrayidx45, align 1 %42 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %37, i8 noundef zeroext %39, i8 noundef zeroext %41, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %42) %43 = load i8, ptr %b0, align 1 %conv46 = zext i8 %43 to i32 %shr47 = ashr i32 %conv46, 3 %conv48 = trunc i32 %shr47 to i8 store i8 %conv48, ptr %b0, align 1 %44 = load i8, ptr %g0, align 1 %conv49 = zext i8 %44 to i32 %shr50 = ashr i32 %conv49, 3 %conv51 = trunc i32 %shr50 to i8 store i8 %conv51, ptr %g0, align 1 %45 = load i8, ptr %r0, align 1 %conv52 = zext i8 %45 to i32 %shr53 = ashr i32 %conv52, 3 %conv54 = trunc i32 %shr53 to i8 store i8 %conv54, ptr %r0, align 1 %46 = load i8, ptr %b0, align 1 %conv55 = zext i8 %46 to i32 %47 = load i8, ptr %g0, align 1 %conv56 = zext i8 %47 to i32 %shl57 = shl i32 %conv56, 5 %or58 = or i32 %conv55, %shl57 %48 = load i8, ptr %r0, align 1 %conv59 = zext i8 %48 to i32 %shl60 = shl i32 %conv59, 10 %or61 = or i32 %or58, %shl60 %or62 = or i32 %or61, 32768 %conv63 = trunc i32 %or62 to i16 %49 = load ptr, ptr %dst_argb1555.addr, align 8 store i16 %conv63, ptr %49, align 2 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToRGB565Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_rgb565, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_rgb565.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_rgb565, ptr %dst_rgb565.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 store i8 -86, ptr %b0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 store i8 -86, ptr %g0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 store i8 -86, ptr %r0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 store i8 -86, ptr %b1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 store i8 -86, ptr %g1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 store i8 -86, ptr %r1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %8) %9 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx3, align 1 %11 = load ptr, ptr %src_u.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx4, align 1 %13 = load ptr, ptr %src_v.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 0 %14 = load i8, ptr %arrayidx5, align 1 %15 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %10, i8 noundef zeroext %12, i8 noundef zeroext %14, ptr noundef %b1, ptr noundef %g1, ptr noundef %r1, ptr noundef %15) %16 = load i8, ptr %b0, align 1 %conv = zext i8 %16 to i32 %shr = ashr i32 %conv, 3 %conv6 = trunc i32 %shr to i8 store i8 %conv6, ptr %b0, align 1 %17 = load i8, ptr %g0, align 1 %conv7 = zext i8 %17 to i32 %shr8 = ashr i32 %conv7, 2 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %g0, align 1 %18 = load i8, ptr %r0, align 1 %conv10 = zext i8 %18 to i32 %shr11 = ashr i32 %conv10, 3 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r0, align 1 %19 = load i8, ptr %b1, align 1 %conv13 = zext i8 %19 to i32 %shr14 = ashr i32 %conv13, 3 %conv15 = trunc i32 %shr14 to i8 store i8 %conv15, ptr %b1, align 1 %20 = load i8, ptr %g1, align 1 %conv16 = zext i8 %20 to i32 %shr17 = ashr i32 %conv16, 2 %conv18 = trunc i32 %shr17 to i8 store i8 %conv18, ptr %g1, align 1 %21 = load i8, ptr %r1, align 1 %conv19 = zext i8 %21 to i32 %shr20 = ashr i32 %conv19, 3 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %r1, align 1 %22 = load i8, ptr %b0, align 1 %conv22 = zext i8 %22 to i32 %23 = load i8, ptr %g0, align 1 %conv23 = zext i8 %23 to i32 %shl = shl i32 %conv23, 5 %or = or i32 %conv22, %shl %24 = load i8, ptr %r0, align 1 %conv24 = zext i8 %24 to i32 %shl25 = shl i32 %conv24, 11 %or26 = or i32 %or, %shl25 %conv27 = trunc i32 %or26 to i16 %25 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %25, i64 0 store i16 %conv27, ptr %add.ptr, align 2 %26 = load i8, ptr %b1, align 1 %conv28 = zext i8 %26 to i32 %27 = load i8, ptr %g1, align 1 %conv29 = zext i8 %27 to i32 %shl30 = shl i32 %conv29, 5 %or31 = or i32 %conv28, %shl30 %28 = load i8, ptr %r1, align 1 %conv32 = zext i8 %28 to i32 %shl33 = shl i32 %conv32, 11 %or34 = or i32 %or31, %shl33 %conv35 = trunc i32 %or34 to i16 %29 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr36 = getelementptr inbounds i8, ptr %29, i64 2 store i16 %conv35, ptr %add.ptr36, align 2 %30 = load ptr, ptr %src_y.addr, align 8 %add.ptr37 = getelementptr inbounds i8, ptr %30, i64 2 store ptr %add.ptr37, ptr %src_y.addr, align 8 %31 = load ptr, ptr %src_u.addr, align 8 %add.ptr38 = getelementptr inbounds i8, ptr %31, i64 1 store ptr %add.ptr38, ptr %src_u.addr, align 8 %32 = load ptr, ptr %src_v.addr, align 8 %add.ptr39 = getelementptr inbounds i8, ptr %32, i64 1 store ptr %add.ptr39, ptr %src_v.addr, align 8 %33 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr40 = getelementptr inbounds i8, ptr %33, i64 4 store ptr %add.ptr40, ptr %dst_rgb565.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %34 = load i32, ptr %x, align 4 %add = add nsw i32 %34, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !100 for.end: ; preds = %for.cond %35 = load i32, ptr %width.addr, align 4 %and = and i32 %35, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %36 = load ptr, ptr %src_y.addr, align 8 %arrayidx41 = getelementptr inbounds i8, ptr %36, i64 0 %37 = load i8, ptr %arrayidx41, align 1 %38 = load ptr, ptr %src_u.addr, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %38, i64 0 %39 = load i8, ptr %arrayidx42, align 1 %40 = load ptr, ptr %src_v.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %40, i64 0 %41 = load i8, ptr %arrayidx43, align 1 %42 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %37, i8 noundef zeroext %39, i8 noundef zeroext %41, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %42) %43 = load i8, ptr %b0, align 1 %conv44 = zext i8 %43 to i32 %shr45 = ashr i32 %conv44, 3 %conv46 = trunc i32 %shr45 to i8 store i8 %conv46, ptr %b0, align 1 %44 = load i8, ptr %g0, align 1 %conv47 = zext i8 %44 to i32 %shr48 = ashr i32 %conv47, 2 %conv49 = trunc i32 %shr48 to i8 store i8 %conv49, ptr %g0, align 1 %45 = load i8, ptr %r0, align 1 %conv50 = zext i8 %45 to i32 %shr51 = ashr i32 %conv50, 3 %conv52 = trunc i32 %shr51 to i8 store i8 %conv52, ptr %r0, align 1 %46 = load i8, ptr %b0, align 1 %conv53 = zext i8 %46 to i32 %47 = load i8, ptr %g0, align 1 %conv54 = zext i8 %47 to i32 %shl55 = shl i32 %conv54, 5 %or56 = or i32 %conv53, %shl55 %48 = load i8, ptr %r0, align 1 %conv57 = zext i8 %48 to i32 %shl58 = shl i32 %conv57, 11 %or59 = or i32 %or56, %shl58 %conv60 = trunc i32 %or59 to i16 %49 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr61 = getelementptr inbounds i8, ptr %49, i64 0 store i16 %conv60, ptr %add.ptr61, align 2 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_uv.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_uv.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 1 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_uv.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 2 store ptr %add.ptr14, ptr %src_uv.addr, align 8 %26 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %26, i64 8 store ptr %add.ptr15, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %27 = load i32, ptr %x, align 4 %add = add nsw i32 %27, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !101 for.end: ; preds = %for.cond %28 = load i32, ptr %width.addr, align 4 %and = and i32 %28, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %29 = load ptr, ptr %src_y.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %29, i64 0 %30 = load i8, ptr %arrayidx16, align 1 %31 = load ptr, ptr %src_uv.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %31, i64 0 %32 = load i8, ptr %arrayidx17, align 1 %33 = load ptr, ptr %src_uv.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %33, i64 1 %34 = load i8, ptr %arrayidx18, align 1 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 0 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 1 %37 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 2 %38 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %30, i8 noundef zeroext %32, i8 noundef zeroext %34, ptr noundef %add.ptr19, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %38) %39 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %39, i64 3 store i8 -1, ptr %arrayidx22, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV21ToARGBRow_C(ptr noundef %src_y, ptr noundef %src_vu, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_vu.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_vu, ptr %src_vu.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_vu.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_vu.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_vu.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 1 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_vu.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 0 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_vu.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 2 store ptr %add.ptr14, ptr %src_vu.addr, align 8 %26 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %26, i64 8 store ptr %add.ptr15, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %27 = load i32, ptr %x, align 4 %add = add nsw i32 %27, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !102 for.end: ; preds = %for.cond %28 = load i32, ptr %width.addr, align 4 %and = and i32 %28, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %29 = load ptr, ptr %src_y.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %29, i64 0 %30 = load i8, ptr %arrayidx16, align 1 %31 = load ptr, ptr %src_vu.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %31, i64 1 %32 = load i8, ptr %arrayidx17, align 1 %33 = load ptr, ptr %src_vu.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %33, i64 0 %34 = load i8, ptr %arrayidx18, align 1 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 0 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 1 %37 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 2 %38 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %30, i8 noundef zeroext %32, i8 noundef zeroext %34, ptr noundef %add.ptr19, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %38) %39 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %39, i64 3 store i8 -1, ptr %arrayidx22, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToRGB24Row_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_y.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %src_uv.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 0 %15 = load i8, ptr %arrayidx6, align 1 %16 = load ptr, ptr %src_uv.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %16, i64 1 %17 = load i8, ptr %arrayidx7, align 1 %18 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %18, i64 3 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %13, i8 noundef zeroext %15, i8 noundef zeroext %17, ptr noundef %add.ptr8, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %21) %22 = load ptr, ptr %src_y.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %22, i64 2 store ptr %add.ptr11, ptr %src_y.addr, align 8 %23 = load ptr, ptr %src_uv.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %23, i64 2 store ptr %add.ptr12, ptr %src_uv.addr, align 8 %24 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 6 store ptr %add.ptr13, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %25 = load i32, ptr %x, align 4 %add = add nsw i32 %25, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !103 for.end: ; preds = %for.cond %26 = load i32, ptr %width.addr, align 4 %and = and i32 %26, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %27 = load ptr, ptr %src_y.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %27, i64 0 %28 = load i8, ptr %arrayidx14, align 1 %29 = load ptr, ptr %src_uv.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %29, i64 0 %30 = load i8, ptr %arrayidx15, align 1 %31 = load ptr, ptr %src_uv.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %31, i64 1 %32 = load i8, ptr %arrayidx16, align 1 %33 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr17 = getelementptr inbounds i8, ptr %33, i64 0 %34 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %34, i64 1 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 2 %36 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %28, i8 noundef zeroext %30, i8 noundef zeroext %32, ptr noundef %add.ptr17, ptr noundef %add.ptr18, ptr noundef %add.ptr19, ptr noundef %36) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV21ToRGB24Row_C(ptr noundef %src_y, ptr noundef %src_vu, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_vu.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_vu, ptr %src_vu.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_vu.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_vu.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %src_y.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %src_vu.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx6, align 1 %16 = load ptr, ptr %src_vu.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %16, i64 0 %17 = load i8, ptr %arrayidx7, align 1 %18 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %18, i64 3 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %13, i8 noundef zeroext %15, i8 noundef zeroext %17, ptr noundef %add.ptr8, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %21) %22 = load ptr, ptr %src_y.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %22, i64 2 store ptr %add.ptr11, ptr %src_y.addr, align 8 %23 = load ptr, ptr %src_vu.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %23, i64 2 store ptr %add.ptr12, ptr %src_vu.addr, align 8 %24 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 6 store ptr %add.ptr13, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %25 = load i32, ptr %x, align 4 %add = add nsw i32 %25, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !104 for.end: ; preds = %for.cond %26 = load i32, ptr %width.addr, align 4 %and = and i32 %26, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %27 = load ptr, ptr %src_y.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %27, i64 0 %28 = load i8, ptr %arrayidx14, align 1 %29 = load ptr, ptr %src_vu.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %29, i64 1 %30 = load i8, ptr %arrayidx15, align 1 %31 = load ptr, ptr %src_vu.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %31, i64 0 %32 = load i8, ptr %arrayidx16, align 1 %33 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr17 = getelementptr inbounds i8, ptr %33, i64 0 %34 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %34, i64 1 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 2 %36 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %28, i8 noundef zeroext %30, i8 noundef zeroext %32, ptr noundef %add.ptr17, ptr noundef %add.ptr18, ptr noundef %add.ptr19, ptr noundef %36) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToRGB565Row_C(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_rgb565, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_rgb565.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %b0 = alloca i8, align 1 %g0 = alloca i8, align 1 %r0 = alloca i8, align 1 %b1 = alloca i8, align 1 %g1 = alloca i8, align 1 %r1 = alloca i8, align 1 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_rgb565, ptr %dst_rgb565.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b0) #10 store i8 -86, ptr %b0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g0) #10 store i8 -86, ptr %g0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r0) #10 store i8 -86, ptr %r0, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %b1) #10 store i8 -86, ptr %b1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %g1) #10 store i8 -86, ptr %g1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 1, ptr %r1) #10 store i8 -86, ptr %r1, align 1, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %8) %9 = load ptr, ptr %src_y.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx3, align 1 %11 = load ptr, ptr %src_uv.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx4, align 1 %13 = load ptr, ptr %src_uv.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx5, align 1 %15 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %10, i8 noundef zeroext %12, i8 noundef zeroext %14, ptr noundef %b1, ptr noundef %g1, ptr noundef %r1, ptr noundef %15) %16 = load i8, ptr %b0, align 1 %conv = zext i8 %16 to i32 %shr = ashr i32 %conv, 3 %conv6 = trunc i32 %shr to i8 store i8 %conv6, ptr %b0, align 1 %17 = load i8, ptr %g0, align 1 %conv7 = zext i8 %17 to i32 %shr8 = ashr i32 %conv7, 2 %conv9 = trunc i32 %shr8 to i8 store i8 %conv9, ptr %g0, align 1 %18 = load i8, ptr %r0, align 1 %conv10 = zext i8 %18 to i32 %shr11 = ashr i32 %conv10, 3 %conv12 = trunc i32 %shr11 to i8 store i8 %conv12, ptr %r0, align 1 %19 = load i8, ptr %b1, align 1 %conv13 = zext i8 %19 to i32 %shr14 = ashr i32 %conv13, 3 %conv15 = trunc i32 %shr14 to i8 store i8 %conv15, ptr %b1, align 1 %20 = load i8, ptr %g1, align 1 %conv16 = zext i8 %20 to i32 %shr17 = ashr i32 %conv16, 2 %conv18 = trunc i32 %shr17 to i8 store i8 %conv18, ptr %g1, align 1 %21 = load i8, ptr %r1, align 1 %conv19 = zext i8 %21 to i32 %shr20 = ashr i32 %conv19, 3 %conv21 = trunc i32 %shr20 to i8 store i8 %conv21, ptr %r1, align 1 %22 = load i8, ptr %b0, align 1 %conv22 = zext i8 %22 to i16 %conv23 = zext i16 %conv22 to i32 %23 = load i8, ptr %g0, align 1 %conv24 = zext i8 %23 to i32 %shl = shl i32 %conv24, 5 %conv25 = trunc i32 %shl to i16 %conv26 = zext i16 %conv25 to i32 %or = or i32 %conv23, %conv26 %24 = load i8, ptr %r0, align 1 %conv27 = zext i8 %24 to i32 %shl28 = shl i32 %conv27, 11 %conv29 = trunc i32 %shl28 to i16 %conv30 = zext i16 %conv29 to i32 %or31 = or i32 %or, %conv30 %conv32 = trunc i32 %or31 to i16 %25 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %25, i64 0 store i16 %conv32, ptr %add.ptr, align 2 %26 = load i8, ptr %b1, align 1 %conv33 = zext i8 %26 to i16 %conv34 = zext i16 %conv33 to i32 %27 = load i8, ptr %g1, align 1 %conv35 = zext i8 %27 to i32 %shl36 = shl i32 %conv35, 5 %conv37 = trunc i32 %shl36 to i16 %conv38 = zext i16 %conv37 to i32 %or39 = or i32 %conv34, %conv38 %28 = load i8, ptr %r1, align 1 %conv40 = zext i8 %28 to i32 %shl41 = shl i32 %conv40, 11 %conv42 = trunc i32 %shl41 to i16 %conv43 = zext i16 %conv42 to i32 %or44 = or i32 %or39, %conv43 %conv45 = trunc i32 %or44 to i16 %29 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr46 = getelementptr inbounds i8, ptr %29, i64 2 store i16 %conv45, ptr %add.ptr46, align 2 %30 = load ptr, ptr %src_y.addr, align 8 %add.ptr47 = getelementptr inbounds i8, ptr %30, i64 2 store ptr %add.ptr47, ptr %src_y.addr, align 8 %31 = load ptr, ptr %src_uv.addr, align 8 %add.ptr48 = getelementptr inbounds i8, ptr %31, i64 2 store ptr %add.ptr48, ptr %src_uv.addr, align 8 %32 = load ptr, ptr %dst_rgb565.addr, align 8 %add.ptr49 = getelementptr inbounds i8, ptr %32, i64 4 store ptr %add.ptr49, ptr %dst_rgb565.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %33 = load i32, ptr %x, align 4 %add = add nsw i32 %33, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !105 for.end: ; preds = %for.cond %34 = load i32, ptr %width.addr, align 4 %and = and i32 %34, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %35 = load ptr, ptr %src_y.addr, align 8 %arrayidx50 = getelementptr inbounds i8, ptr %35, i64 0 %36 = load i8, ptr %arrayidx50, align 1 %37 = load ptr, ptr %src_uv.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %37, i64 0 %38 = load i8, ptr %arrayidx51, align 1 %39 = load ptr, ptr %src_uv.addr, align 8 %arrayidx52 = getelementptr inbounds i8, ptr %39, i64 1 %40 = load i8, ptr %arrayidx52, align 1 %41 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %36, i8 noundef zeroext %38, i8 noundef zeroext %40, ptr noundef %b0, ptr noundef %g0, ptr noundef %r0, ptr noundef %41) %42 = load i8, ptr %b0, align 1 %conv53 = zext i8 %42 to i32 %shr54 = ashr i32 %conv53, 3 %conv55 = trunc i32 %shr54 to i8 store i8 %conv55, ptr %b0, align 1 %43 = load i8, ptr %g0, align 1 %conv56 = zext i8 %43 to i32 %shr57 = ashr i32 %conv56, 2 %conv58 = trunc i32 %shr57 to i8 store i8 %conv58, ptr %g0, align 1 %44 = load i8, ptr %r0, align 1 %conv59 = zext i8 %44 to i32 %shr60 = ashr i32 %conv59, 3 %conv61 = trunc i32 %shr60 to i8 store i8 %conv61, ptr %r0, align 1 %45 = load i8, ptr %b0, align 1 %conv62 = zext i8 %45 to i16 %conv63 = zext i16 %conv62 to i32 %46 = load i8, ptr %g0, align 1 %conv64 = zext i8 %46 to i32 %shl65 = shl i32 %conv64, 5 %conv66 = trunc i32 %shl65 to i16 %conv67 = zext i16 %conv66 to i32 %or68 = or i32 %conv63, %conv67 %47 = load i8, ptr %r0, align 1 %conv69 = zext i8 %47 to i32 %shl70 = shl i32 %conv69, 11 %conv71 = trunc i32 %shl70 to i16 %conv72 = zext i16 %conv71 to i32 %or73 = or i32 %or68, %conv72 %conv74 = trunc i32 %or73 to i16 %48 = load ptr, ptr %dst_rgb565.addr, align 8 store i16 %conv74, ptr %48, align 2 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b1) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g0) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b0) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @YUY2ToARGBRow_C(ptr noundef %src_yuy2, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_yuy2.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_yuy2, ptr %src_yuy2.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 3 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 2 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 1 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 3 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_yuy2.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 4 store ptr %add.ptr13, ptr %src_yuy2.addr, align 8 %25 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 8 store ptr %add.ptr14, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %26 = load i32, ptr %x, align 4 %add = add nsw i32 %26, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !106 for.end: ; preds = %for.cond %27 = load i32, ptr %width.addr, align 4 %and = and i32 %27, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %28 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %28, i64 0 %29 = load i8, ptr %arrayidx15, align 1 %30 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %30, i64 1 %31 = load i8, ptr %arrayidx16, align 1 %32 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %32, i64 3 %33 = load i8, ptr %arrayidx17, align 1 %34 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 1 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 2 %37 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %29, i8 noundef zeroext %31, i8 noundef zeroext %33, ptr noundef %add.ptr18, ptr noundef %add.ptr19, ptr noundef %add.ptr20, ptr noundef %37) %38 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %38, i64 3 store i8 -1, ptr %arrayidx21, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @UYVYToARGBRow_C(ptr noundef %src_uyvy, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_uyvy.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uyvy, ptr %src_uyvy.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 0 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 3 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 2 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 4 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 5 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 6 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 7 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_uyvy.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 4 store ptr %add.ptr13, ptr %src_uyvy.addr, align 8 %25 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 8 store ptr %add.ptr14, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %26 = load i32, ptr %x, align 4 %add = add nsw i32 %26, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !107 for.end: ; preds = %for.cond %27 = load i32, ptr %width.addr, align 4 %and = and i32 %27, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %28 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %28, i64 1 %29 = load i8, ptr %arrayidx15, align 1 %30 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %30, i64 0 %31 = load i8, ptr %arrayidx16, align 1 %32 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %32, i64 2 %33 = load i8, ptr %arrayidx17, align 1 %34 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %35, i64 1 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 2 %37 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %29, i8 noundef zeroext %31, i8 noundef zeroext %33, ptr noundef %add.ptr18, ptr noundef %add.ptr19, ptr noundef %add.ptr20, ptr noundef %37) %38 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %38, i64 3 store i8 -1, ptr %arrayidx21, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToRGBARow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 1 %9 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr3 = getelementptr inbounds i8, ptr %9, i64 2 %10 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 3 %11 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, i8 noundef zeroext %5, i8 noundef zeroext %7, ptr noundef %add.ptr, ptr noundef %add.ptr3, ptr noundef %add.ptr4, ptr noundef %11) %12 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 0 store i8 -1, ptr %arrayidx5, align 1 %13 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %src_u.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx7, align 1 %17 = load ptr, ptr %src_v.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %17, i64 0 %18 = load i8, ptr %arrayidx8, align 1 %19 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %19, i64 5 %20 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %20, i64 6 %21 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr11 = getelementptr inbounds i8, ptr %21, i64 7 %22 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %14, i8 noundef zeroext %16, i8 noundef zeroext %18, ptr noundef %add.ptr9, ptr noundef %add.ptr10, ptr noundef %add.ptr11, ptr noundef %22) %23 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %23, i64 4 store i8 -1, ptr %arrayidx12, align 1 %24 = load ptr, ptr %src_y.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr13, ptr %src_y.addr, align 8 %25 = load ptr, ptr %src_u.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %25, i64 1 store ptr %add.ptr14, ptr %src_u.addr, align 8 %26 = load ptr, ptr %src_v.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %26, i64 1 store ptr %add.ptr15, ptr %src_v.addr, align 8 %27 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr16 = getelementptr inbounds i8, ptr %27, i64 8 store ptr %add.ptr16, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %add = add nsw i32 %28, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !108 for.end: ; preds = %for.cond %29 = load i32, ptr %width.addr, align 4 %and = and i32 %29, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %30 = load ptr, ptr %src_y.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %30, i64 0 %31 = load i8, ptr %arrayidx17, align 1 %32 = load ptr, ptr %src_u.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx18, align 1 %34 = load ptr, ptr %src_v.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load i8, ptr %arrayidx19, align 1 %36 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr20 = getelementptr inbounds i8, ptr %36, i64 1 %37 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %37, i64 2 %38 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %38, i64 3 %39 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL8YuvPixelEhhhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %31, i8 noundef zeroext %33, i8 noundef zeroext %35, ptr noundef %add.ptr20, ptr noundef %add.ptr21, ptr noundef %add.ptr22, ptr noundef %39) %40 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %40, i64 0 store i8 -1, ptr %arrayidx23, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I400ToARGBRow_C(ptr noundef %src_y, ptr noundef %rgb_buf, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %rgb_buf.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %rgb_buf, ptr %rgb_buf.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %4, i64 0 %5 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr1 = getelementptr inbounds i8, ptr %5, i64 1 %6 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL6YPixelEhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %3, ptr noundef %add.ptr, ptr noundef %add.ptr1, ptr noundef %add.ptr2, ptr noundef %7) %8 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 3 store i8 -1, ptr %arrayidx3, align 1 %9 = load ptr, ptr %src_y.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx4, align 1 %11 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr5 = getelementptr inbounds i8, ptr %11, i64 4 %12 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %12, i64 5 %13 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %13, i64 6 %14 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL6YPixelEhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %10, ptr noundef %add.ptr5, ptr noundef %add.ptr6, ptr noundef %add.ptr7, ptr noundef %14) %15 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %15, i64 7 store i8 -1, ptr %arrayidx8, align 1 %16 = load ptr, ptr %src_y.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %16, i64 2 store ptr %add.ptr9, ptr %src_y.addr, align 8 %17 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %17, i64 8 store ptr %add.ptr10, ptr %rgb_buf.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %18 = load i32, ptr %x, align 4 %add = add nsw i32 %18, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !109 for.end: ; preds = %for.cond %19 = load i32, ptr %width.addr, align 4 %and = and i32 %19, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %20 = load ptr, ptr %src_y.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx11, align 1 %22 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %22, i64 0 %23 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %23, i64 1 %24 = load ptr, ptr %rgb_buf.addr, align 8 %add.ptr14 = getelementptr inbounds i8, ptr %24, i64 2 %25 = load ptr, ptr %yuvconstants.addr, align 8 call void @_ZN6libyuvL6YPixelEhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %21, ptr noundef %add.ptr12, ptr noundef %add.ptr13, ptr noundef %add.ptr14, ptr noundef %25) %26 = load ptr, ptr %rgb_buf.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %26, i64 3 store i8 -1, ptr %arrayidx15, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL6YPixelEhPhS0_S0_PKNS_12YuvConstantsE(i8 noundef zeroext %y, ptr noundef %b, ptr noundef %g, ptr noundef %r, ptr noundef %yuvconstants) #4 { entry: %y.addr = alloca i8, align 1 %b.addr = alloca ptr, align 8 %g.addr = alloca ptr, align 8 %r.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %ygb = alloca i32, align 4 %yg = alloca i32, align 4 %y1 = alloca i32, align 4 %b8 = alloca i8, align 1 store i8 %y, ptr %y.addr, align 1 store ptr %b, ptr %b.addr, align 8 store ptr %g, ptr %g.addr, align 8 store ptr %r, ptr %r.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %ygb) #10 %0 = load ptr, ptr %yuvconstants.addr, align 8 %kYBiasToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %0, i32 0, i32 4 %arrayidx = getelementptr inbounds [16 x i16], ptr %kYBiasToRgb, i64 0, i64 0 %1 = load i16, ptr %arrayidx, align 2 %conv = sext i16 %1 to i32 store i32 %conv, ptr %ygb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %yg) #10 %2 = load ptr, ptr %yuvconstants.addr, align 8 %kYToRgb = getelementptr inbounds nuw %"struct.libyuv::YuvConstants", ptr %2, i32 0, i32 3 %arrayidx1 = getelementptr inbounds [16 x i16], ptr %kYToRgb, i64 0, i64 0 %3 = load i16, ptr %arrayidx1, align 2 %conv2 = sext i16 %3 to i32 store i32 %conv2, ptr %yg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y1) #10 %4 = load i8, ptr %y.addr, align 1 %conv3 = zext i8 %4 to i32 %mul = mul nsw i32 %conv3, 257 %5 = load i32, ptr %yg, align 4 %mul4 = mul nsw i32 %mul, %5 %shr = lshr i32 %mul4, 16 store i32 %shr, ptr %y1, align 4 call void @llvm.lifetime.start.p0(i64 1, ptr %b8) #10 %6 = load i32, ptr %y1, align 4 %7 = load i32, ptr %ygb, align 4 %add = add nsw i32 %6, %7 %shr5 = ashr i32 %add, 6 %call = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %shr5) %conv6 = trunc i32 %call to i8 store i8 %conv6, ptr %b8, align 1 %8 = load i8, ptr %b8, align 1 %9 = load ptr, ptr %b.addr, align 8 store i8 %8, ptr %9, align 1 %10 = load i8, ptr %b8, align 1 %11 = load ptr, ptr %g.addr, align 8 store i8 %10, ptr %11, align 1 %12 = load i8, ptr %b8, align 1 %13 = load ptr, ptr %r.addr, align 8 store i8 %12, ptr %13, align 1 call void @llvm.lifetime.end.p0(i64 1, ptr %b8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %yg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ygb) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MirrorRow_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %0 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %0, 1 %1 = load ptr, ptr %src.addr, align 8 %idx.ext = sext i32 %sub to i64 %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.ext store ptr %add.ptr, ptr %src.addr, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub1 = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = load ptr, ptr %src.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %6 = load ptr, ptr %dst.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom = sext i32 %7 to i64 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 %idxprom store i8 %5, ptr %arrayidx2, align 1 %8 = load ptr, ptr %src.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 -1 %9 = load i8, ptr %arrayidx3, align 1 %10 = load ptr, ptr %dst.addr, align 8 %11 = load i32, ptr %x, align 4 %add = add nsw i32 %11, 1 %idxprom4 = sext i32 %add to i64 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 %idxprom4 store i8 %9, ptr %arrayidx5, align 1 %12 = load ptr, ptr %src.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %12, i64 -2 store ptr %add.ptr6, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %13 = load i32, ptr %x, align 4 %add7 = add nsw i32 %13, 2 store i32 %add7, ptr %x, align 4 br label %for.cond, !llvm.loop !110 for.end: ; preds = %for.cond %14 = load i32, ptr %width.addr, align 4 %and = and i32 %14, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %15 = load ptr, ptr %src.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx8, align 1 %17 = load ptr, ptr %dst.addr, align 8 %18 = load i32, ptr %width.addr, align 4 %sub9 = sub nsw i32 %18, 1 %idxprom10 = sext i32 %sub9 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %17, i64 %idxprom10 store i8 %16, ptr %arrayidx11, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MirrorRow_16_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %0 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %0, 1 %1 = load ptr, ptr %src.addr, align 8 %idx.ext = sext i32 %sub to i64 %add.ptr = getelementptr inbounds i16, ptr %1, i64 %idx.ext store ptr %add.ptr, ptr %src.addr, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub1 = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = load ptr, ptr %src.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %4, i64 0 %5 = load i16, ptr %arrayidx, align 2 %6 = load ptr, ptr %dst.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom = sext i32 %7 to i64 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 %idxprom store i16 %5, ptr %arrayidx2, align 2 %8 = load ptr, ptr %src.addr, align 8 %arrayidx3 = getelementptr inbounds i16, ptr %8, i64 -1 %9 = load i16, ptr %arrayidx3, align 2 %10 = load ptr, ptr %dst.addr, align 8 %11 = load i32, ptr %x, align 4 %add = add nsw i32 %11, 1 %idxprom4 = sext i32 %add to i64 %arrayidx5 = getelementptr inbounds i16, ptr %10, i64 %idxprom4 store i16 %9, ptr %arrayidx5, align 2 %12 = load ptr, ptr %src.addr, align 8 %add.ptr6 = getelementptr inbounds i16, ptr %12, i64 -2 store ptr %add.ptr6, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %13 = load i32, ptr %x, align 4 %add7 = add nsw i32 %13, 2 store i32 %add7, ptr %x, align 4 br label %for.cond, !llvm.loop !111 for.end: ; preds = %for.cond %14 = load i32, ptr %width.addr, align 4 %and = and i32 %14, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %15 = load ptr, ptr %src.addr, align 8 %arrayidx8 = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx8, align 2 %17 = load ptr, ptr %dst.addr, align 8 %18 = load i32, ptr %width.addr, align 4 %sub9 = sub nsw i32 %18, 1 %idxprom10 = sext i32 %sub9 to i64 %arrayidx11 = getelementptr inbounds i16, ptr %17, i64 %idxprom10 store i16 %16, ptr %arrayidx11, align 2 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MirrorUVRow_C(ptr noundef %src_uv, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %0 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %0, 1 %shl = shl i32 %sub, 1 %1 = load ptr, ptr %src_uv.addr, align 8 %idx.ext = sext i32 %shl to i64 %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.ext store ptr %add.ptr, ptr %src_uv.addr, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %2, %3 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %6 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 0 store i8 %5, ptr %arrayidx1, align 1 %7 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %7, i64 1 %8 = load i8, ptr %arrayidx2, align 1 %9 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 1 store i8 %8, ptr %arrayidx3, align 1 %10 = load ptr, ptr %src_uv.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 -2 store ptr %add.ptr4, ptr %src_uv.addr, align 8 %11 = load ptr, ptr %dst_uv.addr, align 8 %add.ptr5 = getelementptr inbounds i8, ptr %11, i64 2 store ptr %add.ptr5, ptr %dst_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %12 = load i32, ptr %x, align 4 %inc = add nsw i32 %12, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !112 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MirrorSplitUVRow_C(ptr noundef %src_uv, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %0 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %0, 1 %shl = shl i32 %sub, 1 %1 = load ptr, ptr %src_uv.addr, align 8 %idx.ext = sext i32 %shl to i64 %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.ext store ptr %add.ptr, ptr %src_uv.addr, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %sub1 = sub nsw i32 %3, 1 %cmp = icmp slt i32 %2, %sub1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 %6 = load ptr, ptr %dst_u.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom = sext i32 %7 to i64 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 %idxprom store i8 %5, ptr %arrayidx2, align 1 %8 = load ptr, ptr %src_uv.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %8, i64 -2 %9 = load i8, ptr %arrayidx3, align 1 %10 = load ptr, ptr %dst_u.addr, align 8 %11 = load i32, ptr %x, align 4 %add = add nsw i32 %11, 1 %idxprom4 = sext i32 %add to i64 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 %idxprom4 store i8 %9, ptr %arrayidx5, align 1 %12 = load ptr, ptr %src_uv.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx6, align 1 %14 = load ptr, ptr %dst_v.addr, align 8 %15 = load i32, ptr %x, align 4 %idxprom7 = sext i32 %15 to i64 %arrayidx8 = getelementptr inbounds i8, ptr %14, i64 %idxprom7 store i8 %13, ptr %arrayidx8, align 1 %16 = load ptr, ptr %src_uv.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %16, i64 -1 %17 = load i8, ptr %arrayidx9, align 1 %18 = load ptr, ptr %dst_v.addr, align 8 %19 = load i32, ptr %x, align 4 %add10 = add nsw i32 %19, 1 %idxprom11 = sext i32 %add10 to i64 %arrayidx12 = getelementptr inbounds i8, ptr %18, i64 %idxprom11 store i8 %17, ptr %arrayidx12, align 1 %20 = load ptr, ptr %src_uv.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %20, i64 -4 store ptr %add.ptr13, ptr %src_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %21 = load i32, ptr %x, align 4 %add14 = add nsw i32 %21, 2 store i32 %add14, ptr %x, align 4 br label %for.cond, !llvm.loop !113 for.end: ; preds = %for.cond %22 = load i32, ptr %width.addr, align 4 %and = and i32 %22, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %23 = load ptr, ptr %src_uv.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %23, i64 0 %24 = load i8, ptr %arrayidx15, align 1 %25 = load ptr, ptr %dst_u.addr, align 8 %26 = load i32, ptr %width.addr, align 4 %sub16 = sub nsw i32 %26, 1 %idxprom17 = sext i32 %sub16 to i64 %arrayidx18 = getelementptr inbounds i8, ptr %25, i64 %idxprom17 store i8 %24, ptr %arrayidx18, align 1 %27 = load ptr, ptr %src_uv.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %27, i64 1 %28 = load i8, ptr %arrayidx19, align 1 %29 = load ptr, ptr %dst_v.addr, align 8 %30 = load i32, ptr %width.addr, align 4 %sub20 = sub nsw i32 %30, 1 %idxprom21 = sext i32 %sub20 to i64 %arrayidx22 = getelementptr inbounds i8, ptr %29, i64 %idxprom21 store i8 %28, ptr %arrayidx22, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBMirrorRow_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %src32 = alloca ptr, align 8 %dst32 = alloca ptr, align 8 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 8, ptr %src32) #10 %0 = load ptr, ptr %src.addr, align 8 store ptr %0, ptr %src32, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %dst32) #10 %1 = load ptr, ptr %dst.addr, align 8 store ptr %1, ptr %dst32, align 8 %2 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %2, 1 %3 = load ptr, ptr %src32, align 8 %idx.ext = sext i32 %sub to i64 %add.ptr = getelementptr inbounds i32, ptr %3, i64 %idx.ext store ptr %add.ptr, ptr %src32, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %4 = load i32, ptr %x, align 4 %5 = load i32, ptr %width.addr, align 4 %sub1 = sub nsw i32 %5, 1 %cmp = icmp slt i32 %4, %sub1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %6 = load ptr, ptr %src32, align 8 %arrayidx = getelementptr inbounds i32, ptr %6, i64 0 %7 = load i32, ptr %arrayidx, align 4 %8 = load ptr, ptr %dst32, align 8 %9 = load i32, ptr %x, align 4 %idxprom = sext i32 %9 to i64 %arrayidx2 = getelementptr inbounds i32, ptr %8, i64 %idxprom store i32 %7, ptr %arrayidx2, align 4 %10 = load ptr, ptr %src32, align 8 %arrayidx3 = getelementptr inbounds i32, ptr %10, i64 -1 %11 = load i32, ptr %arrayidx3, align 4 %12 = load ptr, ptr %dst32, align 8 %13 = load i32, ptr %x, align 4 %add = add nsw i32 %13, 1 %idxprom4 = sext i32 %add to i64 %arrayidx5 = getelementptr inbounds i32, ptr %12, i64 %idxprom4 store i32 %11, ptr %arrayidx5, align 4 %14 = load ptr, ptr %src32, align 8 %add.ptr6 = getelementptr inbounds i32, ptr %14, i64 -2 store ptr %add.ptr6, ptr %src32, align 8 br label %for.inc for.inc: ; preds = %for.body %15 = load i32, ptr %x, align 4 %add7 = add nsw i32 %15, 2 store i32 %add7, ptr %x, align 4 br label %for.cond, !llvm.loop !114 for.end: ; preds = %for.cond %16 = load i32, ptr %width.addr, align 4 %and = and i32 %16, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %17 = load ptr, ptr %src32, align 8 %arrayidx8 = getelementptr inbounds i32, ptr %17, i64 0 %18 = load i32, ptr %arrayidx8, align 4 %19 = load ptr, ptr %dst32, align 8 %20 = load i32, ptr %width.addr, align 4 %sub9 = sub nsw i32 %20, 1 %idxprom10 = sext i32 %sub9 to i64 %arrayidx11 = getelementptr inbounds i32, ptr %19, i64 %idxprom10 store i32 %18, ptr %arrayidx11, align 4 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 8, ptr %dst32) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24MirrorRow_C(ptr noundef %src_rgb24, ptr noundef %dst_rgb24, i32 noundef %width) #0 { entry: %src_rgb24.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 store ptr %src_rgb24, ptr %src_rgb24.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %0 = load i32, ptr %width.addr, align 4 %mul = mul nsw i32 %0, 3 %sub = sub nsw i32 %mul, 3 %1 = load ptr, ptr %src_rgb24.addr, align 8 %idx.ext = sext i32 %sub to i64 %add.ptr = getelementptr inbounds i8, ptr %1, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb24.addr, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %2, %3 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %4 = load ptr, ptr %src_rgb24.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx, align 1 store i8 %5, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %6 = load ptr, ptr %src_rgb24.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx1, align 1 store i8 %7, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %8 = load ptr, ptr %src_rgb24.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %8, i64 2 %9 = load i8, ptr %arrayidx2, align 1 store i8 %9, ptr %r, align 1 %10 = load i8, ptr %b, align 1 %11 = load ptr, ptr %dst_rgb24.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %11, i64 0 store i8 %10, ptr %arrayidx3, align 1 %12 = load i8, ptr %g, align 1 %13 = load ptr, ptr %dst_rgb24.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %12, ptr %arrayidx4, align 1 %14 = load i8, ptr %r, align 1 %15 = load ptr, ptr %dst_rgb24.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %15, i64 2 store i8 %14, ptr %arrayidx5, align 1 %16 = load ptr, ptr %src_rgb24.addr, align 8 %add.ptr6 = getelementptr inbounds i8, ptr %16, i64 -3 store ptr %add.ptr6, ptr %src_rgb24.addr, align 8 %17 = load ptr, ptr %dst_rgb24.addr, align 8 %add.ptr7 = getelementptr inbounds i8, ptr %17, i64 3 store ptr %add.ptr7, ptr %dst_rgb24.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %18 = load i32, ptr %x, align 4 %inc = add nsw i32 %18, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !115 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SplitUVRow_C(ptr noundef %src_uv, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_u.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %dst_u.addr, align 8 %9 = load i32, ptr %x, align 4 %add = add nsw i32 %9, 1 %idxprom3 = sext i32 %add to i64 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 %idxprom3 store i8 %7, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_uv.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 1 %11 = load i8, ptr %arrayidx5, align 1 %12 = load ptr, ptr %dst_v.addr, align 8 %13 = load i32, ptr %x, align 4 %idxprom6 = sext i32 %13 to i64 %arrayidx7 = getelementptr inbounds i8, ptr %12, i64 %idxprom6 store i8 %11, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_uv.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %14, i64 3 %15 = load i8, ptr %arrayidx8, align 1 %16 = load ptr, ptr %dst_v.addr, align 8 %17 = load i32, ptr %x, align 4 %add9 = add nsw i32 %17, 1 %idxprom10 = sext i32 %add9 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %16, i64 %idxprom10 store i8 %15, ptr %arrayidx11, align 1 %18 = load ptr, ptr %src_uv.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %src_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %19 = load i32, ptr %x, align 4 %add12 = add nsw i32 %19, 2 store i32 %add12, ptr %x, align 4 br label %for.cond, !llvm.loop !116 for.end: ; preds = %for.cond %20 = load i32, ptr %width.addr, align 4 %and = and i32 %20, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %21 = load ptr, ptr %src_uv.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %21, i64 0 %22 = load i8, ptr %arrayidx13, align 1 %23 = load ptr, ptr %dst_u.addr, align 8 %24 = load i32, ptr %width.addr, align 4 %sub14 = sub nsw i32 %24, 1 %idxprom15 = sext i32 %sub14 to i64 %arrayidx16 = getelementptr inbounds i8, ptr %23, i64 %idxprom15 store i8 %22, ptr %arrayidx16, align 1 %25 = load ptr, ptr %src_uv.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %25, i64 1 %26 = load i8, ptr %arrayidx17, align 1 %27 = load ptr, ptr %dst_v.addr, align 8 %28 = load i32, ptr %width.addr, align 4 %sub18 = sub nsw i32 %28, 1 %idxprom19 = sext i32 %sub18 to i64 %arrayidx20 = getelementptr inbounds i8, ptr %27, i64 %idxprom19 store i8 %26, ptr %arrayidx20, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeUVRow_C(ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_u.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %5 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 0 store i8 %4, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_v.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 %idxprom2 %8 = load i8, ptr %arrayidx3, align 1 %9 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %9, i64 1 store i8 %8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_u.addr, align 8 %11 = load i32, ptr %x, align 4 %add = add nsw i32 %11, 1 %idxprom5 = sext i32 %add to i64 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 %idxprom5 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_v.addr, align 8 %15 = load i32, ptr %x, align 4 %add8 = add nsw i32 %15, 1 %idxprom9 = sext i32 %add8 to i64 %arrayidx10 = getelementptr inbounds i8, ptr %14, i64 %idxprom9 %16 = load i8, ptr %arrayidx10, align 1 %17 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx11, align 1 %18 = load ptr, ptr %dst_uv.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %19 = load i32, ptr %x, align 4 %add12 = add nsw i32 %19, 2 store i32 %add12, ptr %x, align 4 br label %for.cond, !llvm.loop !117 for.end: ; preds = %for.cond %20 = load i32, ptr %width.addr, align 4 %and = and i32 %20, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %21 = load ptr, ptr %src_u.addr, align 8 %22 = load i32, ptr %width.addr, align 4 %sub13 = sub nsw i32 %22, 1 %idxprom14 = sext i32 %sub13 to i64 %arrayidx15 = getelementptr inbounds i8, ptr %21, i64 %idxprom14 %23 = load i8, ptr %arrayidx15, align 1 %24 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %24, i64 0 store i8 %23, ptr %arrayidx16, align 1 %25 = load ptr, ptr %src_v.addr, align 8 %26 = load i32, ptr %width.addr, align 4 %sub17 = sub nsw i32 %26, 1 %idxprom18 = sext i32 %sub17 to i64 %arrayidx19 = getelementptr inbounds i8, ptr %25, i64 %idxprom18 %27 = load i8, ptr %arrayidx19, align 1 %28 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %28, i64 1 store i8 %27, ptr %arrayidx20, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @DetileRow_C(ptr noundef %src, i64 noundef %src_tile_stride, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %src_tile_stride.addr = alloca i64, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store i64 %src_tile_stride, ptr %src_tile_stride.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 15 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %dst.addr, align 8 %3 = load ptr, ptr %src.addr, align 8 %call = call ptr @memcpy.inline(ptr noundef %2, ptr noundef %3, i64 noundef 16) #10 %4 = load ptr, ptr %dst.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %4, i64 16 store ptr %add.ptr, ptr %dst.addr, align 8 %5 = load i64, ptr %src_tile_stride.addr, align 8 %6 = load ptr, ptr %src.addr, align 8 %add.ptr1 = getelementptr inbounds i8, ptr %6, i64 %5 store ptr %add.ptr1, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %7 = load i32, ptr %x, align 4 %add = add nsw i32 %7, 16 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !118 for.end: ; preds = %for.cond %8 = load i32, ptr %width.addr, align 4 %and = and i32 %8, 15 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %9 = load ptr, ptr %dst.addr, align 8 %10 = load ptr, ptr %src.addr, align 8 %11 = load i32, ptr %width.addr, align 4 %and2 = and i32 %11, 15 %conv = sext i32 %and2 to i64 %call3 = call ptr @memcpy.inline(ptr noundef %9, ptr noundef %10, i64 noundef %conv) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @DetileRow_16_C(ptr noundef %src, i64 noundef %src_tile_stride, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %src_tile_stride.addr = alloca i64, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store i64 %src_tile_stride, ptr %src_tile_stride.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 15 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %dst.addr, align 8 %3 = load ptr, ptr %src.addr, align 8 %call = call ptr @memcpy.inline(ptr noundef %2, ptr noundef %3, i64 noundef 32) #10 %4 = load ptr, ptr %dst.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %4, i64 16 store ptr %add.ptr, ptr %dst.addr, align 8 %5 = load i64, ptr %src_tile_stride.addr, align 8 %6 = load ptr, ptr %src.addr, align 8 %add.ptr1 = getelementptr inbounds i16, ptr %6, i64 %5 store ptr %add.ptr1, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %7 = load i32, ptr %x, align 4 %add = add nsw i32 %7, 16 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !119 for.end: ; preds = %for.cond %8 = load i32, ptr %width.addr, align 4 %and = and i32 %8, 15 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %9 = load ptr, ptr %dst.addr, align 8 %10 = load ptr, ptr %src.addr, align 8 %11 = load i32, ptr %width.addr, align 4 %and2 = and i32 %11, 15 %conv = sext i32 %and2 to i64 %mul = mul i64 %conv, 2 %call3 = call ptr @memcpy.inline(ptr noundef %9, ptr noundef %10, i64 noundef %mul) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @DetileSplitUVRow_C(ptr noundef %src_uv, i64 noundef %src_tile_stride, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %src_tile_stride.addr = alloca i64, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store i64 %src_tile_stride, ptr %src_tile_stride.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 15 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uv.addr, align 8 %3 = load ptr, ptr %dst_u.addr, align 8 %4 = load ptr, ptr %dst_v.addr, align 8 call void @SplitUVRow_C(ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef 8) %5 = load ptr, ptr %dst_u.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %5, i64 8 store ptr %add.ptr, ptr %dst_u.addr, align 8 %6 = load ptr, ptr %dst_v.addr, align 8 %add.ptr1 = getelementptr inbounds i8, ptr %6, i64 8 store ptr %add.ptr1, ptr %dst_v.addr, align 8 %7 = load i64, ptr %src_tile_stride.addr, align 8 %8 = load ptr, ptr %src_uv.addr, align 8 %add.ptr2 = getelementptr inbounds i8, ptr %8, i64 %7 store ptr %add.ptr2, ptr %src_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %9 = load i32, ptr %x, align 4 %add = add nsw i32 %9, 16 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !120 for.end: ; preds = %for.cond %10 = load i32, ptr %width.addr, align 4 %and = and i32 %10, 15 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %11 = load ptr, ptr %src_uv.addr, align 8 %12 = load ptr, ptr %dst_u.addr, align 8 %13 = load ptr, ptr %dst_v.addr, align 8 %14 = load i32, ptr %width.addr, align 4 %and3 = and i32 %14, 15 %add4 = add nsw i32 %and3, 1 %div = sdiv i32 %add4, 2 call void @SplitUVRow_C(ptr noundef %11, ptr noundef %12, ptr noundef %13, i32 noundef %div) br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @DetileToYUY2_C(ptr noundef %src_y, i64 noundef %src_y_tile_stride, ptr noundef %src_uv, i64 noundef %src_uv_tile_stride, ptr noundef %dst_yuy2, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_y_tile_stride.addr = alloca i64, align 8 %src_uv.addr = alloca ptr, align 8 %src_uv_tile_stride.addr = alloca i64, align 8 %dst_yuy2.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %cleanup.dest.slot = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store i64 %src_y_tile_stride, ptr %src_y_tile_stride.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store i64 %src_uv_tile_stride, ptr %src_uv_tile_stride.addr, align 8 store ptr %dst_yuy2, ptr %dst_yuy2.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc18, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 15 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond store i32 2, ptr %cleanup.dest.slot, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 br label %for.end19 for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 0, ptr %i, align 4 br label %for.cond1 for.cond1: ; preds = %for.inc, %for.body %2 = load i32, ptr %i, align 4 %cmp2 = icmp slt i32 %2, 8 br i1 %cmp2, label %for.body4, label %for.cond.cleanup3 for.cond.cleanup3: ; preds = %for.cond1 store i32 5, ptr %cleanup.dest.slot, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 br label %for.end for.body4: ; preds = %for.cond1 %3 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %3, i64 0 %4 = load i8, ptr %arrayidx, align 1 %5 = load ptr, ptr %dst_yuy2.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %5, i64 0 store i8 %4, ptr %arrayidx5, align 1 %6 = load ptr, ptr %src_uv.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx6, align 1 %8 = load ptr, ptr %dst_yuy2.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %8, i64 1 store i8 %7, ptr %arrayidx7, align 1 %9 = load ptr, ptr %src_y.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %9, i64 1 %10 = load i8, ptr %arrayidx8, align 1 %11 = load ptr, ptr %dst_yuy2.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %11, i64 2 store i8 %10, ptr %arrayidx9, align 1 %12 = load ptr, ptr %src_uv.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx10, align 1 %14 = load ptr, ptr %dst_yuy2.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx11, align 1 %15 = load ptr, ptr %dst_yuy2.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr, ptr %dst_yuy2.addr, align 8 %16 = load ptr, ptr %src_y.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %16, i64 2 store ptr %add.ptr12, ptr %src_y.addr, align 8 %17 = load ptr, ptr %src_uv.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %17, i64 2 store ptr %add.ptr13, ptr %src_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body4 %18 = load i32, ptr %i, align 4 %inc = add nsw i32 %18, 1 store i32 %inc, ptr %i, align 4 br label %for.cond1, !llvm.loop !121 for.end: ; preds = %for.cond.cleanup3 %19 = load i64, ptr %src_y_tile_stride.addr, align 8 %sub14 = sub nsw i64 %19, 16 %20 = load ptr, ptr %src_y.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %20, i64 %sub14 store ptr %add.ptr15, ptr %src_y.addr, align 8 %21 = load i64, ptr %src_uv_tile_stride.addr, align 8 %sub16 = sub nsw i64 %21, 16 %22 = load ptr, ptr %src_uv.addr, align 8 %add.ptr17 = getelementptr inbounds i8, ptr %22, i64 %sub16 store ptr %add.ptr17, ptr %src_uv.addr, align 8 br label %for.inc18 for.inc18: ; preds = %for.end %23 = load i32, ptr %x, align 4 %add = add nsw i32 %23, 16 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !122 for.end19: ; preds = %for.cond.cleanup ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @UnpackMT2T_C(ptr noundef %src, ptr noundef %dst, i64 noundef %size) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %size.addr = alloca i64, align 8 %i = alloca i64, align 8 %cleanup.dest.slot = alloca i32, align 4 %src_lower_bits = alloca ptr, align 8 %src_upper_bits = alloca ptr, align 8 %j = alloca i32, align 4 %k = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i64 %size, ptr %size.addr, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %i) #10 store i64 0, ptr %i, align 8 br label %for.cond for.cond: ; preds = %for.inc22, %entry %0 = load i64, ptr %i, align 8 %1 = load i64, ptr %size.addr, align 8 %cmp = icmp ult i64 %0, %1 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond store i32 2, ptr %cleanup.dest.slot, align 4 call void @llvm.lifetime.end.p0(i64 8, ptr %i) #10 br label %for.end23 for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 8, ptr %src_lower_bits) #10 %2 = load ptr, ptr %src.addr, align 8 store ptr %2, ptr %src_lower_bits, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %src_upper_bits) #10 %3 = load ptr, ptr %src.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %3, i64 16 store ptr %add.ptr, ptr %src_upper_bits, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %j) #10 store i32 0, ptr %j, align 4 br label %for.cond1 for.cond1: ; preds = %for.inc18, %for.body %4 = load i32, ptr %j, align 4 %cmp2 = icmp slt i32 %4, 4 br i1 %cmp2, label %for.body4, label %for.cond.cleanup3 for.cond.cleanup3: ; preds = %for.cond1 store i32 5, ptr %cleanup.dest.slot, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %j) #10 br label %for.end20 for.body4: ; preds = %for.cond1 call void @llvm.lifetime.start.p0(i64 4, ptr %k) #10 store i32 0, ptr %k, align 4 br label %for.cond5 for.cond5: ; preds = %for.inc, %for.body4 %5 = load i32, ptr %k, align 4 %cmp6 = icmp slt i32 %5, 16 br i1 %cmp6, label %for.body8, label %for.cond.cleanup7 for.cond.cleanup7: ; preds = %for.cond5 store i32 8, ptr %cleanup.dest.slot, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %k) #10 br label %for.end for.body8: ; preds = %for.cond5 %6 = load ptr, ptr %src_lower_bits, align 8 %7 = load i32, ptr %k, align 4 %idxprom = sext i32 %7 to i64 %arrayidx = getelementptr inbounds i8, ptr %6, i64 %idxprom %8 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %8 to i32 %9 = load i32, ptr %j, align 4 %mul = mul nsw i32 %9, 2 %shr = ashr i32 %conv, %mul %and = and i32 %shr, 3 %shl = shl i32 %and, 6 %10 = load ptr, ptr %src_upper_bits, align 8 %11 = load i8, ptr %10, align 1 %conv9 = zext i8 %11 to i16 %conv10 = zext i16 %conv9 to i32 %shl11 = shl i32 %conv10, 8 %or = or i32 %shl, %shl11 %12 = load ptr, ptr %src_upper_bits, align 8 %13 = load i8, ptr %12, align 1 %conv12 = zext i8 %13 to i16 %conv13 = zext i16 %conv12 to i32 %shr14 = ashr i32 %conv13, 2 %or15 = or i32 %or, %shr14 %conv16 = trunc i32 %or15 to i16 %14 = load ptr, ptr %dst.addr, align 8 %incdec.ptr = getelementptr inbounds nuw i16, ptr %14, i32 1 store ptr %incdec.ptr, ptr %dst.addr, align 8 store i16 %conv16, ptr %14, align 2 %15 = load ptr, ptr %src_upper_bits, align 8 %incdec.ptr17 = getelementptr inbounds nuw i8, ptr %15, i32 1 store ptr %incdec.ptr17, ptr %src_upper_bits, align 8 br label %for.inc for.inc: ; preds = %for.body8 %16 = load i32, ptr %k, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %k, align 4 br label %for.cond5, !llvm.loop !123 for.end: ; preds = %for.cond.cleanup7 br label %for.inc18 for.inc18: ; preds = %for.end %17 = load i32, ptr %j, align 4 %inc19 = add nsw i32 %17, 1 store i32 %inc19, ptr %j, align 4 br label %for.cond1, !llvm.loop !124 for.end20: ; preds = %for.cond.cleanup3 %18 = load ptr, ptr %src.addr, align 8 %add.ptr21 = getelementptr inbounds i8, ptr %18, i64 80 store ptr %add.ptr21, ptr %src.addr, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr %src_upper_bits) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_lower_bits) #10 br label %for.inc22 for.inc22: ; preds = %for.end20 %19 = load i64, ptr %i, align 8 %add = add i64 %19, 80 store i64 %add, ptr %i, align 8 br label %for.cond, !llvm.loop !125 for.end23: ; preds = %for.cond.cleanup ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SplitRGBRow_C(ptr noundef %src_rgb, ptr noundef %dst_r, ptr noundef %dst_g, ptr noundef %dst_b, i32 noundef %width) #0 { entry: %src_rgb.addr = alloca ptr, align 8 %dst_r.addr = alloca ptr, align 8 %dst_g.addr = alloca ptr, align 8 %dst_b.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_rgb, ptr %src_rgb.addr, align 8 store ptr %dst_r, ptr %dst_r.addr, align 8 store ptr %dst_g, ptr %dst_g.addr, align 8 store ptr %dst_b, ptr %dst_b.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_r.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %dst_g.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %9 to i64 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 %idxprom3 store i8 %7, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_rgb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load i8, ptr %arrayidx5, align 1 %12 = load ptr, ptr %dst_b.addr, align 8 %13 = load i32, ptr %x, align 4 %idxprom6 = sext i32 %13 to i64 %arrayidx7 = getelementptr inbounds i8, ptr %12, i64 %idxprom6 store i8 %11, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 3 store ptr %add.ptr, ptr %src_rgb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %15 = load i32, ptr %x, align 4 %inc = add nsw i32 %15, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !126 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeRGBRow_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %dst_rgb, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %dst_rgb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %dst_rgb, ptr %dst_rgb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_r.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %5 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 0 store i8 %4, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_g.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 %idxprom2 %8 = load i8, ptr %arrayidx3, align 1 %9 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %9, i64 1 store i8 %8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_b.addr, align 8 %11 = load i32, ptr %x, align 4 %idxprom5 = sext i32 %11 to i64 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 %idxprom5 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_rgb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %dst_rgb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 3 store ptr %add.ptr, ptr %dst_rgb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %15 = load i32, ptr %x, align 4 %inc = add nsw i32 %15, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !127 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SplitARGBRow_C(ptr noundef %src_argb, ptr noundef %dst_r, ptr noundef %dst_g, ptr noundef %dst_b, ptr noundef %dst_a, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_r.addr = alloca ptr, align 8 %dst_g.addr = alloca ptr, align 8 %dst_b.addr = alloca ptr, align 8 %dst_a.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_r, ptr %dst_r.addr, align 8 store ptr %dst_g, ptr %dst_g.addr, align 8 store ptr %dst_b, ptr %dst_b.addr, align 8 store ptr %dst_a, ptr %dst_a.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_b.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %dst_g.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %9 to i64 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 %idxprom3 store i8 %7, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load i8, ptr %arrayidx5, align 1 %12 = load ptr, ptr %dst_r.addr, align 8 %13 = load i32, ptr %x, align 4 %idxprom6 = sext i32 %13 to i64 %arrayidx7 = getelementptr inbounds i8, ptr %12, i64 %idxprom6 store i8 %11, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_argb.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %14, i64 3 %15 = load i8, ptr %arrayidx8, align 1 %16 = load ptr, ptr %dst_a.addr, align 8 %17 = load i32, ptr %x, align 4 %idxprom9 = sext i32 %17 to i64 %arrayidx10 = getelementptr inbounds i8, ptr %16, i64 %idxprom9 store i8 %15, ptr %arrayidx10, align 1 %18 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %19 = load i32, ptr %x, align 4 %inc = add nsw i32 %19, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !128 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeARGBRow_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %src_a, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_b.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %5 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 0 store i8 %4, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_g.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 %idxprom2 %8 = load i8, ptr %arrayidx3, align 1 %9 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %9, i64 1 store i8 %8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_r.addr, align 8 %11 = load i32, ptr %x, align 4 %idxprom5 = sext i32 %11 to i64 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 %idxprom5 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_a.addr, align 8 %15 = load i32, ptr %x, align 4 %idxprom8 = sext i32 %15 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %14, i64 %idxprom8 %16 = load i8, ptr %arrayidx9, align 1 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %17, i64 3 store i8 %16, ptr %arrayidx10, align 1 %18 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %18, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %19 = load i32, ptr %x, align 4 %inc = add nsw i32 %19, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !129 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeXR30Row_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %dst_ar30, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %dst_ar30.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %shift = alloca i32, align 4 %dst_ar30_32 = alloca ptr, align 8 %r = alloca i32, align 4 %g = alloca i32, align 4 %b = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %dst_ar30, ptr %dst_ar30.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 %0, 10 store i32 %sub, ptr %shift, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %dst_ar30_32) #10 %1 = load ptr, ptr %dst_ar30.addr, align 8 store ptr %1, ptr %dst_ar30_32, align 8 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %2, %3 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %4 = load ptr, ptr %src_r.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx = getelementptr inbounds i16, ptr %4, i64 %idxprom %6 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %6 to i32 %7 = load i32, ptr %shift, align 4 %shr = ashr i32 %conv, %7 %call = call noundef i32 @_ZN6libyuvL9clamp1023Ei(i32 noundef %shr) store i32 %call, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %8 = load ptr, ptr %src_g.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom1 = sext i32 %9 to i64 %arrayidx2 = getelementptr inbounds i16, ptr %8, i64 %idxprom1 %10 = load i16, ptr %arrayidx2, align 2 %conv3 = zext i16 %10 to i32 %11 = load i32, ptr %shift, align 4 %shr4 = ashr i32 %conv3, %11 %call5 = call noundef i32 @_ZN6libyuvL9clamp1023Ei(i32 noundef %shr4) store i32 %call5, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %12 = load ptr, ptr %src_b.addr, align 8 %13 = load i32, ptr %x, align 4 %idxprom6 = sext i32 %13 to i64 %arrayidx7 = getelementptr inbounds i16, ptr %12, i64 %idxprom6 %14 = load i16, ptr %arrayidx7, align 2 %conv8 = zext i16 %14 to i32 %15 = load i32, ptr %shift, align 4 %shr9 = ashr i32 %conv8, %15 %call10 = call noundef i32 @_ZN6libyuvL9clamp1023Ei(i32 noundef %shr9) store i32 %call10, ptr %b, align 4 %16 = load i32, ptr %b, align 4 %17 = load i32, ptr %g, align 4 %shl = shl i32 %17, 10 %or = or i32 %16, %shl %18 = load i32, ptr %r, align 4 %shl11 = shl i32 %18, 20 %or12 = or i32 %or, %shl11 %or13 = or i32 %or12, -1073741824 %19 = load ptr, ptr %dst_ar30_32, align 8 %20 = load i32, ptr %x, align 4 %idxprom14 = sext i32 %20 to i64 %arrayidx15 = getelementptr inbounds i32, ptr %19, i64 %idxprom14 store i32 %or13, ptr %arrayidx15, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 br label %for.inc for.inc: ; preds = %for.body %21 = load i32, ptr %x, align 4 %inc = add nsw i32 %21, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !130 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 8, ptr %dst_ar30_32) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL9clamp1023Ei(i32 noundef %v) #4 { entry: %v.addr = alloca i32, align 4 store i32 %v, ptr %v.addr, align 4 %0 = load i32, ptr %v.addr, align 4 %cmp = icmp sge i32 %0, 1023 %conv = zext i1 %cmp to i32 %sub = sub nsw i32 0, %conv %1 = load i32, ptr %v.addr, align 4 %or = or i32 %sub, %1 %and = and i32 %or, 1023 ret i32 %and } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeAR64Row_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %src_a, ptr noundef %dst_ar64, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %dst_ar64.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %shift = alloca i32, align 4 %max = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %dst_ar64, ptr %dst_ar64.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 16, %0 store i32 %sub, ptr %shift, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %max) #10 %1 = load i32, ptr %depth.addr, align 4 %shl = shl i32 1, %1 %sub1 = sub nsw i32 %shl, 1 store i32 %sub1, ptr %max, align 4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %2, %3 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = load ptr, ptr %src_b.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx = getelementptr inbounds i16, ptr %4, i64 %idxprom %6 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %6 to i32 %7 = load i32, ptr %max, align 4 %call = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv, i32 noundef %7) %8 = load i32, ptr %shift, align 4 %shl2 = shl i32 %call, %8 %conv3 = trunc i32 %shl2 to i16 %9 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx4 = getelementptr inbounds i16, ptr %9, i64 0 store i16 %conv3, ptr %arrayidx4, align 2 %10 = load ptr, ptr %src_g.addr, align 8 %11 = load i32, ptr %x, align 4 %idxprom5 = sext i32 %11 to i64 %arrayidx6 = getelementptr inbounds i16, ptr %10, i64 %idxprom5 %12 = load i16, ptr %arrayidx6, align 2 %conv7 = zext i16 %12 to i32 %13 = load i32, ptr %max, align 4 %call8 = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv7, i32 noundef %13) %14 = load i32, ptr %shift, align 4 %shl9 = shl i32 %call8, %14 %conv10 = trunc i32 %shl9 to i16 %15 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx11 = getelementptr inbounds i16, ptr %15, i64 1 store i16 %conv10, ptr %arrayidx11, align 2 %16 = load ptr, ptr %src_r.addr, align 8 %17 = load i32, ptr %x, align 4 %idxprom12 = sext i32 %17 to i64 %arrayidx13 = getelementptr inbounds i16, ptr %16, i64 %idxprom12 %18 = load i16, ptr %arrayidx13, align 2 %conv14 = zext i16 %18 to i32 %19 = load i32, ptr %max, align 4 %call15 = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv14, i32 noundef %19) %20 = load i32, ptr %shift, align 4 %shl16 = shl i32 %call15, %20 %conv17 = trunc i32 %shl16 to i16 %21 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx18 = getelementptr inbounds i16, ptr %21, i64 2 store i16 %conv17, ptr %arrayidx18, align 2 %22 = load ptr, ptr %src_a.addr, align 8 %23 = load i32, ptr %x, align 4 %idxprom19 = sext i32 %23 to i64 %arrayidx20 = getelementptr inbounds i16, ptr %22, i64 %idxprom19 %24 = load i16, ptr %arrayidx20, align 2 %conv21 = zext i16 %24 to i32 %25 = load i32, ptr %max, align 4 %call22 = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv21, i32 noundef %25) %26 = load i32, ptr %shift, align 4 %shl23 = shl i32 %call22, %26 %conv24 = trunc i32 %shl23 to i16 %27 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx25 = getelementptr inbounds i16, ptr %27, i64 3 store i16 %conv24, ptr %arrayidx25, align 2 %28 = load ptr, ptr %dst_ar64.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %28, i64 4 store ptr %add.ptr, ptr %dst_ar64.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %29 = load i32, ptr %x, align 4 %inc = add nsw i32 %29, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !131 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %max) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %v, i32 noundef %max) #4 { entry: %v.addr = alloca i32, align 4 %max.addr = alloca i32, align 4 store i32 %v, ptr %v.addr, align 4 store i32 %max, ptr %max.addr, align 4 %0 = load i32, ptr %v.addr, align 4 %1 = load i32, ptr %max.addr, align 4 %cmp = icmp sge i32 %0, %1 %conv = zext i1 %cmp to i32 %sub = sub nsw i32 0, %conv %2 = load i32, ptr %v.addr, align 4 %or = or i32 %sub, %2 %3 = load i32, ptr %max.addr, align 4 %and = and i32 %or, %3 ret i32 %and } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeARGB16To8Row_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %src_a, ptr noundef %dst_argb, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %src_a.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %shift = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %src_a, ptr %src_a.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 %0, 8 store i32 %sub, ptr %shift, align 4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %x, align 4 %2 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %src_b.addr, align 8 %4 = load i32, ptr %x, align 4 %idxprom = sext i32 %4 to i64 %arrayidx = getelementptr inbounds i16, ptr %3, i64 %idxprom %5 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %5 to i32 %6 = load i32, ptr %shift, align 4 %shr = ashr i32 %conv, %6 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv1 = trunc i32 %call to i8 %7 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %conv1, ptr %arrayidx2, align 1 %8 = load ptr, ptr %src_g.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %9 to i64 %arrayidx4 = getelementptr inbounds i16, ptr %8, i64 %idxprom3 %10 = load i16, ptr %arrayidx4, align 2 %conv5 = zext i16 %10 to i32 %11 = load i32, ptr %shift, align 4 %shr6 = ashr i32 %conv5, %11 %call7 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr6) %conv8 = trunc i32 %call7 to i8 %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %12, i64 1 store i8 %conv8, ptr %arrayidx9, align 1 %13 = load ptr, ptr %src_r.addr, align 8 %14 = load i32, ptr %x, align 4 %idxprom10 = sext i32 %14 to i64 %arrayidx11 = getelementptr inbounds i16, ptr %13, i64 %idxprom10 %15 = load i16, ptr %arrayidx11, align 2 %conv12 = zext i16 %15 to i32 %16 = load i32, ptr %shift, align 4 %shr13 = ashr i32 %conv12, %16 %call14 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr13) %conv15 = trunc i32 %call14 to i8 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %17, i64 2 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load ptr, ptr %src_a.addr, align 8 %19 = load i32, ptr %x, align 4 %idxprom17 = sext i32 %19 to i64 %arrayidx18 = getelementptr inbounds i16, ptr %18, i64 %idxprom17 %20 = load i16, ptr %arrayidx18, align 2 %conv19 = zext i16 %20 to i32 %21 = load i32, ptr %shift, align 4 %shr20 = ashr i32 %conv19, %21 %call21 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr20) %conv22 = trunc i32 %call21 to i8 %22 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %22, i64 3 store i8 %conv22, ptr %arrayidx23, align 1 %23 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %23, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %24 = load i32, ptr %x, align 4 %inc = add nsw i32 %24, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !132 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeXR64Row_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %dst_ar64, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %dst_ar64.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %shift = alloca i32, align 4 %max = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %dst_ar64, ptr %dst_ar64.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 16, %0 store i32 %sub, ptr %shift, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %max) #10 %1 = load i32, ptr %depth.addr, align 4 %shl = shl i32 1, %1 %sub1 = sub nsw i32 %shl, 1 store i32 %sub1, ptr %max, align 4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i32, ptr %x, align 4 %3 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %2, %3 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = load ptr, ptr %src_b.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx = getelementptr inbounds i16, ptr %4, i64 %idxprom %6 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %6 to i32 %7 = load i32, ptr %max, align 4 %call = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv, i32 noundef %7) %8 = load i32, ptr %shift, align 4 %shl2 = shl i32 %call, %8 %conv3 = trunc i32 %shl2 to i16 %9 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx4 = getelementptr inbounds i16, ptr %9, i64 0 store i16 %conv3, ptr %arrayidx4, align 2 %10 = load ptr, ptr %src_g.addr, align 8 %11 = load i32, ptr %x, align 4 %idxprom5 = sext i32 %11 to i64 %arrayidx6 = getelementptr inbounds i16, ptr %10, i64 %idxprom5 %12 = load i16, ptr %arrayidx6, align 2 %conv7 = zext i16 %12 to i32 %13 = load i32, ptr %max, align 4 %call8 = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv7, i32 noundef %13) %14 = load i32, ptr %shift, align 4 %shl9 = shl i32 %call8, %14 %conv10 = trunc i32 %shl9 to i16 %15 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx11 = getelementptr inbounds i16, ptr %15, i64 1 store i16 %conv10, ptr %arrayidx11, align 2 %16 = load ptr, ptr %src_r.addr, align 8 %17 = load i32, ptr %x, align 4 %idxprom12 = sext i32 %17 to i64 %arrayidx13 = getelementptr inbounds i16, ptr %16, i64 %idxprom12 %18 = load i16, ptr %arrayidx13, align 2 %conv14 = zext i16 %18 to i32 %19 = load i32, ptr %max, align 4 %call15 = call noundef i32 @_ZN6libyuvL8ClampMaxEii(i32 noundef %conv14, i32 noundef %19) %20 = load i32, ptr %shift, align 4 %shl16 = shl i32 %call15, %20 %conv17 = trunc i32 %shl16 to i16 %21 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx18 = getelementptr inbounds i16, ptr %21, i64 2 store i16 %conv17, ptr %arrayidx18, align 2 %22 = load ptr, ptr %dst_ar64.addr, align 8 %arrayidx19 = getelementptr inbounds i16, ptr %22, i64 3 store i16 -1, ptr %arrayidx19, align 2 %23 = load ptr, ptr %dst_ar64.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %23, i64 4 store ptr %add.ptr, ptr %dst_ar64.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %24 = load i32, ptr %x, align 4 %inc = add nsw i32 %24, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !133 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %max) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeXRGB16To8Row_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %dst_argb, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %shift = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 %0, 8 store i32 %sub, ptr %shift, align 4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %x, align 4 %2 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %src_b.addr, align 8 %4 = load i32, ptr %x, align 4 %idxprom = sext i32 %4 to i64 %arrayidx = getelementptr inbounds i16, ptr %3, i64 %idxprom %5 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %5 to i32 %6 = load i32, ptr %shift, align 4 %shr = ashr i32 %conv, %6 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv1 = trunc i32 %call to i8 %7 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %conv1, ptr %arrayidx2, align 1 %8 = load ptr, ptr %src_g.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %9 to i64 %arrayidx4 = getelementptr inbounds i16, ptr %8, i64 %idxprom3 %10 = load i16, ptr %arrayidx4, align 2 %conv5 = zext i16 %10 to i32 %11 = load i32, ptr %shift, align 4 %shr6 = ashr i32 %conv5, %11 %call7 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr6) %conv8 = trunc i32 %call7 to i8 %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %12, i64 1 store i8 %conv8, ptr %arrayidx9, align 1 %13 = load ptr, ptr %src_r.addr, align 8 %14 = load i32, ptr %x, align 4 %idxprom10 = sext i32 %14 to i64 %arrayidx11 = getelementptr inbounds i16, ptr %13, i64 %idxprom10 %15 = load i16, ptr %arrayidx11, align 2 %conv12 = zext i16 %15 to i32 %16 = load i32, ptr %shift, align 4 %shr13 = ashr i32 %conv12, %16 %call14 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr13) %conv15 = trunc i32 %call14 to i8 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %17, i64 2 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %18, i64 3 store i8 -1, ptr %arrayidx17, align 1 %19 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %19, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %20 = load i32, ptr %x, align 4 %inc = add nsw i32 %20, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !134 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SplitXRGBRow_C(ptr noundef %src_argb, ptr noundef %dst_r, ptr noundef %dst_g, ptr noundef %dst_b, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_r.addr = alloca ptr, align 8 %dst_g.addr = alloca ptr, align 8 %dst_b.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_r, ptr %dst_r.addr, align 8 store ptr %dst_g, ptr %dst_g.addr, align 8 store ptr %dst_b, ptr %dst_b.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_b.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 1 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %dst_g.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %9 to i64 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 %idxprom3 store i8 %7, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 2 %11 = load i8, ptr %arrayidx5, align 1 %12 = load ptr, ptr %dst_r.addr, align 8 %13 = load i32, ptr %x, align 4 %idxprom6 = sext i32 %13 to i64 %arrayidx7 = getelementptr inbounds i8, ptr %12, i64 %idxprom6 store i8 %11, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %15 = load i32, ptr %x, align 4 %inc = add nsw i32 %15, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !135 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeXRGBRow_C(ptr noundef %src_r, ptr noundef %src_g, ptr noundef %src_b, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_r.addr = alloca ptr, align 8 %src_g.addr = alloca ptr, align 8 %src_b.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_r, ptr %src_r.addr, align 8 store ptr %src_g, ptr %src_g.addr, align 8 store ptr %src_b, ptr %src_b.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_b.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %5 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 0 store i8 %4, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_g.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 %idxprom2 %8 = load i8, ptr %arrayidx3, align 1 %9 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %9, i64 1 store i8 %8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_r.addr, align 8 %11 = load i32, ptr %x, align 4 %idxprom5 = sext i32 %11 to i64 %arrayidx6 = getelementptr inbounds i8, ptr %10, i64 %idxprom5 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 2 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %14, i64 3 store i8 -1, ptr %arrayidx8, align 1 %15 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %15, i64 4 store ptr %add.ptr, ptr %dst_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %inc = add nsw i32 %16, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !136 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MergeUVRow_16_C(ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_uv, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_uv.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %shift = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 16, %0 store i32 %sub, ptr %shift, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %x, align 4 %2 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %src_u.addr, align 8 %4 = load i32, ptr %x, align 4 %idxprom = sext i32 %4 to i64 %arrayidx = getelementptr inbounds i16, ptr %3, i64 %idxprom %5 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %5 to i32 %6 = load i32, ptr %shift, align 4 %shl = shl i32 %conv, %6 %conv1 = trunc i32 %shl to i16 %7 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx2 = getelementptr inbounds i16, ptr %7, i64 0 store i16 %conv1, ptr %arrayidx2, align 2 %8 = load ptr, ptr %src_v.addr, align 8 %9 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %9 to i64 %arrayidx4 = getelementptr inbounds i16, ptr %8, i64 %idxprom3 %10 = load i16, ptr %arrayidx4, align 2 %conv5 = zext i16 %10 to i32 %11 = load i32, ptr %shift, align 4 %shl6 = shl i32 %conv5, %11 %conv7 = trunc i32 %shl6 to i16 %12 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx8 = getelementptr inbounds i16, ptr %12, i64 1 store i16 %conv7, ptr %arrayidx8, align 2 %13 = load ptr, ptr %dst_uv.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %13, i64 2 store ptr %add.ptr, ptr %dst_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %14 = load i32, ptr %x, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !137 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SplitUVRow_16_C(ptr noundef %src_uv, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %depth, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %depth.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %shift = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %depth, ptr %depth.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %shift) #10 %0 = load i32, ptr %depth.addr, align 4 %sub = sub nsw i32 16, %0 store i32 %sub, ptr %shift, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %x, align 4 %2 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %src_uv.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %3, i64 0 %4 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %4 to i32 %5 = load i32, ptr %shift, align 4 %shr = ashr i32 %conv, %5 %conv1 = trunc i32 %shr to i16 %6 = load ptr, ptr %dst_u.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom = sext i32 %7 to i64 %arrayidx2 = getelementptr inbounds i16, ptr %6, i64 %idxprom store i16 %conv1, ptr %arrayidx2, align 2 %8 = load ptr, ptr %src_uv.addr, align 8 %arrayidx3 = getelementptr inbounds i16, ptr %8, i64 1 %9 = load i16, ptr %arrayidx3, align 2 %conv4 = zext i16 %9 to i32 %10 = load i32, ptr %shift, align 4 %shr5 = ashr i32 %conv4, %10 %conv6 = trunc i32 %shr5 to i16 %11 = load ptr, ptr %dst_v.addr, align 8 %12 = load i32, ptr %x, align 4 %idxprom7 = sext i32 %12 to i64 %arrayidx8 = getelementptr inbounds i16, ptr %11, i64 %idxprom7 store i16 %conv6, ptr %arrayidx8, align 2 %13 = load ptr, ptr %src_uv.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %13, i64 2 store ptr %add.ptr, ptr %src_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %14 = load i32, ptr %x, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !138 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %shift) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @MultiplyRow_16_C(ptr noundef %src_y, ptr noundef %dst_y, i32 noundef %scale, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i16, ptr %2, i64 %idxprom %4 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %4 to i32 %5 = load i32, ptr %scale.addr, align 4 %mul = mul nsw i32 %conv, %5 %conv1 = trunc i32 %mul to i16 %6 = load ptr, ptr %dst_y.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i16, ptr %6, i64 %idxprom2 store i16 %conv1, ptr %arrayidx3, align 2 br label %for.inc for.inc: ; preds = %for.body %8 = load i32, ptr %x, align 4 %inc = add nsw i32 %8, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !139 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @DivideRow_16_C(ptr noundef %src_y, ptr noundef %dst_y, i32 noundef %scale, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i16, ptr %2, i64 %idxprom %4 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %4 to i32 %5 = load i32, ptr %scale.addr, align 4 %mul = mul nsw i32 %conv, %5 %shr = ashr i32 %mul, 16 %conv1 = trunc i32 %shr to i16 %6 = load ptr, ptr %dst_y.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i16, ptr %6, i64 %idxprom2 store i16 %conv1, ptr %arrayidx3, align 2 br label %for.inc for.inc: ; preds = %for.body %8 = load i32, ptr %x, align 4 %inc = add nsw i32 %8, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !140 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @Convert16To8Row_C(ptr noundef %src_y, ptr noundef %dst_y, i32 noundef %scale, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i16, ptr %2, i64 %idxprom %4 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %4 to i32 %5 = load i32, ptr %scale.addr, align 4 %mul = mul nsw i32 %conv, %5 %shr = ashr i32 %mul, 16 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv1 = trunc i32 %call to i8 %6 = load ptr, ptr %dst_y.addr, align 8 %7 = load i32, ptr %x, align 4 %idxprom2 = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 %idxprom2 store i8 %conv1, ptr %arrayidx3, align 1 br label %for.inc for.inc: ; preds = %for.body %8 = load i32, ptr %x, align 4 %inc = add nsw i32 %8, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !141 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @Convert8To16Row_C(ptr noundef %src_y, ptr noundef %dst_y, i32 noundef %scale, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %0 = load i32, ptr %scale.addr, align 4 %mul = mul nsw i32 %0, 257 store i32 %mul, ptr %scale.addr, align 4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %x, align 4 %2 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %src_y.addr, align 8 %4 = load i32, ptr %x, align 4 %idxprom = sext i32 %4 to i64 %arrayidx = getelementptr inbounds i8, ptr %3, i64 %idxprom %5 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %5 to i32 %6 = load i32, ptr %scale.addr, align 4 %mul1 = mul nsw i32 %conv, %6 %shr = ashr i32 %mul1, 16 %conv2 = trunc i32 %shr to i16 %7 = load ptr, ptr %dst_y.addr, align 8 %8 = load i32, ptr %x, align 4 %idxprom3 = sext i32 %8 to i64 %arrayidx4 = getelementptr inbounds i16, ptr %7, i64 %idxprom3 store i16 %conv2, ptr %arrayidx4, align 2 br label %for.inc for.inc: ; preds = %for.body %9 = load i32, ptr %x, align 4 %inc = add nsw i32 %9, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !142 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @CopyRow_C(ptr noundef %src, ptr noundef %dst, i32 noundef %count) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %count.addr = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %count, ptr %count.addr, align 4 %0 = load ptr, ptr %dst.addr, align 8 %1 = load ptr, ptr %src.addr, align 8 %2 = load i32, ptr %count.addr, align 4 %conv = sext i32 %2 to i64 %call = call ptr @memcpy.inline(ptr noundef %0, ptr noundef %1, i64 noundef %conv) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @CopyRow_16_C(ptr noundef %src, ptr noundef %dst, i32 noundef %count) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %count.addr = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %count, ptr %count.addr, align 4 %0 = load ptr, ptr %dst.addr, align 8 %1 = load ptr, ptr %src.addr, align 8 %2 = load i32, ptr %count.addr, align 4 %mul = mul nsw i32 %2, 2 %conv = sext i32 %mul to i64 %call = call ptr @memcpy.inline(ptr noundef %0, ptr noundef %1, i64 noundef %conv) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SetRow_C(ptr noundef %dst, i8 noundef zeroext %v8, i32 noundef %width) #0 { entry: %dst.addr = alloca ptr, align 8 %v8.addr = alloca i8, align 1 %width.addr = alloca i32, align 4 store ptr %dst, ptr %dst.addr, align 8 store i8 %v8, ptr %v8.addr, align 1 store i32 %width, ptr %width.addr, align 4 %0 = load ptr, ptr %dst.addr, align 8 %1 = load i8, ptr %v8.addr, align 1 %conv = zext i8 %1 to i32 %2 = load i32, ptr %width.addr, align 4 %conv1 = sext i32 %2 to i64 %call = call ptr @memset.inline(ptr noundef %0, i32 noundef %conv, i64 noundef %conv1) #10 ret void } ; Function Attrs: alwaysinline nobuiltin nounwind null_pointer_is_valid ssp uwtable declare ptr @memset(ptr noundef, i32 noundef, i64 noundef) #2 ; Function Attrs: alwaysinline mustprogress nounwind define internal ptr @memset.inline(ptr %__dest, i32 %__ch, i64 %__len) #3 { entry: %retval = alloca ptr, align 8 %__dest.addr = alloca ptr, align 8 %__ch.addr = alloca i32, align 4 %__len.addr = alloca i64, align 8 store ptr %__dest, ptr %__dest.addr, align 8 store i32 %__ch, ptr %__ch.addr, align 4 store i64 %__len, ptr %__len.addr, align 8 %0 = load i64, ptr %__len.addr, align 8 %1 = call i1 @llvm.is.constant.i64(i64 %0) br i1 %1, label %land.lhs.true, label %if.end land.lhs.true: ; preds = %entry %2 = load i64, ptr %__len.addr, align 8 %cmp = icmp eq i64 %2, 0 br i1 %cmp, label %land.lhs.true1, label %if.end land.lhs.true1: ; preds = %land.lhs.true %3 = load i32, ptr %__ch.addr, align 4 %4 = call i1 @llvm.is.constant.i32(i32 %3) br i1 %4, label %lor.lhs.false, label %if.then lor.lhs.false: ; preds = %land.lhs.true1 %5 = load i32, ptr %__ch.addr, align 4 %cmp2 = icmp ne i32 %5, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %land.lhs.true1 %6 = load ptr, ptr %__dest.addr, align 8 store ptr %6, ptr %retval, align 8 br label %return if.end: ; preds = %lor.lhs.false, %land.lhs.true, %entry %7 = load ptr, ptr %__dest.addr, align 8 %8 = load i32, ptr %__ch.addr, align 4 %9 = load i64, ptr %__len.addr, align 8 %10 = load ptr, ptr %__dest.addr, align 8 %11 = call i64 @llvm.objectsize.i64.p0(ptr %10, i1 false, i1 true, i1 false) %call = call ptr @__memset_chk(ptr noundef %7, i32 noundef %8, i64 noundef %9, i64 noundef %11) #10 store ptr %call, ptr %retval, align 8 br label %return return: ; preds = %if.end, %if.then %12 = load ptr, ptr %retval, align 8 ret ptr %12 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBSetRow_C(ptr noundef %dst_argb, i32 noundef %v32, i32 noundef %width) #0 { entry: %dst_argb.addr = alloca ptr, align 8 %v32.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %v32, ptr %v32.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %dst_argb.addr, align 8 %3 = load i32, ptr %x, align 4 %conv = sext i32 %3 to i64 %mul = mul i64 %conv, 4 %add.ptr = getelementptr inbounds nuw i8, ptr %2, i64 %mul %call = call ptr @memcpy.inline(ptr noundef %add.ptr, ptr noundef %v32.addr, i64 noundef 4) #10 br label %for.inc for.inc: ; preds = %for.body %4 = load i32, ptr %x, align 4 %inc = add nsw i32 %4, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !143 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @YUY2ToUVRow_C(ptr noundef %src_yuy2, i32 noundef %src_stride_yuy2, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_yuy2.addr = alloca ptr, align 8 %src_stride_yuy2.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_yuy2, ptr %src_yuy2.addr, align 8 store i32 %src_stride_yuy2, ptr %src_stride_yuy2.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src_yuy2.addr, align 8 %5 = load i32, ptr %src_stride_yuy2.addr, align 4 %add = add nsw i32 %5, 1 %idxprom = sext i32 %add to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom %6 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %6 to i32 %add3 = add nsw i32 %conv, %conv2 %add4 = add nsw i32 %add3, 1 %shr = ashr i32 %add4, 1 %conv5 = trunc i32 %shr to i8 %7 = load ptr, ptr %dst_u.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %conv5, ptr %arrayidx6, align 1 %8 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %9 to i32 %10 = load ptr, ptr %src_yuy2.addr, align 8 %11 = load i32, ptr %src_stride_yuy2.addr, align 4 %add9 = add nsw i32 %11, 3 %idxprom10 = sext i32 %add9 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %10, i64 %idxprom10 %12 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %12 to i32 %add13 = add nsw i32 %conv8, %conv12 %add14 = add nsw i32 %add13, 1 %shr15 = ashr i32 %add14, 1 %conv16 = trunc i32 %shr15 to i8 %13 = load ptr, ptr %dst_v.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %13, i64 0 store i8 %conv16, ptr %arrayidx17, align 1 %14 = load ptr, ptr %src_yuy2.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 4 store ptr %add.ptr, ptr %src_yuy2.addr, align 8 %15 = load ptr, ptr %dst_u.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %15, i64 1 store ptr %add.ptr18, ptr %dst_u.addr, align 8 %16 = load ptr, ptr %dst_v.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %16, i64 1 store ptr %add.ptr19, ptr %dst_v.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %add20 = add nsw i32 %17, 2 store i32 %add20, ptr %x, align 4 br label %for.cond, !llvm.loop !144 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @YUY2ToNVUVRow_C(ptr noundef %src_yuy2, i32 noundef %src_stride_yuy2, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_yuy2.addr = alloca ptr, align 8 %src_stride_yuy2.addr = alloca i32, align 4 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_yuy2, ptr %src_yuy2.addr, align 8 store i32 %src_stride_yuy2, ptr %src_stride_yuy2.addr, align 4 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src_yuy2.addr, align 8 %5 = load i32, ptr %src_stride_yuy2.addr, align 4 %add = add nsw i32 %5, 1 %idxprom = sext i32 %add to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom %6 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %6 to i32 %add3 = add nsw i32 %conv, %conv2 %add4 = add nsw i32 %add3, 1 %shr = ashr i32 %add4, 1 %conv5 = trunc i32 %shr to i8 %7 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %conv5, ptr %arrayidx6, align 1 %8 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %9 to i32 %10 = load ptr, ptr %src_yuy2.addr, align 8 %11 = load i32, ptr %src_stride_yuy2.addr, align 4 %add9 = add nsw i32 %11, 3 %idxprom10 = sext i32 %add9 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %10, i64 %idxprom10 %12 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %12 to i32 %add13 = add nsw i32 %conv8, %conv12 %add14 = add nsw i32 %add13, 1 %shr15 = ashr i32 %add14, 1 %conv16 = trunc i32 %shr15 to i8 %13 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %13, i64 1 store i8 %conv16, ptr %arrayidx17, align 1 %14 = load ptr, ptr %src_yuy2.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 4 store ptr %add.ptr, ptr %src_yuy2.addr, align 8 %15 = load ptr, ptr %dst_uv.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %15, i64 2 store ptr %add.ptr18, ptr %dst_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %16 = load i32, ptr %x, align 4 %add19 = add nsw i32 %16, 2 store i32 %add19, ptr %x, align 4 br label %for.cond, !llvm.loop !145 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @YUY2ToUV422Row_C(ptr noundef %src_yuy2, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_yuy2.addr = alloca ptr, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_yuy2, ptr %src_yuy2.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 3 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_v.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %src_yuy2.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 4 store ptr %add.ptr, ptr %src_yuy2.addr, align 8 %9 = load ptr, ptr %dst_u.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %9, i64 1 store ptr %add.ptr4, ptr %dst_u.addr, align 8 %10 = load ptr, ptr %dst_v.addr, align 8 %add.ptr5 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr5, ptr %dst_v.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %add = add nsw i32 %11, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !146 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @YUY2ToYRow_C(ptr noundef %src_yuy2, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_yuy2.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_yuy2, ptr %src_yuy2.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_y.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %dst_y.addr, align 8 %9 = load i32, ptr %x, align 4 %add = add nsw i32 %9, 1 %idxprom3 = sext i32 %add to i64 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 %idxprom3 store i8 %7, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_yuy2.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %10, i64 4 store ptr %add.ptr, ptr %src_yuy2.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %add5 = add nsw i32 %11, 2 store i32 %add5, ptr %x, align 4 br label %for.cond, !llvm.loop !147 for.end: ; preds = %for.cond %12 = load i32, ptr %width.addr, align 4 %and = and i32 %12, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %13 = load ptr, ptr %src_yuy2.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 0 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %dst_y.addr, align 8 %16 = load i32, ptr %width.addr, align 4 %sub7 = sub nsw i32 %16, 1 %idxprom8 = sext i32 %sub7 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %15, i64 %idxprom8 store i8 %14, ptr %arrayidx9, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @UYVYToUVRow_C(ptr noundef %src_uyvy, i32 noundef %src_stride_uyvy, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_uyvy.addr = alloca ptr, align 8 %src_stride_uyvy.addr = alloca i32, align 4 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uyvy, ptr %src_uyvy.addr, align 8 store i32 %src_stride_uyvy, ptr %src_stride_uyvy.addr, align 4 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src_uyvy.addr, align 8 %5 = load i32, ptr %src_stride_uyvy.addr, align 4 %add = add nsw i32 %5, 0 %idxprom = sext i32 %add to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom %6 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %6 to i32 %add3 = add nsw i32 %conv, %conv2 %add4 = add nsw i32 %add3, 1 %shr = ashr i32 %add4, 1 %conv5 = trunc i32 %shr to i8 %7 = load ptr, ptr %dst_u.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %conv5, ptr %arrayidx6, align 1 %8 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %8, i64 2 %9 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %9 to i32 %10 = load ptr, ptr %src_uyvy.addr, align 8 %11 = load i32, ptr %src_stride_uyvy.addr, align 4 %add9 = add nsw i32 %11, 2 %idxprom10 = sext i32 %add9 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %10, i64 %idxprom10 %12 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %12 to i32 %add13 = add nsw i32 %conv8, %conv12 %add14 = add nsw i32 %add13, 1 %shr15 = ashr i32 %add14, 1 %conv16 = trunc i32 %shr15 to i8 %13 = load ptr, ptr %dst_v.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %13, i64 0 store i8 %conv16, ptr %arrayidx17, align 1 %14 = load ptr, ptr %src_uyvy.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 4 store ptr %add.ptr, ptr %src_uyvy.addr, align 8 %15 = load ptr, ptr %dst_u.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %15, i64 1 store ptr %add.ptr18, ptr %dst_u.addr, align 8 %16 = load ptr, ptr %dst_v.addr, align 8 %add.ptr19 = getelementptr inbounds i8, ptr %16, i64 1 store ptr %add.ptr19, ptr %dst_v.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %17 = load i32, ptr %x, align 4 %add20 = add nsw i32 %17, 2 store i32 %add20, ptr %x, align 4 br label %for.cond, !llvm.loop !148 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @UYVYToUV422Row_C(ptr noundef %src_uyvy, ptr noundef %dst_u, ptr noundef %dst_v, i32 noundef %width) #0 { entry: %src_uyvy.addr = alloca ptr, align 8 %dst_u.addr = alloca ptr, align 8 %dst_v.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uyvy, ptr %src_uyvy.addr, align 8 store ptr %dst_u, ptr %dst_u.addr, align 8 store ptr %dst_v, ptr %dst_v.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 2 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_v.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %src_uyvy.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 4 store ptr %add.ptr, ptr %src_uyvy.addr, align 8 %9 = load ptr, ptr %dst_u.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %9, i64 1 store ptr %add.ptr4, ptr %dst_u.addr, align 8 %10 = load ptr, ptr %dst_v.addr, align 8 %add.ptr5 = getelementptr inbounds i8, ptr %10, i64 1 store ptr %add.ptr5, ptr %dst_v.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %add = add nsw i32 %11, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !149 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @UYVYToYRow_C(ptr noundef %src_uyvy, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_uyvy.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uyvy, ptr %src_uyvy.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_y.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 3 %7 = load i8, ptr %arrayidx2, align 1 %8 = load ptr, ptr %dst_y.addr, align 8 %9 = load i32, ptr %x, align 4 %add = add nsw i32 %9, 1 %idxprom3 = sext i32 %add to i64 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 %idxprom3 store i8 %7, ptr %arrayidx4, align 1 %10 = load ptr, ptr %src_uyvy.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %10, i64 4 store ptr %add.ptr, ptr %src_uyvy.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %add5 = add nsw i32 %11, 2 store i32 %add5, ptr %x, align 4 br label %for.cond, !llvm.loop !150 for.end: ; preds = %for.cond %12 = load i32, ptr %width.addr, align 4 %and = and i32 %12, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %13 = load ptr, ptr %src_uyvy.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx6, align 1 %15 = load ptr, ptr %dst_y.addr, align 8 %16 = load i32, ptr %width.addr, align 4 %sub7 = sub nsw i32 %16, 1 %idxprom8 = sext i32 %sub7 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %15, i64 %idxprom8 store i8 %14, ptr %arrayidx9, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBBlendRow_C(ptr noundef %src_argb, ptr noundef %src_argb1, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %src_argb1.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %fb = alloca i32, align 4 %fg = alloca i32, align 4 %fr = alloca i32, align 4 %a = alloca i32, align 4 %bb = alloca i32, align 4 %bg = alloca i32, align 4 %br = alloca i32, align 4 %fb70 = alloca i32, align 4 %fg73 = alloca i32, align 4 %fr76 = alloca i32, align 4 %a79 = alloca i32, align 4 %bb82 = alloca i32, align 4 %bg85 = alloca i32, align 4 %br88 = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %src_argb1, ptr %src_argb1.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %fb) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %fb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %fg) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %fg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %fr) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %fr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %bb) #10 %10 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %10, i64 0 %11 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %11 to i32 store i32 %conv8, ptr %bb, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %bg) #10 %12 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %12, i64 1 %13 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %13 to i32 store i32 %conv10, ptr %bg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %br) #10 %14 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %14, i64 2 %15 = load i8, ptr %arrayidx11, align 1 %conv12 = zext i8 %15 to i32 store i32 %conv12, ptr %br, align 4 %16 = load i32, ptr %a, align 4 %sub13 = sub i32 256, %16 %17 = load i32, ptr %bb, align 4 %mul = mul i32 %sub13, %17 %shr = lshr i32 %mul, 8 %18 = load i32, ptr %fb, align 4 %add = add i32 %shr, %18 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add) %conv14 = trunc i32 %call to i8 %19 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %19, i64 0 store i8 %conv14, ptr %arrayidx15, align 1 %20 = load i32, ptr %a, align 4 %sub16 = sub i32 256, %20 %21 = load i32, ptr %bg, align 4 %mul17 = mul i32 %sub16, %21 %shr18 = lshr i32 %mul17, 8 %22 = load i32, ptr %fg, align 4 %add19 = add i32 %shr18, %22 %call20 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add19) %conv21 = trunc i32 %call20 to i8 %23 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv21, ptr %arrayidx22, align 1 %24 = load i32, ptr %a, align 4 %sub23 = sub i32 256, %24 %25 = load i32, ptr %br, align 4 %mul24 = mul i32 %sub23, %25 %shr25 = lshr i32 %mul24, 8 %26 = load i32, ptr %fr, align 4 %add26 = add i32 %shr25, %26 %call27 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add26) %conv28 = trunc i32 %call27 to i8 %27 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx29 = getelementptr inbounds i8, ptr %27, i64 2 store i8 %conv28, ptr %arrayidx29, align 1 %28 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx30 = getelementptr inbounds i8, ptr %28, i64 3 store i8 -1, ptr %arrayidx30, align 1 %29 = load ptr, ptr %src_argb.addr, align 8 %arrayidx31 = getelementptr inbounds i8, ptr %29, i64 4 %30 = load i8, ptr %arrayidx31, align 1 %conv32 = zext i8 %30 to i32 store i32 %conv32, ptr %fb, align 4 %31 = load ptr, ptr %src_argb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %31, i64 5 %32 = load i8, ptr %arrayidx33, align 1 %conv34 = zext i8 %32 to i32 store i32 %conv34, ptr %fg, align 4 %33 = load ptr, ptr %src_argb.addr, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %33, i64 6 %34 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %34 to i32 store i32 %conv36, ptr %fr, align 4 %35 = load ptr, ptr %src_argb.addr, align 8 %arrayidx37 = getelementptr inbounds i8, ptr %35, i64 7 %36 = load i8, ptr %arrayidx37, align 1 %conv38 = zext i8 %36 to i32 store i32 %conv38, ptr %a, align 4 %37 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx39 = getelementptr inbounds i8, ptr %37, i64 4 %38 = load i8, ptr %arrayidx39, align 1 %conv40 = zext i8 %38 to i32 store i32 %conv40, ptr %bb, align 4 %39 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx41 = getelementptr inbounds i8, ptr %39, i64 5 %40 = load i8, ptr %arrayidx41, align 1 %conv42 = zext i8 %40 to i32 store i32 %conv42, ptr %bg, align 4 %41 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %41, i64 6 %42 = load i8, ptr %arrayidx43, align 1 %conv44 = zext i8 %42 to i32 store i32 %conv44, ptr %br, align 4 %43 = load i32, ptr %a, align 4 %sub45 = sub i32 256, %43 %44 = load i32, ptr %bb, align 4 %mul46 = mul i32 %sub45, %44 %shr47 = lshr i32 %mul46, 8 %45 = load i32, ptr %fb, align 4 %add48 = add i32 %shr47, %45 %call49 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add48) %conv50 = trunc i32 %call49 to i8 %46 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %46, i64 4 store i8 %conv50, ptr %arrayidx51, align 1 %47 = load i32, ptr %a, align 4 %sub52 = sub i32 256, %47 %48 = load i32, ptr %bg, align 4 %mul53 = mul i32 %sub52, %48 %shr54 = lshr i32 %mul53, 8 %49 = load i32, ptr %fg, align 4 %add55 = add i32 %shr54, %49 %call56 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add55) %conv57 = trunc i32 %call56 to i8 %50 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx58 = getelementptr inbounds i8, ptr %50, i64 5 store i8 %conv57, ptr %arrayidx58, align 1 %51 = load i32, ptr %a, align 4 %sub59 = sub i32 256, %51 %52 = load i32, ptr %br, align 4 %mul60 = mul i32 %sub59, %52 %shr61 = lshr i32 %mul60, 8 %53 = load i32, ptr %fr, align 4 %add62 = add i32 %shr61, %53 %call63 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add62) %conv64 = trunc i32 %call63 to i8 %54 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx65 = getelementptr inbounds i8, ptr %54, i64 6 store i8 %conv64, ptr %arrayidx65, align 1 %55 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx66 = getelementptr inbounds i8, ptr %55, i64 7 store i8 -1, ptr %arrayidx66, align 1 %56 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %56, i64 8 store ptr %add.ptr, ptr %src_argb.addr, align 8 %57 = load ptr, ptr %src_argb1.addr, align 8 %add.ptr67 = getelementptr inbounds i8, ptr %57, i64 8 store ptr %add.ptr67, ptr %src_argb1.addr, align 8 %58 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr68 = getelementptr inbounds i8, ptr %58, i64 8 store ptr %add.ptr68, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %br) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %bg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %bb) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fb) #10 br label %for.inc for.inc: ; preds = %for.body %59 = load i32, ptr %x, align 4 %add69 = add nsw i32 %59, 2 store i32 %add69, ptr %x, align 4 br label %for.cond, !llvm.loop !151 for.end: ; preds = %for.cond %60 = load i32, ptr %width.addr, align 4 %and = and i32 %60, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 4, ptr %fb70) #10 %61 = load ptr, ptr %src_argb.addr, align 8 %arrayidx71 = getelementptr inbounds i8, ptr %61, i64 0 %62 = load i8, ptr %arrayidx71, align 1 %conv72 = zext i8 %62 to i32 store i32 %conv72, ptr %fb70, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %fg73) #10 %63 = load ptr, ptr %src_argb.addr, align 8 %arrayidx74 = getelementptr inbounds i8, ptr %63, i64 1 %64 = load i8, ptr %arrayidx74, align 1 %conv75 = zext i8 %64 to i32 store i32 %conv75, ptr %fg73, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %fr76) #10 %65 = load ptr, ptr %src_argb.addr, align 8 %arrayidx77 = getelementptr inbounds i8, ptr %65, i64 2 %66 = load i8, ptr %arrayidx77, align 1 %conv78 = zext i8 %66 to i32 store i32 %conv78, ptr %fr76, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a79) #10 %67 = load ptr, ptr %src_argb.addr, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %67, i64 3 %68 = load i8, ptr %arrayidx80, align 1 %conv81 = zext i8 %68 to i32 store i32 %conv81, ptr %a79, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %bb82) #10 %69 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx83 = getelementptr inbounds i8, ptr %69, i64 0 %70 = load i8, ptr %arrayidx83, align 1 %conv84 = zext i8 %70 to i32 store i32 %conv84, ptr %bb82, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %bg85) #10 %71 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx86 = getelementptr inbounds i8, ptr %71, i64 1 %72 = load i8, ptr %arrayidx86, align 1 %conv87 = zext i8 %72 to i32 store i32 %conv87, ptr %bg85, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %br88) #10 %73 = load ptr, ptr %src_argb1.addr, align 8 %arrayidx89 = getelementptr inbounds i8, ptr %73, i64 2 %74 = load i8, ptr %arrayidx89, align 1 %conv90 = zext i8 %74 to i32 store i32 %conv90, ptr %br88, align 4 %75 = load i32, ptr %a79, align 4 %sub91 = sub i32 256, %75 %76 = load i32, ptr %bb82, align 4 %mul92 = mul i32 %sub91, %76 %shr93 = lshr i32 %mul92, 8 %77 = load i32, ptr %fb70, align 4 %add94 = add i32 %shr93, %77 %call95 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add94) %conv96 = trunc i32 %call95 to i8 %78 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx97 = getelementptr inbounds i8, ptr %78, i64 0 store i8 %conv96, ptr %arrayidx97, align 1 %79 = load i32, ptr %a79, align 4 %sub98 = sub i32 256, %79 %80 = load i32, ptr %bg85, align 4 %mul99 = mul i32 %sub98, %80 %shr100 = lshr i32 %mul99, 8 %81 = load i32, ptr %fg73, align 4 %add101 = add i32 %shr100, %81 %call102 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add101) %conv103 = trunc i32 %call102 to i8 %82 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx104 = getelementptr inbounds i8, ptr %82, i64 1 store i8 %conv103, ptr %arrayidx104, align 1 %83 = load i32, ptr %a79, align 4 %sub105 = sub i32 256, %83 %84 = load i32, ptr %br88, align 4 %mul106 = mul i32 %sub105, %84 %shr107 = lshr i32 %mul106, 8 %85 = load i32, ptr %fr76, align 4 %add108 = add i32 %shr107, %85 %call109 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %add108) %conv110 = trunc i32 %call109 to i8 %86 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx111 = getelementptr inbounds i8, ptr %86, i64 2 store i8 %conv110, ptr %arrayidx111, align 1 %87 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx112 = getelementptr inbounds i8, ptr %87, i64 3 store i8 -1, ptr %arrayidx112, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %br88) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %bg85) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %bb82) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a79) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fr76) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fg73) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fb70) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @BlendPlaneRow_C(ptr noundef %src0, ptr noundef %src1, ptr noundef %alpha, ptr noundef %dst, i32 noundef %width) #0 { entry: %src0.addr = alloca ptr, align 8 %src1.addr = alloca ptr, align 8 %alpha.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src0, ptr %src0.addr, align 8 store ptr %src1, ptr %src1.addr, align 8 store ptr %alpha, ptr %alpha.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %alpha.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src0.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %mul = mul nsw i32 %conv, %conv2 %6 = load ptr, ptr %alpha.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 0 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 %sub5 = sub nsw i32 255, %conv4 %8 = load ptr, ptr %src1.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %8, i64 0 %9 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %9 to i32 %mul8 = mul nsw i32 %sub5, %conv7 %add = add nsw i32 %mul, %mul8 %add9 = add nsw i32 %add, 255 %shr = ashr i32 %add9, 8 %conv10 = trunc i32 %shr to i8 %10 = load ptr, ptr %dst.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %10, i64 0 store i8 %conv10, ptr %arrayidx11, align 1 %11 = load ptr, ptr %alpha.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %11, i64 1 %12 = load i8, ptr %arrayidx12, align 1 %conv13 = zext i8 %12 to i32 %13 = load ptr, ptr %src0.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx14, align 1 %conv15 = zext i8 %14 to i32 %mul16 = mul nsw i32 %conv13, %conv15 %15 = load ptr, ptr %alpha.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %15, i64 1 %16 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %16 to i32 %sub19 = sub nsw i32 255, %conv18 %17 = load ptr, ptr %src1.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %17, i64 1 %18 = load i8, ptr %arrayidx20, align 1 %conv21 = zext i8 %18 to i32 %mul22 = mul nsw i32 %sub19, %conv21 %add23 = add nsw i32 %mul16, %mul22 %add24 = add nsw i32 %add23, 255 %shr25 = ashr i32 %add24, 8 %conv26 = trunc i32 %shr25 to i8 %19 = load ptr, ptr %dst.addr, align 8 %arrayidx27 = getelementptr inbounds i8, ptr %19, i64 1 store i8 %conv26, ptr %arrayidx27, align 1 %20 = load ptr, ptr %src0.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 2 store ptr %add.ptr, ptr %src0.addr, align 8 %21 = load ptr, ptr %src1.addr, align 8 %add.ptr28 = getelementptr inbounds i8, ptr %21, i64 2 store ptr %add.ptr28, ptr %src1.addr, align 8 %22 = load ptr, ptr %alpha.addr, align 8 %add.ptr29 = getelementptr inbounds i8, ptr %22, i64 2 store ptr %add.ptr29, ptr %alpha.addr, align 8 %23 = load ptr, ptr %dst.addr, align 8 %add.ptr30 = getelementptr inbounds i8, ptr %23, i64 2 store ptr %add.ptr30, ptr %dst.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %24 = load i32, ptr %x, align 4 %add31 = add nsw i32 %24, 2 store i32 %add31, ptr %x, align 4 br label %for.cond, !llvm.loop !152 for.end: ; preds = %for.cond %25 = load i32, ptr %width.addr, align 4 %and = and i32 %25, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %26 = load ptr, ptr %alpha.addr, align 8 %arrayidx32 = getelementptr inbounds i8, ptr %26, i64 0 %27 = load i8, ptr %arrayidx32, align 1 %conv33 = zext i8 %27 to i32 %28 = load ptr, ptr %src0.addr, align 8 %arrayidx34 = getelementptr inbounds i8, ptr %28, i64 0 %29 = load i8, ptr %arrayidx34, align 1 %conv35 = zext i8 %29 to i32 %mul36 = mul nsw i32 %conv33, %conv35 %30 = load ptr, ptr %alpha.addr, align 8 %arrayidx37 = getelementptr inbounds i8, ptr %30, i64 0 %31 = load i8, ptr %arrayidx37, align 1 %conv38 = zext i8 %31 to i32 %sub39 = sub nsw i32 255, %conv38 %32 = load ptr, ptr %src1.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %32, i64 0 %33 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %33 to i32 %mul42 = mul nsw i32 %sub39, %conv41 %add43 = add nsw i32 %mul36, %mul42 %add44 = add nsw i32 %add43, 255 %shr45 = ashr i32 %add44, 8 %conv46 = trunc i32 %shr45 to i8 %34 = load ptr, ptr %dst.addr, align 8 %arrayidx47 = getelementptr inbounds i8, ptr %34, i64 0 store i8 %conv46, ptr %arrayidx47, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBAttenuateRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 %b48 = alloca i32, align 4 %g51 = alloca i32, align 4 %r54 = alloca i32, align 4 %a57 = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 %10 = load i32, ptr %b, align 4 %11 = load i32, ptr %a, align 4 %mul = mul i32 %10, %11 %add = add i32 %mul, 255 %shr = lshr i32 %add, 8 %conv7 = trunc i32 %shr to i8 %12 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv7, ptr %arrayidx8, align 1 %13 = load i32, ptr %g, align 4 %14 = load i32, ptr %a, align 4 %mul9 = mul i32 %13, %14 %add10 = add i32 %mul9, 255 %shr11 = lshr i32 %add10, 8 %conv12 = trunc i32 %shr11 to i8 %15 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %15, i64 1 store i8 %conv12, ptr %arrayidx13, align 1 %16 = load i32, ptr %r, align 4 %17 = load i32, ptr %a, align 4 %mul14 = mul i32 %16, %17 %add15 = add i32 %mul14, 255 %shr16 = lshr i32 %add15, 8 %conv17 = trunc i32 %shr16 to i8 %18 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %18, i64 2 store i8 %conv17, ptr %arrayidx18, align 1 %19 = load i32, ptr %a, align 4 %conv19 = trunc i32 %19 to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx20 = getelementptr inbounds i8, ptr %20, i64 3 store i8 %conv19, ptr %arrayidx20, align 1 %21 = load ptr, ptr %src_argb.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %21, i64 4 %22 = load i8, ptr %arrayidx21, align 1 %conv22 = zext i8 %22 to i32 store i32 %conv22, ptr %b, align 4 %23 = load ptr, ptr %src_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %23, i64 5 %24 = load i8, ptr %arrayidx23, align 1 %conv24 = zext i8 %24 to i32 store i32 %conv24, ptr %g, align 4 %25 = load ptr, ptr %src_argb.addr, align 8 %arrayidx25 = getelementptr inbounds i8, ptr %25, i64 6 %26 = load i8, ptr %arrayidx25, align 1 %conv26 = zext i8 %26 to i32 store i32 %conv26, ptr %r, align 4 %27 = load ptr, ptr %src_argb.addr, align 8 %arrayidx27 = getelementptr inbounds i8, ptr %27, i64 7 %28 = load i8, ptr %arrayidx27, align 1 %conv28 = zext i8 %28 to i32 store i32 %conv28, ptr %a, align 4 %29 = load i32, ptr %b, align 4 %30 = load i32, ptr %a, align 4 %mul29 = mul i32 %29, %30 %add30 = add i32 %mul29, 255 %shr31 = lshr i32 %add30, 8 %conv32 = trunc i32 %shr31 to i8 %31 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %31, i64 4 store i8 %conv32, ptr %arrayidx33, align 1 %32 = load i32, ptr %g, align 4 %33 = load i32, ptr %a, align 4 %mul34 = mul i32 %32, %33 %add35 = add i32 %mul34, 255 %shr36 = lshr i32 %add35, 8 %conv37 = trunc i32 %shr36 to i8 %34 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx38 = getelementptr inbounds i8, ptr %34, i64 5 store i8 %conv37, ptr %arrayidx38, align 1 %35 = load i32, ptr %r, align 4 %36 = load i32, ptr %a, align 4 %mul39 = mul i32 %35, %36 %add40 = add i32 %mul39, 255 %shr41 = lshr i32 %add40, 8 %conv42 = trunc i32 %shr41 to i8 %37 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %37, i64 6 store i8 %conv42, ptr %arrayidx43, align 1 %38 = load i32, ptr %a, align 4 %conv44 = trunc i32 %38 to i8 %39 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx45 = getelementptr inbounds i8, ptr %39, i64 7 store i8 %conv44, ptr %arrayidx45, align 1 %40 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %40, i64 8 store ptr %add.ptr, ptr %src_argb.addr, align 8 %41 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr46 = getelementptr inbounds i8, ptr %41, i64 8 store ptr %add.ptr46, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %42 = load i32, ptr %i, align 4 %add47 = add nsw i32 %42, 2 store i32 %add47, ptr %i, align 4 br label %for.cond, !llvm.loop !153 for.end: ; preds = %for.cond %43 = load i32, ptr %width.addr, align 4 %and = and i32 %43, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 4, ptr %b48) #10 %44 = load ptr, ptr %src_argb.addr, align 8 %arrayidx49 = getelementptr inbounds i8, ptr %44, i64 0 %45 = load i8, ptr %arrayidx49, align 1 %conv50 = zext i8 %45 to i32 store i32 %conv50, ptr %b48, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g51) #10 %46 = load ptr, ptr %src_argb.addr, align 8 %arrayidx52 = getelementptr inbounds i8, ptr %46, i64 1 %47 = load i8, ptr %arrayidx52, align 1 %conv53 = zext i8 %47 to i32 store i32 %conv53, ptr %g51, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r54) #10 %48 = load ptr, ptr %src_argb.addr, align 8 %arrayidx55 = getelementptr inbounds i8, ptr %48, i64 2 %49 = load i8, ptr %arrayidx55, align 1 %conv56 = zext i8 %49 to i32 store i32 %conv56, ptr %r54, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a57) #10 %50 = load ptr, ptr %src_argb.addr, align 8 %arrayidx58 = getelementptr inbounds i8, ptr %50, i64 3 %51 = load i8, ptr %arrayidx58, align 1 %conv59 = zext i8 %51 to i32 store i32 %conv59, ptr %a57, align 4 %52 = load i32, ptr %b48, align 4 %53 = load i32, ptr %a57, align 4 %mul60 = mul i32 %52, %53 %add61 = add i32 %mul60, 255 %shr62 = lshr i32 %add61, 8 %conv63 = trunc i32 %shr62 to i8 %54 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx64 = getelementptr inbounds i8, ptr %54, i64 0 store i8 %conv63, ptr %arrayidx64, align 1 %55 = load i32, ptr %g51, align 4 %56 = load i32, ptr %a57, align 4 %mul65 = mul i32 %55, %56 %add66 = add i32 %mul65, 255 %shr67 = lshr i32 %add66, 8 %conv68 = trunc i32 %shr67 to i8 %57 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx69 = getelementptr inbounds i8, ptr %57, i64 1 store i8 %conv68, ptr %arrayidx69, align 1 %58 = load i32, ptr %r54, align 4 %59 = load i32, ptr %a57, align 4 %mul70 = mul i32 %58, %59 %add71 = add i32 %mul70, 255 %shr72 = lshr i32 %add71, 8 %conv73 = trunc i32 %shr72 to i8 %60 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx74 = getelementptr inbounds i8, ptr %60, i64 2 store i8 %conv73, ptr %arrayidx74, align 1 %61 = load i32, ptr %a57, align 4 %conv75 = trunc i32 %61 to i8 %62 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx76 = getelementptr inbounds i8, ptr %62, i64 3 store i8 %conv75, ptr %arrayidx76, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr %a57) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r54) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g51) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b48) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBUnattenuateRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca i32, align 4 %g = alloca i32, align 4 %r = alloca i32, align 4 %a = alloca i32, align 4 %ia = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 store i32 %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 store i32 %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %7 to i32 store i32 %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %9 to i32 store i32 %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ia) #10 %10 = load i32, ptr %a, align 4 %idxprom = zext i32 %10 to i64 %arrayidx7 = getelementptr inbounds nuw [256 x i32], ptr @fixed_invtbl8, i64 0, i64 %idxprom %11 = load i32, ptr %arrayidx7, align 4 %and = and i32 %11, 65535 store i32 %and, ptr %ia, align 4 %12 = load i32, ptr %b, align 4 %13 = load i32, ptr %ia, align 4 %mul = mul i32 %12, %13 %shr = lshr i32 %mul, 8 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr) %conv8 = trunc i32 %call to i8 %14 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %14, i64 0 store i8 %conv8, ptr %arrayidx9, align 1 %15 = load i32, ptr %g, align 4 %16 = load i32, ptr %ia, align 4 %mul10 = mul i32 %15, %16 %shr11 = lshr i32 %mul10, 8 %call12 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr11) %conv13 = trunc i32 %call12 to i8 %17 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %17, i64 1 store i8 %conv13, ptr %arrayidx14, align 1 %18 = load i32, ptr %r, align 4 %19 = load i32, ptr %ia, align 4 %mul15 = mul i32 %18, %19 %shr16 = lshr i32 %mul15, 8 %call17 = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr16) %conv18 = trunc i32 %call17 to i8 %20 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %20, i64 2 store i8 %conv18, ptr %arrayidx19, align 1 %21 = load i32, ptr %a, align 4 %conv20 = trunc i32 %21 to i8 %22 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx21 = getelementptr inbounds i8, ptr %22, i64 3 store i8 %conv20, ptr %arrayidx21, align 1 %23 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %23, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %24 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %24, i64 4 store ptr %add.ptr22, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %ia) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %25 = load i32, ptr %i, align 4 %inc = add nsw i32 %25, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !154 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ComputeCumulativeSumRow_C(ptr noundef %row, ptr noundef %cumsum, ptr noundef %previous_cumsum, i32 noundef %width) #0 { entry: %row.addr = alloca ptr, align 8 %cumsum.addr = alloca ptr, align 8 %previous_cumsum.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row_sum = alloca [4 x i32], align 16 %x = alloca i32, align 4 store ptr %row, ptr %row.addr, align 8 store ptr %cumsum, ptr %cumsum.addr, align 8 store ptr %previous_cumsum, ptr %previous_cumsum.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 16, ptr %row_sum) #10 call void @llvm.memset.p0.i64(ptr align 16 %row_sum, i8 0, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %row.addr, align 8 %3 = load i32, ptr %x, align 4 %mul = mul nsw i32 %3, 4 %add = add nsw i32 %mul, 0 %idxprom = sext i32 %add to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 %arrayidx1 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 0 %5 = load i32, ptr %arrayidx1, align 16 %add2 = add nsw i32 %5, %conv store i32 %add2, ptr %arrayidx1, align 16 %6 = load ptr, ptr %row.addr, align 8 %7 = load i32, ptr %x, align 4 %mul3 = mul nsw i32 %7, 4 %add4 = add nsw i32 %mul3, 1 %idxprom5 = sext i32 %add4 to i64 %arrayidx6 = getelementptr inbounds i8, ptr %6, i64 %idxprom5 %8 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %8 to i32 %arrayidx8 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 1 %9 = load i32, ptr %arrayidx8, align 4 %add9 = add nsw i32 %9, %conv7 store i32 %add9, ptr %arrayidx8, align 4 %10 = load ptr, ptr %row.addr, align 8 %11 = load i32, ptr %x, align 4 %mul10 = mul nsw i32 %11, 4 %add11 = add nsw i32 %mul10, 2 %idxprom12 = sext i32 %add11 to i64 %arrayidx13 = getelementptr inbounds i8, ptr %10, i64 %idxprom12 %12 = load i8, ptr %arrayidx13, align 1 %conv14 = zext i8 %12 to i32 %arrayidx15 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 2 %13 = load i32, ptr %arrayidx15, align 8 %add16 = add nsw i32 %13, %conv14 store i32 %add16, ptr %arrayidx15, align 8 %14 = load ptr, ptr %row.addr, align 8 %15 = load i32, ptr %x, align 4 %mul17 = mul nsw i32 %15, 4 %add18 = add nsw i32 %mul17, 3 %idxprom19 = sext i32 %add18 to i64 %arrayidx20 = getelementptr inbounds i8, ptr %14, i64 %idxprom19 %16 = load i8, ptr %arrayidx20, align 1 %conv21 = zext i8 %16 to i32 %arrayidx22 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 3 %17 = load i32, ptr %arrayidx22, align 4 %add23 = add nsw i32 %17, %conv21 store i32 %add23, ptr %arrayidx22, align 4 %arrayidx24 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 0 %18 = load i32, ptr %arrayidx24, align 16 %19 = load ptr, ptr %previous_cumsum.addr, align 8 %20 = load i32, ptr %x, align 4 %mul25 = mul nsw i32 %20, 4 %add26 = add nsw i32 %mul25, 0 %idxprom27 = sext i32 %add26 to i64 %arrayidx28 = getelementptr inbounds i32, ptr %19, i64 %idxprom27 %21 = load i32, ptr %arrayidx28, align 4 %add29 = add nsw i32 %18, %21 %22 = load ptr, ptr %cumsum.addr, align 8 %23 = load i32, ptr %x, align 4 %mul30 = mul nsw i32 %23, 4 %add31 = add nsw i32 %mul30, 0 %idxprom32 = sext i32 %add31 to i64 %arrayidx33 = getelementptr inbounds i32, ptr %22, i64 %idxprom32 store i32 %add29, ptr %arrayidx33, align 4 %arrayidx34 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 1 %24 = load i32, ptr %arrayidx34, align 4 %25 = load ptr, ptr %previous_cumsum.addr, align 8 %26 = load i32, ptr %x, align 4 %mul35 = mul nsw i32 %26, 4 %add36 = add nsw i32 %mul35, 1 %idxprom37 = sext i32 %add36 to i64 %arrayidx38 = getelementptr inbounds i32, ptr %25, i64 %idxprom37 %27 = load i32, ptr %arrayidx38, align 4 %add39 = add nsw i32 %24, %27 %28 = load ptr, ptr %cumsum.addr, align 8 %29 = load i32, ptr %x, align 4 %mul40 = mul nsw i32 %29, 4 %add41 = add nsw i32 %mul40, 1 %idxprom42 = sext i32 %add41 to i64 %arrayidx43 = getelementptr inbounds i32, ptr %28, i64 %idxprom42 store i32 %add39, ptr %arrayidx43, align 4 %arrayidx44 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 2 %30 = load i32, ptr %arrayidx44, align 8 %31 = load ptr, ptr %previous_cumsum.addr, align 8 %32 = load i32, ptr %x, align 4 %mul45 = mul nsw i32 %32, 4 %add46 = add nsw i32 %mul45, 2 %idxprom47 = sext i32 %add46 to i64 %arrayidx48 = getelementptr inbounds i32, ptr %31, i64 %idxprom47 %33 = load i32, ptr %arrayidx48, align 4 %add49 = add nsw i32 %30, %33 %34 = load ptr, ptr %cumsum.addr, align 8 %35 = load i32, ptr %x, align 4 %mul50 = mul nsw i32 %35, 4 %add51 = add nsw i32 %mul50, 2 %idxprom52 = sext i32 %add51 to i64 %arrayidx53 = getelementptr inbounds i32, ptr %34, i64 %idxprom52 store i32 %add49, ptr %arrayidx53, align 4 %arrayidx54 = getelementptr inbounds [4 x i32], ptr %row_sum, i64 0, i64 3 %36 = load i32, ptr %arrayidx54, align 4 %37 = load ptr, ptr %previous_cumsum.addr, align 8 %38 = load i32, ptr %x, align 4 %mul55 = mul nsw i32 %38, 4 %add56 = add nsw i32 %mul55, 3 %idxprom57 = sext i32 %add56 to i64 %arrayidx58 = getelementptr inbounds i32, ptr %37, i64 %idxprom57 %39 = load i32, ptr %arrayidx58, align 4 %add59 = add nsw i32 %36, %39 %40 = load ptr, ptr %cumsum.addr, align 8 %41 = load i32, ptr %x, align 4 %mul60 = mul nsw i32 %41, 4 %add61 = add nsw i32 %mul60, 3 %idxprom62 = sext i32 %add61 to i64 %arrayidx63 = getelementptr inbounds i32, ptr %40, i64 %idxprom62 store i32 %add59, ptr %arrayidx63, align 4 br label %for.inc for.inc: ; preds = %for.body %42 = load i32, ptr %x, align 4 %inc = add nsw i32 %42, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !155 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 16, ptr %row_sum) #10 ret void } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @CumulativeSumToAverageRow_C(ptr noundef %tl, ptr noundef %bl, i32 noundef %w, i32 noundef %area, ptr noundef %dst, i32 noundef %count) #0 { entry: %tl.addr = alloca ptr, align 8 %bl.addr = alloca ptr, align 8 %w.addr = alloca i32, align 4 %area.addr = alloca i32, align 4 %dst.addr = alloca ptr, align 8 %count.addr = alloca i32, align 4 %ooa = alloca float, align 4 %i = alloca i32, align 4 store ptr %tl, ptr %tl.addr, align 8 store ptr %bl, ptr %bl.addr, align 8 store i32 %w, ptr %w.addr, align 4 store i32 %area, ptr %area.addr, align 4 store ptr %dst, ptr %dst.addr, align 8 store i32 %count, ptr %count.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %ooa) #10 store float 0xFFFFFFFFE0000000, ptr %ooa, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 %0 = load i32, ptr %area.addr, align 4 %conv = sitofp i32 %0 to float %div = fdiv float 1.000000e+00, %conv store float %div, ptr %ooa, align 4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %i, align 4 %2 = load i32, ptr %count.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %bl.addr, align 8 %4 = load i32, ptr %w.addr, align 4 %add = add nsw i32 %4, 0 %idxprom = sext i32 %add to i64 %arrayidx = getelementptr inbounds i32, ptr %3, i64 %idxprom %5 = load i32, ptr %arrayidx, align 4 %6 = load ptr, ptr %tl.addr, align 8 %arrayidx1 = getelementptr inbounds i32, ptr %6, i64 0 %7 = load i32, ptr %arrayidx1, align 4 %add2 = add nsw i32 %5, %7 %8 = load ptr, ptr %bl.addr, align 8 %arrayidx3 = getelementptr inbounds i32, ptr %8, i64 0 %9 = load i32, ptr %arrayidx3, align 4 %sub = sub nsw i32 %add2, %9 %10 = load ptr, ptr %tl.addr, align 8 %11 = load i32, ptr %w.addr, align 4 %add4 = add nsw i32 %11, 0 %idxprom5 = sext i32 %add4 to i64 %arrayidx6 = getelementptr inbounds i32, ptr %10, i64 %idxprom5 %12 = load i32, ptr %arrayidx6, align 4 %sub7 = sub nsw i32 %sub, %12 %conv8 = sitofp i32 %sub7 to float %13 = load float, ptr %ooa, align 4 %mul = fmul float %conv8, %13 %conv9 = fptoui float %mul to i8 %14 = load ptr, ptr %dst.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %14, i64 0 store i8 %conv9, ptr %arrayidx10, align 1 %15 = load ptr, ptr %bl.addr, align 8 %16 = load i32, ptr %w.addr, align 4 %add11 = add nsw i32 %16, 1 %idxprom12 = sext i32 %add11 to i64 %arrayidx13 = getelementptr inbounds i32, ptr %15, i64 %idxprom12 %17 = load i32, ptr %arrayidx13, align 4 %18 = load ptr, ptr %tl.addr, align 8 %arrayidx14 = getelementptr inbounds i32, ptr %18, i64 1 %19 = load i32, ptr %arrayidx14, align 4 %add15 = add nsw i32 %17, %19 %20 = load ptr, ptr %bl.addr, align 8 %arrayidx16 = getelementptr inbounds i32, ptr %20, i64 1 %21 = load i32, ptr %arrayidx16, align 4 %sub17 = sub nsw i32 %add15, %21 %22 = load ptr, ptr %tl.addr, align 8 %23 = load i32, ptr %w.addr, align 4 %add18 = add nsw i32 %23, 1 %idxprom19 = sext i32 %add18 to i64 %arrayidx20 = getelementptr inbounds i32, ptr %22, i64 %idxprom19 %24 = load i32, ptr %arrayidx20, align 4 %sub21 = sub nsw i32 %sub17, %24 %conv22 = sitofp i32 %sub21 to float %25 = load float, ptr %ooa, align 4 %mul23 = fmul float %conv22, %25 %conv24 = fptoui float %mul23 to i8 %26 = load ptr, ptr %dst.addr, align 8 %arrayidx25 = getelementptr inbounds i8, ptr %26, i64 1 store i8 %conv24, ptr %arrayidx25, align 1 %27 = load ptr, ptr %bl.addr, align 8 %28 = load i32, ptr %w.addr, align 4 %add26 = add nsw i32 %28, 2 %idxprom27 = sext i32 %add26 to i64 %arrayidx28 = getelementptr inbounds i32, ptr %27, i64 %idxprom27 %29 = load i32, ptr %arrayidx28, align 4 %30 = load ptr, ptr %tl.addr, align 8 %arrayidx29 = getelementptr inbounds i32, ptr %30, i64 2 %31 = load i32, ptr %arrayidx29, align 4 %add30 = add nsw i32 %29, %31 %32 = load ptr, ptr %bl.addr, align 8 %arrayidx31 = getelementptr inbounds i32, ptr %32, i64 2 %33 = load i32, ptr %arrayidx31, align 4 %sub32 = sub nsw i32 %add30, %33 %34 = load ptr, ptr %tl.addr, align 8 %35 = load i32, ptr %w.addr, align 4 %add33 = add nsw i32 %35, 2 %idxprom34 = sext i32 %add33 to i64 %arrayidx35 = getelementptr inbounds i32, ptr %34, i64 %idxprom34 %36 = load i32, ptr %arrayidx35, align 4 %sub36 = sub nsw i32 %sub32, %36 %conv37 = sitofp i32 %sub36 to float %37 = load float, ptr %ooa, align 4 %mul38 = fmul float %conv37, %37 %conv39 = fptoui float %mul38 to i8 %38 = load ptr, ptr %dst.addr, align 8 %arrayidx40 = getelementptr inbounds i8, ptr %38, i64 2 store i8 %conv39, ptr %arrayidx40, align 1 %39 = load ptr, ptr %bl.addr, align 8 %40 = load i32, ptr %w.addr, align 4 %add41 = add nsw i32 %40, 3 %idxprom42 = sext i32 %add41 to i64 %arrayidx43 = getelementptr inbounds i32, ptr %39, i64 %idxprom42 %41 = load i32, ptr %arrayidx43, align 4 %42 = load ptr, ptr %tl.addr, align 8 %arrayidx44 = getelementptr inbounds i32, ptr %42, i64 3 %43 = load i32, ptr %arrayidx44, align 4 %add45 = add nsw i32 %41, %43 %44 = load ptr, ptr %bl.addr, align 8 %arrayidx46 = getelementptr inbounds i32, ptr %44, i64 3 %45 = load i32, ptr %arrayidx46, align 4 %sub47 = sub nsw i32 %add45, %45 %46 = load ptr, ptr %tl.addr, align 8 %47 = load i32, ptr %w.addr, align 4 %add48 = add nsw i32 %47, 3 %idxprom49 = sext i32 %add48 to i64 %arrayidx50 = getelementptr inbounds i32, ptr %46, i64 %idxprom49 %48 = load i32, ptr %arrayidx50, align 4 %sub51 = sub nsw i32 %sub47, %48 %conv52 = sitofp i32 %sub51 to float %49 = load float, ptr %ooa, align 4 %mul53 = fmul float %conv52, %49 %conv54 = fptoui float %mul53 to i8 %50 = load ptr, ptr %dst.addr, align 8 %arrayidx55 = getelementptr inbounds i8, ptr %50, i64 3 store i8 %conv54, ptr %arrayidx55, align 1 %51 = load ptr, ptr %dst.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %51, i64 4 store ptr %add.ptr, ptr %dst.addr, align 8 %52 = load ptr, ptr %tl.addr, align 8 %add.ptr56 = getelementptr inbounds i32, ptr %52, i64 4 store ptr %add.ptr56, ptr %tl.addr, align 8 %53 = load ptr, ptr %bl.addr, align 8 %add.ptr57 = getelementptr inbounds i32, ptr %53, i64 4 store ptr %add.ptr57, ptr %bl.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %54 = load i32, ptr %i, align 4 %inc = add nsw i32 %54, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !156 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %ooa) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBAffineRow_C(ptr noundef %src_argb, i32 noundef %src_argb_stride, ptr noundef %dst_argb, ptr noundef %uv_dudv, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %src_argb_stride.addr = alloca i32, align 4 %dst_argb.addr = alloca ptr, align 8 %uv_dudv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %uv = alloca [2 x float], align 4 %x = alloca i32, align 4 %y = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store i32 %src_argb_stride, ptr %src_argb_stride.addr, align 4 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %uv_dudv, ptr %uv_dudv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 8, ptr %uv) #10 %0 = getelementptr float, ptr %uv, i64 0 store float 0xFFFFFFFFE0000000, ptr %0, align 4, !annotation !4 %1 = getelementptr float, ptr %uv, i64 1 store float 0xFFFFFFFFE0000000, ptr %1, align 4, !annotation !4 %2 = load ptr, ptr %uv_dudv.addr, align 8 %arrayidx = getelementptr inbounds float, ptr %2, i64 0 %3 = load float, ptr %arrayidx, align 4 %arrayidx1 = getelementptr inbounds [2 x float], ptr %uv, i64 0, i64 0 store float %3, ptr %arrayidx1, align 4 %4 = load ptr, ptr %uv_dudv.addr, align 8 %arrayidx2 = getelementptr inbounds float, ptr %4, i64 1 %5 = load float, ptr %arrayidx2, align 4 %arrayidx3 = getelementptr inbounds [2 x float], ptr %uv, i64 0, i64 1 store float %5, ptr %arrayidx3, align 4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %6 = load i32, ptr %i, align 4 %7 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %6, %7 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 %arrayidx4 = getelementptr inbounds [2 x float], ptr %uv, i64 0, i64 0 %8 = load float, ptr %arrayidx4, align 4 %conv = fptosi float %8 to i32 store i32 %conv, ptr %x, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y) #10 %arrayidx5 = getelementptr inbounds [2 x float], ptr %uv, i64 0, i64 1 %9 = load float, ptr %arrayidx5, align 4 %conv6 = fptosi float %9 to i32 store i32 %conv6, ptr %y, align 4 %10 = load ptr, ptr %src_argb.addr, align 8 %11 = load i32, ptr %y, align 4 %12 = load i32, ptr %src_argb_stride.addr, align 4 %mul = mul nsw i32 %11, %12 %idx.ext = sext i32 %mul to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext %13 = load i32, ptr %x, align 4 %mul7 = mul nsw i32 %13, 4 %idx.ext8 = sext i32 %mul7 to i64 %add.ptr9 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext8 %14 = load i32, ptr %add.ptr9, align 4 %15 = load ptr, ptr %dst_argb.addr, align 8 store i32 %14, ptr %15, align 4 %16 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %16, i64 4 store ptr %add.ptr10, ptr %dst_argb.addr, align 8 %17 = load ptr, ptr %uv_dudv.addr, align 8 %arrayidx11 = getelementptr inbounds float, ptr %17, i64 2 %18 = load float, ptr %arrayidx11, align 4 %arrayidx12 = getelementptr inbounds [2 x float], ptr %uv, i64 0, i64 0 %19 = load float, ptr %arrayidx12, align 4 %add = fadd float %19, %18 store float %add, ptr %arrayidx12, align 4 %20 = load ptr, ptr %uv_dudv.addr, align 8 %arrayidx13 = getelementptr inbounds float, ptr %20, i64 3 %21 = load float, ptr %arrayidx13, align 4 %arrayidx14 = getelementptr inbounds [2 x float], ptr %uv, i64 0, i64 1 %22 = load float, ptr %arrayidx14, align 4 %add15 = fadd float %22, %21 store float %add15, ptr %arrayidx14, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %y) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 br label %for.inc for.inc: ; preds = %for.body %23 = load i32, ptr %i, align 4 %inc = add nsw i32 %23, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !157 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 8, ptr %uv) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @InterpolateRow_C(ptr noundef %dst_ptr, ptr noundef %src_ptr, i64 noundef %src_stride, i32 noundef %width, i32 noundef %source_y_fraction) #0 { entry: %dst_ptr.addr = alloca ptr, align 8 %src_ptr.addr = alloca ptr, align 8 %src_stride.addr = alloca i64, align 8 %width.addr = alloca i32, align 4 %source_y_fraction.addr = alloca i32, align 4 %y1_fraction = alloca i32, align 4 %y0_fraction = alloca i32, align 4 %src_ptr1 = alloca ptr, align 8 %x = alloca i32, align 4 %cleanup.dest.slot = alloca i32, align 4 store ptr %dst_ptr, ptr %dst_ptr.addr, align 8 store ptr %src_ptr, ptr %src_ptr.addr, align 8 store i64 %src_stride, ptr %src_stride.addr, align 8 store i32 %width, ptr %width.addr, align 4 store i32 %source_y_fraction, ptr %source_y_fraction.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y1_fraction) #10 %0 = load i32, ptr %source_y_fraction.addr, align 4 store i32 %0, ptr %y1_fraction, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y0_fraction) #10 %1 = load i32, ptr %y1_fraction, align 4 %sub = sub nsw i32 256, %1 store i32 %sub, ptr %y0_fraction, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_ptr1) #10 %2 = load ptr, ptr %src_ptr.addr, align 8 %3 = load i64, ptr %src_stride.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %2, i64 %3 store ptr %add.ptr, ptr %src_ptr1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %4 = load i32, ptr %y1_fraction, align 4 %cmp = icmp eq i32 %4, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %5 = load ptr, ptr %dst_ptr.addr, align 8 %6 = load ptr, ptr %src_ptr.addr, align 8 %7 = load i32, ptr %width.addr, align 4 %conv = sext i32 %7 to i64 %call = call ptr @memcpy.inline(ptr noundef %5, ptr noundef %6, i64 noundef %conv) #10 store i32 1, ptr %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %8 = load i32, ptr %y1_fraction, align 4 %cmp1 = icmp eq i32 %8, 128 br i1 %cmp1, label %if.then2, label %if.end3 if.then2: ; preds = %if.end %9 = load ptr, ptr %src_ptr.addr, align 8 %10 = load i64, ptr %src_stride.addr, align 8 %11 = load ptr, ptr %dst_ptr.addr, align 8 %12 = load i32, ptr %width.addr, align 4 call void @_ZN6libyuvL9HalfRow_CEPKhlPhi(ptr noundef %9, i64 noundef %10, ptr noundef %11, i32 noundef %12) store i32 1, ptr %cleanup.dest.slot, align 4 br label %cleanup if.end3: ; preds = %if.end store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end3 %13 = load i32, ptr %x, align 4 %14 = load i32, ptr %width.addr, align 4 %cmp4 = icmp slt i32 %13, %14 br i1 %cmp4, label %for.body, label %for.end for.body: ; preds = %for.cond %15 = load ptr, ptr %src_ptr.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %15, i64 0 %16 = load i8, ptr %arrayidx, align 1 %conv5 = zext i8 %16 to i32 %17 = load i32, ptr %y0_fraction, align 4 %mul = mul nsw i32 %conv5, %17 %18 = load ptr, ptr %src_ptr1, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %18, i64 0 %19 = load i8, ptr %arrayidx6, align 1 %conv7 = zext i8 %19 to i32 %20 = load i32, ptr %y1_fraction, align 4 %mul8 = mul nsw i32 %conv7, %20 %add = add nsw i32 %mul, %mul8 %add9 = add nsw i32 %add, 128 %shr = ashr i32 %add9, 8 %conv10 = trunc i32 %shr to i8 %21 = load ptr, ptr %dst_ptr.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %21, i64 0 store i8 %conv10, ptr %arrayidx11, align 1 %22 = load ptr, ptr %src_ptr.addr, align 8 %incdec.ptr = getelementptr inbounds nuw i8, ptr %22, i32 1 store ptr %incdec.ptr, ptr %src_ptr.addr, align 8 %23 = load ptr, ptr %src_ptr1, align 8 %incdec.ptr12 = getelementptr inbounds nuw i8, ptr %23, i32 1 store ptr %incdec.ptr12, ptr %src_ptr1, align 8 %24 = load ptr, ptr %dst_ptr.addr, align 8 %incdec.ptr13 = getelementptr inbounds nuw i8, ptr %24, i32 1 store ptr %incdec.ptr13, ptr %dst_ptr.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %25 = load i32, ptr %x, align 4 %inc = add nsw i32 %25, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !158 for.end: ; preds = %for.cond store i32 0, ptr %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %for.end, %if.then2, %if.then call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_ptr1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y0_fraction) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1_fraction) #10 %cleanup.dest = load i32, ptr %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %unreachable [ i32 0, label %cleanup.cont i32 1, label %cleanup.cont ] cleanup.cont: ; preds = %cleanup, %cleanup ret void unreachable: ; preds = %cleanup unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL9HalfRow_CEPKhlPhi(ptr noundef %src_uv, i64 noundef %src_uv_stride, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %src_uv_stride.addr = alloca i64, align 8 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store i64 %src_uv_stride, ptr %src_uv_stride.addr, align 8 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uv.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 %5 = load ptr, ptr %src_uv.addr, align 8 %6 = load i64, ptr %src_uv_stride.addr, align 8 %7 = load i32, ptr %x, align 4 %conv1 = sext i32 %7 to i64 %add = add nsw i64 %6, %conv1 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 %add %8 = load i8, ptr %arrayidx2, align 1 %conv3 = zext i8 %8 to i32 %add4 = add nsw i32 %conv, %conv3 %add5 = add nsw i32 %add4, 1 %shr = ashr i32 %add5, 1 %conv6 = trunc i32 %shr to i8 %9 = load ptr, ptr %dst_uv.addr, align 8 %10 = load i32, ptr %x, align 4 %idxprom7 = sext i32 %10 to i64 %arrayidx8 = getelementptr inbounds i8, ptr %9, i64 %idxprom7 store i8 %conv6, ptr %arrayidx8, align 1 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !159 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @InterpolateRow_16_C(ptr noundef %dst_ptr, ptr noundef %src_ptr, i64 noundef %src_stride, i32 noundef %width, i32 noundef %source_y_fraction) #0 { entry: %dst_ptr.addr = alloca ptr, align 8 %src_ptr.addr = alloca ptr, align 8 %src_stride.addr = alloca i64, align 8 %width.addr = alloca i32, align 4 %source_y_fraction.addr = alloca i32, align 4 %y1_fraction = alloca i32, align 4 %y0_fraction = alloca i32, align 4 %src_ptr1 = alloca ptr, align 8 %x = alloca i32, align 4 %cleanup.dest.slot = alloca i32, align 4 store ptr %dst_ptr, ptr %dst_ptr.addr, align 8 store ptr %src_ptr, ptr %src_ptr.addr, align 8 store i64 %src_stride, ptr %src_stride.addr, align 8 store i32 %width, ptr %width.addr, align 4 store i32 %source_y_fraction, ptr %source_y_fraction.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y1_fraction) #10 %0 = load i32, ptr %source_y_fraction.addr, align 4 store i32 %0, ptr %y1_fraction, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y0_fraction) #10 %1 = load i32, ptr %y1_fraction, align 4 %sub = sub nsw i32 256, %1 store i32 %sub, ptr %y0_fraction, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_ptr1) #10 %2 = load ptr, ptr %src_ptr.addr, align 8 %3 = load i64, ptr %src_stride.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %2, i64 %3 store ptr %add.ptr, ptr %src_ptr1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %4 = load i32, ptr %y1_fraction, align 4 %cmp = icmp eq i32 %4, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %5 = load ptr, ptr %dst_ptr.addr, align 8 %6 = load ptr, ptr %src_ptr.addr, align 8 %7 = load i32, ptr %width.addr, align 4 %mul = mul nsw i32 %7, 2 %conv = sext i32 %mul to i64 %call = call ptr @memcpy.inline(ptr noundef %5, ptr noundef %6, i64 noundef %conv) #10 store i32 1, ptr %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %8 = load i32, ptr %y1_fraction, align 4 %cmp1 = icmp eq i32 %8, 128 br i1 %cmp1, label %if.then2, label %if.end3 if.then2: ; preds = %if.end %9 = load ptr, ptr %src_ptr.addr, align 8 %10 = load i64, ptr %src_stride.addr, align 8 %11 = load ptr, ptr %dst_ptr.addr, align 8 %12 = load i32, ptr %width.addr, align 4 call void @_ZN6libyuvL12HalfRow_16_CEPKtlPti(ptr noundef %9, i64 noundef %10, ptr noundef %11, i32 noundef %12) store i32 1, ptr %cleanup.dest.slot, align 4 br label %cleanup if.end3: ; preds = %if.end store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end3 %13 = load i32, ptr %x, align 4 %14 = load i32, ptr %width.addr, align 4 %cmp4 = icmp slt i32 %13, %14 br i1 %cmp4, label %for.body, label %for.end for.body: ; preds = %for.cond %15 = load ptr, ptr %src_ptr.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %15, i64 0 %16 = load i16, ptr %arrayidx, align 2 %conv5 = zext i16 %16 to i32 %17 = load i32, ptr %y0_fraction, align 4 %mul6 = mul nsw i32 %conv5, %17 %18 = load ptr, ptr %src_ptr1, align 8 %arrayidx7 = getelementptr inbounds i16, ptr %18, i64 0 %19 = load i16, ptr %arrayidx7, align 2 %conv8 = zext i16 %19 to i32 %20 = load i32, ptr %y1_fraction, align 4 %mul9 = mul nsw i32 %conv8, %20 %add = add nsw i32 %mul6, %mul9 %add10 = add nsw i32 %add, 128 %shr = ashr i32 %add10, 8 %conv11 = trunc i32 %shr to i16 %21 = load ptr, ptr %dst_ptr.addr, align 8 %arrayidx12 = getelementptr inbounds i16, ptr %21, i64 0 store i16 %conv11, ptr %arrayidx12, align 2 %22 = load ptr, ptr %src_ptr.addr, align 8 %incdec.ptr = getelementptr inbounds nuw i16, ptr %22, i32 1 store ptr %incdec.ptr, ptr %src_ptr.addr, align 8 %23 = load ptr, ptr %src_ptr1, align 8 %incdec.ptr13 = getelementptr inbounds nuw i16, ptr %23, i32 1 store ptr %incdec.ptr13, ptr %src_ptr1, align 8 %24 = load ptr, ptr %dst_ptr.addr, align 8 %incdec.ptr14 = getelementptr inbounds nuw i16, ptr %24, i32 1 store ptr %incdec.ptr14, ptr %dst_ptr.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %25 = load i32, ptr %x, align 4 %inc = add nsw i32 %25, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !160 for.end: ; preds = %for.cond store i32 0, ptr %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %for.end, %if.then2, %if.then call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_ptr1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y0_fraction) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1_fraction) #10 %cleanup.dest = load i32, ptr %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %unreachable [ i32 0, label %cleanup.cont i32 1, label %cleanup.cont ] cleanup.cont: ; preds = %cleanup, %cleanup ret void unreachable: ; preds = %cleanup unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL12HalfRow_16_CEPKtlPti(ptr noundef %src_uv, i64 noundef %src_uv_stride, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %src_uv_stride.addr = alloca i64, align 8 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store i64 %src_uv_stride, ptr %src_uv_stride.addr, align 8 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uv.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i16, ptr %2, i64 %idxprom %4 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %4 to i32 %5 = load ptr, ptr %src_uv.addr, align 8 %6 = load i64, ptr %src_uv_stride.addr, align 8 %7 = load i32, ptr %x, align 4 %conv1 = sext i32 %7 to i64 %add = add nsw i64 %6, %conv1 %arrayidx2 = getelementptr inbounds i16, ptr %5, i64 %add %8 = load i16, ptr %arrayidx2, align 2 %conv3 = zext i16 %8 to i32 %add4 = add nsw i32 %conv, %conv3 %add5 = add nsw i32 %add4, 1 %shr = ashr i32 %add5, 1 %conv6 = trunc i32 %shr to i16 %9 = load ptr, ptr %dst_uv.addr, align 8 %10 = load i32, ptr %x, align 4 %idxprom7 = sext i32 %10 to i64 %arrayidx8 = getelementptr inbounds i16, ptr %9, i64 %idxprom7 store i16 %conv6, ptr %arrayidx8, align 2 br label %for.inc for.inc: ; preds = %for.body %11 = load i32, ptr %x, align 4 %inc = add nsw i32 %11, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !161 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @InterpolateRow_16To8_C(ptr noundef %dst_ptr, ptr noundef %src_ptr, i64 noundef %src_stride, i32 noundef %scale, i32 noundef %width, i32 noundef %source_y_fraction) #0 { entry: %dst_ptr.addr = alloca ptr, align 8 %src_ptr.addr = alloca ptr, align 8 %src_stride.addr = alloca i64, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %source_y_fraction.addr = alloca i32, align 4 %y1_fraction = alloca i32, align 4 %y0_fraction = alloca i32, align 4 %src_ptr1 = alloca ptr, align 8 %x = alloca i32, align 4 %cleanup.dest.slot = alloca i32, align 4 store ptr %dst_ptr, ptr %dst_ptr.addr, align 8 store ptr %src_ptr, ptr %src_ptr.addr, align 8 store i64 %src_stride, ptr %src_stride.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 store i32 %source_y_fraction, ptr %source_y_fraction.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y1_fraction) #10 %0 = load i32, ptr %source_y_fraction.addr, align 4 store i32 %0, ptr %y1_fraction, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %y0_fraction) #10 %1 = load i32, ptr %y1_fraction, align 4 %sub = sub nsw i32 256, %1 store i32 %sub, ptr %y0_fraction, align 4 call void @llvm.lifetime.start.p0(i64 8, ptr %src_ptr1) #10 %2 = load ptr, ptr %src_ptr.addr, align 8 %3 = load i64, ptr %src_stride.addr, align 8 %add.ptr = getelementptr inbounds i16, ptr %2, i64 %3 store ptr %add.ptr, ptr %src_ptr1, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 %4 = load i32, ptr %source_y_fraction.addr, align 4 %cmp = icmp eq i32 %4, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %5 = load ptr, ptr %src_ptr.addr, align 8 %6 = load ptr, ptr %dst_ptr.addr, align 8 %7 = load i32, ptr %scale.addr, align 4 %8 = load i32, ptr %width.addr, align 4 call void @Convert16To8Row_C(ptr noundef %5, ptr noundef %6, i32 noundef %7, i32 noundef %8) store i32 1, ptr %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %9 = load i32, ptr %source_y_fraction.addr, align 4 %cmp1 = icmp eq i32 %9, 128 br i1 %cmp1, label %if.then2, label %if.end3 if.then2: ; preds = %if.end %10 = load ptr, ptr %src_ptr.addr, align 8 %11 = load i64, ptr %src_stride.addr, align 8 %12 = load ptr, ptr %dst_ptr.addr, align 8 %13 = load i32, ptr %scale.addr, align 4 %14 = load i32, ptr %width.addr, align 4 call void @_ZN6libyuvL15HalfRow_16To8_CEPKtlPhii(ptr noundef %10, i64 noundef %11, ptr noundef %12, i32 noundef %13, i32 noundef %14) store i32 1, ptr %cleanup.dest.slot, align 4 br label %cleanup if.end3: ; preds = %if.end store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end3 %15 = load i32, ptr %x, align 4 %16 = load i32, ptr %width.addr, align 4 %cmp4 = icmp slt i32 %15, %16 br i1 %cmp4, label %for.body, label %for.end for.body: ; preds = %for.cond %17 = load ptr, ptr %src_ptr.addr, align 8 %arrayidx = getelementptr inbounds i16, ptr %17, i64 0 %18 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %18 to i32 %19 = load i32, ptr %y0_fraction, align 4 %mul = mul nsw i32 %conv, %19 %20 = load ptr, ptr %src_ptr1, align 8 %arrayidx5 = getelementptr inbounds i16, ptr %20, i64 0 %21 = load i16, ptr %arrayidx5, align 2 %conv6 = zext i16 %21 to i32 %22 = load i32, ptr %y1_fraction, align 4 %mul7 = mul nsw i32 %conv6, %22 %add = add nsw i32 %mul, %mul7 %add8 = add nsw i32 %add, 128 %shr = ashr i32 %add8, 8 %23 = load i32, ptr %scale.addr, align 4 %mul9 = mul nsw i32 %shr, %23 %shr10 = ashr i32 %mul9, 16 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr10) %conv11 = trunc i32 %call to i8 %24 = load ptr, ptr %dst_ptr.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %24, i64 0 store i8 %conv11, ptr %arrayidx12, align 1 %25 = load ptr, ptr %src_ptr.addr, align 8 %add.ptr13 = getelementptr inbounds i16, ptr %25, i64 1 store ptr %add.ptr13, ptr %src_ptr.addr, align 8 %26 = load ptr, ptr %src_ptr1, align 8 %add.ptr14 = getelementptr inbounds i16, ptr %26, i64 1 store ptr %add.ptr14, ptr %src_ptr1, align 8 %27 = load ptr, ptr %dst_ptr.addr, align 8 %add.ptr15 = getelementptr inbounds i8, ptr %27, i64 1 store ptr %add.ptr15, ptr %dst_ptr.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %28 = load i32, ptr %x, align 4 %inc = add nsw i32 %28, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !162 for.end: ; preds = %for.cond store i32 0, ptr %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %for.end, %if.then2, %if.then call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %src_ptr1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y0_fraction) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %y1_fraction) #10 %cleanup.dest = load i32, ptr %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %unreachable [ i32 0, label %cleanup.cont i32 1, label %cleanup.cont ] cleanup.cont: ; preds = %cleanup, %cleanup ret void unreachable: ; preds = %cleanup unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @_ZN6libyuvL15HalfRow_16To8_CEPKtlPhii(ptr noundef %src_uv, i64 noundef %src_uv_stride, ptr noundef %dst_uv, i32 noundef %scale, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %src_uv_stride.addr = alloca i64, align 8 %dst_uv.addr = alloca ptr, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_uv, ptr %src_uv.addr, align 8 store i64 %src_uv_stride, ptr %src_uv_stride.addr, align 8 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_uv.addr, align 8 %3 = load i32, ptr %x, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i16, ptr %2, i64 %idxprom %4 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %4 to i32 %5 = load ptr, ptr %src_uv.addr, align 8 %6 = load i64, ptr %src_uv_stride.addr, align 8 %7 = load i32, ptr %x, align 4 %conv1 = sext i32 %7 to i64 %add = add nsw i64 %6, %conv1 %arrayidx2 = getelementptr inbounds i16, ptr %5, i64 %add %8 = load i16, ptr %arrayidx2, align 2 %conv3 = zext i16 %8 to i32 %add4 = add nsw i32 %conv, %conv3 %add5 = add nsw i32 %add4, 1 %shr = ashr i32 %add5, 1 %9 = load i32, ptr %scale.addr, align 4 %mul = mul nsw i32 %shr, %9 %shr6 = ashr i32 %mul, 16 %call = call noundef i32 @_ZN6libyuvL8clamp255Ei(i32 noundef %shr6) %conv7 = trunc i32 %call to i8 %10 = load ptr, ptr %dst_uv.addr, align 8 %11 = load i32, ptr %x, align 4 %idxprom8 = sext i32 %11 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %10, i64 %idxprom8 store i8 %conv7, ptr %arrayidx9, align 1 br label %for.inc for.inc: ; preds = %for.body %12 = load i32, ptr %x, align 4 %inc = add nsw i32 %12, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !163 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBShuffleRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, ptr noundef %shuffler, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %shuffler.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %index0 = alloca i32, align 4 %index1 = alloca i32, align 4 %index2 = alloca i32, align 4 %index3 = alloca i32, align 4 %x = alloca i32, align 4 %b = alloca i8, align 1 %g = alloca i8, align 1 %r = alloca i8, align 1 %a = alloca i8, align 1 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %shuffler, ptr %shuffler.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index0) #10 %0 = load ptr, ptr %shuffler.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %0, i64 0 %1 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %1 to i32 store i32 %conv, ptr %index0, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index1) #10 %2 = load ptr, ptr %shuffler.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %3 to i32 store i32 %conv2, ptr %index1, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index2) #10 %4 = load ptr, ptr %shuffler.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %4, i64 2 %5 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %5 to i32 store i32 %conv4, ptr %index2, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %index3) #10 %6 = load ptr, ptr %shuffler.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %6, i64 3 %7 = load i8, ptr %arrayidx5, align 1 %conv6 = zext i8 %7 to i32 store i32 %conv6, ptr %index3, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %8 = load i32, ptr %x, align 4 %9 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %8, %9 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %b) #10 %10 = load ptr, ptr %src_argb.addr, align 8 %11 = load i32, ptr %index0, align 4 %idxprom = sext i32 %11 to i64 %arrayidx7 = getelementptr inbounds i8, ptr %10, i64 %idxprom %12 = load i8, ptr %arrayidx7, align 1 store i8 %12, ptr %b, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %g) #10 %13 = load ptr, ptr %src_argb.addr, align 8 %14 = load i32, ptr %index1, align 4 %idxprom8 = sext i32 %14 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %13, i64 %idxprom8 %15 = load i8, ptr %arrayidx9, align 1 store i8 %15, ptr %g, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %r) #10 %16 = load ptr, ptr %src_argb.addr, align 8 %17 = load i32, ptr %index2, align 4 %idxprom10 = sext i32 %17 to i64 %arrayidx11 = getelementptr inbounds i8, ptr %16, i64 %idxprom10 %18 = load i8, ptr %arrayidx11, align 1 store i8 %18, ptr %r, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %a) #10 %19 = load ptr, ptr %src_argb.addr, align 8 %20 = load i32, ptr %index3, align 4 %idxprom12 = sext i32 %20 to i64 %arrayidx13 = getelementptr inbounds i8, ptr %19, i64 %idxprom12 %21 = load i8, ptr %arrayidx13, align 1 store i8 %21, ptr %a, align 1 %22 = load i8, ptr %b, align 1 %23 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %23, i64 0 store i8 %22, ptr %arrayidx14, align 1 %24 = load i8, ptr %g, align 1 %25 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %25, i64 1 store i8 %24, ptr %arrayidx15, align 1 %26 = load i8, ptr %r, align 1 %27 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %27, i64 2 store i8 %26, ptr %arrayidx16, align 1 %28 = load i8, ptr %a, align 1 %29 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %29, i64 3 store i8 %28, ptr %arrayidx17, align 1 %30 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %30, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %31 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr18 = getelementptr inbounds i8, ptr %31, i64 4 store ptr %add.ptr18, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %32 = load i32, ptr %x, align 4 %inc = add nsw i32 %32, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !164 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index3) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index2) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index1) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %index0) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToYUY2Row_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_frame, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_frame.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_frame, ptr %dst_frame.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_y.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src_u.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 0 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 1 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %src_y.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 2 store i8 %9, ptr %arrayidx5, align 1 %11 = load ptr, ptr %src_v.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 3 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %dst_frame.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 4 store ptr %add.ptr, ptr %dst_frame.addr, align 8 %15 = load ptr, ptr %src_y.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %15, i64 2 store ptr %add.ptr8, ptr %src_y.addr, align 8 %16 = load ptr, ptr %src_u.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %16, i64 1 store ptr %add.ptr9, ptr %src_u.addr, align 8 %17 = load ptr, ptr %src_v.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %17, i64 1 store ptr %add.ptr10, ptr %src_v.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %18 = load i32, ptr %x, align 4 %add = add nsw i32 %18, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !165 for.end: ; preds = %for.cond %19 = load i32, ptr %width.addr, align 4 %and = and i32 %19, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %20 = load ptr, ptr %src_y.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx11, align 1 %22 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %22, i64 0 store i8 %21, ptr %arrayidx12, align 1 %23 = load ptr, ptr %src_u.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %23, i64 0 %24 = load i8, ptr %arrayidx13, align 1 %25 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %25, i64 1 store i8 %24, ptr %arrayidx14, align 1 %26 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %26, i64 2 store i8 0, ptr %arrayidx15, align 1 %27 = load ptr, ptr %src_v.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %27, i64 0 %28 = load i8, ptr %arrayidx16, align 1 %29 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %29, i64 3 store i8 %28, ptr %arrayidx17, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToUYVYRow_C(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_frame, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_frame.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_frame, ptr %dst_frame.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_u.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src_y.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 0 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 1 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %src_v.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 0 %9 = load i8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 2 store i8 %9, ptr %arrayidx5, align 1 %11 = load ptr, ptr %src_y.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %11, i64 1 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 3 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %dst_frame.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %14, i64 4 store ptr %add.ptr, ptr %dst_frame.addr, align 8 %15 = load ptr, ptr %src_y.addr, align 8 %add.ptr8 = getelementptr inbounds i8, ptr %15, i64 2 store ptr %add.ptr8, ptr %src_y.addr, align 8 %16 = load ptr, ptr %src_u.addr, align 8 %add.ptr9 = getelementptr inbounds i8, ptr %16, i64 1 store ptr %add.ptr9, ptr %src_u.addr, align 8 %17 = load ptr, ptr %src_v.addr, align 8 %add.ptr10 = getelementptr inbounds i8, ptr %17, i64 1 store ptr %add.ptr10, ptr %src_v.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %18 = load i32, ptr %x, align 4 %add = add nsw i32 %18, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !166 for.end: ; preds = %for.cond %19 = load i32, ptr %width.addr, align 4 %and = and i32 %19, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %20 = load ptr, ptr %src_u.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %20, i64 0 %21 = load i8, ptr %arrayidx11, align 1 %22 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %22, i64 0 store i8 %21, ptr %arrayidx12, align 1 %23 = load ptr, ptr %src_y.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %23, i64 0 %24 = load i8, ptr %arrayidx13, align 1 %25 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %25, i64 1 store i8 %24, ptr %arrayidx14, align 1 %26 = load ptr, ptr %src_v.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %26, i64 0 %27 = load i8, ptr %arrayidx15, align 1 %28 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %28, i64 2 store i8 %27, ptr %arrayidx16, align 1 %29 = load ptr, ptr %dst_frame.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %29, i64 3 store i8 0, ptr %arrayidx17, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBPolynomialRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, ptr noundef %poly, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %poly.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %b = alloca float, align 4 %g = alloca float, align 4 %r = alloca float, align 4 %a = alloca float, align 4 %b2 = alloca float, align 4 %g2 = alloca float, align 4 %r2 = alloca float, align 4 %a2 = alloca float, align 4 %db = alloca float, align 4 %dg = alloca float, align 4 %dr = alloca float, align 4 %da = alloca float, align 4 %b3 = alloca float, align 4 %g3 = alloca float, align 4 %r3 = alloca float, align 4 %a3 = alloca float, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store ptr %poly, ptr %poly.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %b) #10 %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = uitofp i8 %3 to float store float %conv, ptr %b, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g) #10 %4 = load ptr, ptr %src_argb.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = uitofp i8 %5 to float store float %conv2, ptr %g, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r) #10 %6 = load ptr, ptr %src_argb.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 2 %7 = load i8, ptr %arrayidx3, align 1 %conv4 = uitofp i8 %7 to float store float %conv4, ptr %r, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a) #10 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 3 %9 = load i8, ptr %arrayidx5, align 1 %conv6 = uitofp i8 %9 to float store float %conv6, ptr %a, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b2) #10 %10 = load float, ptr %b, align 4 %11 = load float, ptr %b, align 4 %mul = fmul float %10, %11 store float %mul, ptr %b2, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g2) #10 %12 = load float, ptr %g, align 4 %13 = load float, ptr %g, align 4 %mul7 = fmul float %12, %13 store float %mul7, ptr %g2, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r2) #10 %14 = load float, ptr %r, align 4 %15 = load float, ptr %r, align 4 %mul8 = fmul float %14, %15 store float %mul8, ptr %r2, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a2) #10 %16 = load float, ptr %a, align 4 %17 = load float, ptr %a, align 4 %mul9 = fmul float %16, %17 store float %mul9, ptr %a2, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %db) #10 %18 = load ptr, ptr %poly.addr, align 8 %arrayidx10 = getelementptr inbounds float, ptr %18, i64 0 %19 = load float, ptr %arrayidx10, align 4 %20 = load ptr, ptr %poly.addr, align 8 %arrayidx11 = getelementptr inbounds float, ptr %20, i64 4 %21 = load float, ptr %arrayidx11, align 4 %22 = load float, ptr %b, align 4 %mul12 = fmul float %21, %22 %add = fadd float %19, %mul12 store float %add, ptr %db, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %dg) #10 %23 = load ptr, ptr %poly.addr, align 8 %arrayidx13 = getelementptr inbounds float, ptr %23, i64 1 %24 = load float, ptr %arrayidx13, align 4 %25 = load ptr, ptr %poly.addr, align 8 %arrayidx14 = getelementptr inbounds float, ptr %25, i64 5 %26 = load float, ptr %arrayidx14, align 4 %27 = load float, ptr %g, align 4 %mul15 = fmul float %26, %27 %add16 = fadd float %24, %mul15 store float %add16, ptr %dg, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %dr) #10 %28 = load ptr, ptr %poly.addr, align 8 %arrayidx17 = getelementptr inbounds float, ptr %28, i64 2 %29 = load float, ptr %arrayidx17, align 4 %30 = load ptr, ptr %poly.addr, align 8 %arrayidx18 = getelementptr inbounds float, ptr %30, i64 6 %31 = load float, ptr %arrayidx18, align 4 %32 = load float, ptr %r, align 4 %mul19 = fmul float %31, %32 %add20 = fadd float %29, %mul19 store float %add20, ptr %dr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %da) #10 %33 = load ptr, ptr %poly.addr, align 8 %arrayidx21 = getelementptr inbounds float, ptr %33, i64 3 %34 = load float, ptr %arrayidx21, align 4 %35 = load ptr, ptr %poly.addr, align 8 %arrayidx22 = getelementptr inbounds float, ptr %35, i64 7 %36 = load float, ptr %arrayidx22, align 4 %37 = load float, ptr %a, align 4 %mul23 = fmul float %36, %37 %add24 = fadd float %34, %mul23 store float %add24, ptr %da, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %b3) #10 %38 = load float, ptr %b2, align 4 %39 = load float, ptr %b, align 4 %mul25 = fmul float %38, %39 store float %mul25, ptr %b3, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %g3) #10 %40 = load float, ptr %g2, align 4 %41 = load float, ptr %g, align 4 %mul26 = fmul float %40, %41 store float %mul26, ptr %g3, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %r3) #10 %42 = load float, ptr %r2, align 4 %43 = load float, ptr %r, align 4 %mul27 = fmul float %42, %43 store float %mul27, ptr %r3, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %a3) #10 %44 = load float, ptr %a2, align 4 %45 = load float, ptr %a, align 4 %mul28 = fmul float %44, %45 store float %mul28, ptr %a3, align 4 %46 = load ptr, ptr %poly.addr, align 8 %arrayidx29 = getelementptr inbounds float, ptr %46, i64 8 %47 = load float, ptr %arrayidx29, align 4 %48 = load float, ptr %b2, align 4 %mul30 = fmul float %47, %48 %49 = load float, ptr %db, align 4 %add31 = fadd float %49, %mul30 store float %add31, ptr %db, align 4 %50 = load ptr, ptr %poly.addr, align 8 %arrayidx32 = getelementptr inbounds float, ptr %50, i64 9 %51 = load float, ptr %arrayidx32, align 4 %52 = load float, ptr %g2, align 4 %mul33 = fmul float %51, %52 %53 = load float, ptr %dg, align 4 %add34 = fadd float %53, %mul33 store float %add34, ptr %dg, align 4 %54 = load ptr, ptr %poly.addr, align 8 %arrayidx35 = getelementptr inbounds float, ptr %54, i64 10 %55 = load float, ptr %arrayidx35, align 4 %56 = load float, ptr %r2, align 4 %mul36 = fmul float %55, %56 %57 = load float, ptr %dr, align 4 %add37 = fadd float %57, %mul36 store float %add37, ptr %dr, align 4 %58 = load ptr, ptr %poly.addr, align 8 %arrayidx38 = getelementptr inbounds float, ptr %58, i64 11 %59 = load float, ptr %arrayidx38, align 4 %60 = load float, ptr %a2, align 4 %mul39 = fmul float %59, %60 %61 = load float, ptr %da, align 4 %add40 = fadd float %61, %mul39 store float %add40, ptr %da, align 4 %62 = load ptr, ptr %poly.addr, align 8 %arrayidx41 = getelementptr inbounds float, ptr %62, i64 12 %63 = load float, ptr %arrayidx41, align 4 %64 = load float, ptr %b3, align 4 %mul42 = fmul float %63, %64 %65 = load float, ptr %db, align 4 %add43 = fadd float %65, %mul42 store float %add43, ptr %db, align 4 %66 = load ptr, ptr %poly.addr, align 8 %arrayidx44 = getelementptr inbounds float, ptr %66, i64 13 %67 = load float, ptr %arrayidx44, align 4 %68 = load float, ptr %g3, align 4 %mul45 = fmul float %67, %68 %69 = load float, ptr %dg, align 4 %add46 = fadd float %69, %mul45 store float %add46, ptr %dg, align 4 %70 = load ptr, ptr %poly.addr, align 8 %arrayidx47 = getelementptr inbounds float, ptr %70, i64 14 %71 = load float, ptr %arrayidx47, align 4 %72 = load float, ptr %r3, align 4 %mul48 = fmul float %71, %72 %73 = load float, ptr %dr, align 4 %add49 = fadd float %73, %mul48 store float %add49, ptr %dr, align 4 %74 = load ptr, ptr %poly.addr, align 8 %arrayidx50 = getelementptr inbounds float, ptr %74, i64 15 %75 = load float, ptr %arrayidx50, align 4 %76 = load float, ptr %a3, align 4 %mul51 = fmul float %75, %76 %77 = load float, ptr %da, align 4 %add52 = fadd float %77, %mul51 store float %add52, ptr %da, align 4 %78 = load float, ptr %db, align 4 %conv53 = fptosi float %78 to i32 %call = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %conv53) %conv54 = trunc i32 %call to i8 %79 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx55 = getelementptr inbounds i8, ptr %79, i64 0 store i8 %conv54, ptr %arrayidx55, align 1 %80 = load float, ptr %dg, align 4 %conv56 = fptosi float %80 to i32 %call57 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %conv56) %conv58 = trunc i32 %call57 to i8 %81 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx59 = getelementptr inbounds i8, ptr %81, i64 1 store i8 %conv58, ptr %arrayidx59, align 1 %82 = load float, ptr %dr, align 4 %conv60 = fptosi float %82 to i32 %call61 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %conv60) %conv62 = trunc i32 %call61 to i8 %83 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx63 = getelementptr inbounds i8, ptr %83, i64 2 store i8 %conv62, ptr %arrayidx63, align 1 %84 = load float, ptr %da, align 4 %conv64 = fptosi float %84 to i32 %call65 = call noundef i32 @_ZN6libyuvL5ClampEi(i32 noundef %conv64) %conv66 = trunc i32 %call65 to i8 %85 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx67 = getelementptr inbounds i8, ptr %85, i64 3 store i8 %conv66, ptr %arrayidx67, align 1 %86 = load ptr, ptr %src_argb.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %86, i64 4 store ptr %add.ptr, ptr %src_argb.addr, align 8 %87 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr68 = getelementptr inbounds i8, ptr %87, i64 4 store ptr %add.ptr68, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 4, ptr %a3) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r3) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g3) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b3) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %da) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %dr) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %dg) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %db) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a2) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r2) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g2) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b2) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %a) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %r) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %g) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %b) #10 br label %for.inc for.inc: ; preds = %for.body %88 = load i32, ptr %i, align 4 %inc = add nsw i32 %88, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !167 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @HalfFloatRow_C(ptr noundef %src, ptr noundef %dst, float noundef %scale, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %scale.addr = alloca float, align 4 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %mult = alloca float, align 4 %value = alloca float, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store float %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 call void @llvm.lifetime.start.p0(i64 4, ptr %mult) #10 %0 = load float, ptr %scale.addr, align 4 %mul = fmul float 0x38F0000000000000, %0 store float %mul, ptr %mult, align 4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, ptr %i, align 4 %2 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %1, %2 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %value) #10 %3 = load ptr, ptr %src.addr, align 8 %4 = load i32, ptr %i, align 4 %idxprom = sext i32 %4 to i64 %arrayidx = getelementptr inbounds i16, ptr %3, i64 %idxprom %5 = load i16, ptr %arrayidx, align 2 %conv = zext i16 %5 to i32 %conv1 = sitofp i32 %conv to float %6 = load float, ptr %mult, align 4 %mul2 = fmul float %conv1, %6 store float %mul2, ptr %value, align 4 %7 = load i32, ptr %value, align 4 %shr = lshr i32 %7, 13 %conv3 = trunc i32 %shr to i16 %8 = load ptr, ptr %dst.addr, align 8 %9 = load i32, ptr %i, align 4 %idxprom4 = sext i32 %9 to i64 %arrayidx5 = getelementptr inbounds i16, ptr %8, i64 %idxprom4 store i16 %conv3, ptr %arrayidx5, align 2 call void @llvm.lifetime.end.p0(i64 4, ptr %value) #10 br label %for.inc for.inc: ; preds = %for.body %10 = load i32, ptr %i, align 4 %inc = add nsw i32 %10, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !168 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %mult) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ByteToFloatRow_C(ptr noundef %src, ptr noundef %dst, float noundef %scale, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %scale.addr = alloca float, align 4 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 %value = alloca float, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store float %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %value) #10 %2 = load ptr, ptr %src.addr, align 8 %3 = load i32, ptr %i, align 4 %idxprom = sext i32 %3 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom %4 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %4 to i32 %conv1 = sitofp i32 %conv to float %5 = load float, ptr %scale.addr, align 4 %mul = fmul float %conv1, %5 store float %mul, ptr %value, align 4 %6 = load float, ptr %value, align 4 %7 = load ptr, ptr %dst.addr, align 8 %8 = load i32, ptr %i, align 4 %idxprom2 = sext i32 %8 to i64 %arrayidx3 = getelementptr inbounds float, ptr %7, i64 %idxprom2 store float %6, ptr %arrayidx3, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %value) #10 br label %for.inc for.inc: ; preds = %for.body %9 = load i32, ptr %i, align 4 %inc = add nsw i32 %9, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !169 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBLumaColorTableRow_C(ptr noundef %src_argb, ptr noundef %dst_argb, i32 noundef %width, ptr noundef %luma, i32 noundef %lumacoeff) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_argb.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %luma.addr = alloca ptr, align 8 %lumacoeff.addr = alloca i32, align 4 %bc = alloca i32, align 4 %gc = alloca i32, align 4 %rc = alloca i32, align 4 %i = alloca i32, align 4 %luma0 = alloca ptr, align 8 %luma1 = alloca ptr, align 8 %luma057 = alloca ptr, align 8 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_argb, ptr %dst_argb.addr, align 8 store i32 %width, ptr %width.addr, align 4 store ptr %luma, ptr %luma.addr, align 8 store i32 %lumacoeff, ptr %lumacoeff.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %bc) #10 %0 = load i32, ptr %lumacoeff.addr, align 4 %and = and i32 %0, 255 store i32 %and, ptr %bc, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %gc) #10 %1 = load i32, ptr %lumacoeff.addr, align 4 %shr = lshr i32 %1, 8 %and1 = and i32 %shr, 255 store i32 %and1, ptr %gc, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %rc) #10 %2 = load i32, ptr %lumacoeff.addr, align 4 %shr2 = lshr i32 %2, 16 %and3 = and i32 %shr2, 255 store i32 %and3, ptr %rc, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i32, ptr %i, align 4 %4 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %4, 1 %cmp = icmp slt i32 %3, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 8, ptr %luma0) #10 %5 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %5, i64 0 %6 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %6 to i32 %7 = load i32, ptr %bc, align 4 %mul = mul i32 %conv, %7 %8 = load ptr, ptr %src_argb.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 1 %9 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %9 to i32 %10 = load i32, ptr %gc, align 4 %mul6 = mul i32 %conv5, %10 %add = add i32 %mul, %mul6 %11 = load ptr, ptr %src_argb.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %11, i64 2 %12 = load i8, ptr %arrayidx7, align 1 %conv8 = zext i8 %12 to i32 %13 = load i32, ptr %rc, align 4 %mul9 = mul i32 %conv8, %13 %add10 = add i32 %add, %mul9 %and11 = and i32 %add10, 32512 %14 = load ptr, ptr %luma.addr, align 8 %idx.ext = zext i32 %and11 to i64 %add.ptr = getelementptr inbounds nuw i8, ptr %14, i64 %idx.ext store ptr %add.ptr, ptr %luma0, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %luma1) #10 store ptr inttoptr (i64 -6148914691236517206 to ptr), ptr %luma1, align 8, !annotation !4 %15 = load ptr, ptr %luma0, align 8 %16 = load ptr, ptr %src_argb.addr, align 8 %arrayidx12 = getelementptr inbounds i8, ptr %16, i64 0 %17 = load i8, ptr %arrayidx12, align 1 %idxprom = zext i8 %17 to i64 %arrayidx13 = getelementptr inbounds nuw i8, ptr %15, i64 %idxprom %18 = load i8, ptr %arrayidx13, align 1 %19 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %19, i64 0 store i8 %18, ptr %arrayidx14, align 1 %20 = load ptr, ptr %luma0, align 8 %21 = load ptr, ptr %src_argb.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %21, i64 1 %22 = load i8, ptr %arrayidx15, align 1 %idxprom16 = zext i8 %22 to i64 %arrayidx17 = getelementptr inbounds nuw i8, ptr %20, i64 %idxprom16 %23 = load i8, ptr %arrayidx17, align 1 %24 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %24, i64 1 store i8 %23, ptr %arrayidx18, align 1 %25 = load ptr, ptr %luma0, align 8 %26 = load ptr, ptr %src_argb.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %26, i64 2 %27 = load i8, ptr %arrayidx19, align 1 %idxprom20 = zext i8 %27 to i64 %arrayidx21 = getelementptr inbounds nuw i8, ptr %25, i64 %idxprom20 %28 = load i8, ptr %arrayidx21, align 1 %29 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx22 = getelementptr inbounds i8, ptr %29, i64 2 store i8 %28, ptr %arrayidx22, align 1 %30 = load ptr, ptr %src_argb.addr, align 8 %arrayidx23 = getelementptr inbounds i8, ptr %30, i64 3 %31 = load i8, ptr %arrayidx23, align 1 %32 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx24 = getelementptr inbounds i8, ptr %32, i64 3 store i8 %31, ptr %arrayidx24, align 1 %33 = load ptr, ptr %src_argb.addr, align 8 %arrayidx25 = getelementptr inbounds i8, ptr %33, i64 4 %34 = load i8, ptr %arrayidx25, align 1 %conv26 = zext i8 %34 to i32 %35 = load i32, ptr %bc, align 4 %mul27 = mul i32 %conv26, %35 %36 = load ptr, ptr %src_argb.addr, align 8 %arrayidx28 = getelementptr inbounds i8, ptr %36, i64 5 %37 = load i8, ptr %arrayidx28, align 1 %conv29 = zext i8 %37 to i32 %38 = load i32, ptr %gc, align 4 %mul30 = mul i32 %conv29, %38 %add31 = add i32 %mul27, %mul30 %39 = load ptr, ptr %src_argb.addr, align 8 %arrayidx32 = getelementptr inbounds i8, ptr %39, i64 6 %40 = load i8, ptr %arrayidx32, align 1 %conv33 = zext i8 %40 to i32 %41 = load i32, ptr %rc, align 4 %mul34 = mul i32 %conv33, %41 %add35 = add i32 %add31, %mul34 %and36 = and i32 %add35, 32512 %42 = load ptr, ptr %luma.addr, align 8 %idx.ext37 = zext i32 %and36 to i64 %add.ptr38 = getelementptr inbounds nuw i8, ptr %42, i64 %idx.ext37 store ptr %add.ptr38, ptr %luma1, align 8 %43 = load ptr, ptr %luma1, align 8 %44 = load ptr, ptr %src_argb.addr, align 8 %arrayidx39 = getelementptr inbounds i8, ptr %44, i64 4 %45 = load i8, ptr %arrayidx39, align 1 %idxprom40 = zext i8 %45 to i64 %arrayidx41 = getelementptr inbounds nuw i8, ptr %43, i64 %idxprom40 %46 = load i8, ptr %arrayidx41, align 1 %47 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx42 = getelementptr inbounds i8, ptr %47, i64 4 store i8 %46, ptr %arrayidx42, align 1 %48 = load ptr, ptr %luma1, align 8 %49 = load ptr, ptr %src_argb.addr, align 8 %arrayidx43 = getelementptr inbounds i8, ptr %49, i64 5 %50 = load i8, ptr %arrayidx43, align 1 %idxprom44 = zext i8 %50 to i64 %arrayidx45 = getelementptr inbounds nuw i8, ptr %48, i64 %idxprom44 %51 = load i8, ptr %arrayidx45, align 1 %52 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx46 = getelementptr inbounds i8, ptr %52, i64 5 store i8 %51, ptr %arrayidx46, align 1 %53 = load ptr, ptr %luma1, align 8 %54 = load ptr, ptr %src_argb.addr, align 8 %arrayidx47 = getelementptr inbounds i8, ptr %54, i64 6 %55 = load i8, ptr %arrayidx47, align 1 %idxprom48 = zext i8 %55 to i64 %arrayidx49 = getelementptr inbounds nuw i8, ptr %53, i64 %idxprom48 %56 = load i8, ptr %arrayidx49, align 1 %57 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx50 = getelementptr inbounds i8, ptr %57, i64 6 store i8 %56, ptr %arrayidx50, align 1 %58 = load ptr, ptr %src_argb.addr, align 8 %arrayidx51 = getelementptr inbounds i8, ptr %58, i64 7 %59 = load i8, ptr %arrayidx51, align 1 %60 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx52 = getelementptr inbounds i8, ptr %60, i64 7 store i8 %59, ptr %arrayidx52, align 1 %61 = load ptr, ptr %src_argb.addr, align 8 %add.ptr53 = getelementptr inbounds i8, ptr %61, i64 8 store ptr %add.ptr53, ptr %src_argb.addr, align 8 %62 = load ptr, ptr %dst_argb.addr, align 8 %add.ptr54 = getelementptr inbounds i8, ptr %62, i64 8 store ptr %add.ptr54, ptr %dst_argb.addr, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr %luma1) #10 call void @llvm.lifetime.end.p0(i64 8, ptr %luma0) #10 br label %for.inc for.inc: ; preds = %for.body %63 = load i32, ptr %i, align 4 %add55 = add nsw i32 %63, 2 store i32 %add55, ptr %i, align 4 br label %for.cond, !llvm.loop !170 for.end: ; preds = %for.cond %64 = load i32, ptr %width.addr, align 4 %and56 = and i32 %64, 1 %tobool = icmp ne i32 %and56, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 8, ptr %luma057) #10 %65 = load ptr, ptr %src_argb.addr, align 8 %arrayidx58 = getelementptr inbounds i8, ptr %65, i64 0 %66 = load i8, ptr %arrayidx58, align 1 %conv59 = zext i8 %66 to i32 %67 = load i32, ptr %bc, align 4 %mul60 = mul i32 %conv59, %67 %68 = load ptr, ptr %src_argb.addr, align 8 %arrayidx61 = getelementptr inbounds i8, ptr %68, i64 1 %69 = load i8, ptr %arrayidx61, align 1 %conv62 = zext i8 %69 to i32 %70 = load i32, ptr %gc, align 4 %mul63 = mul i32 %conv62, %70 %add64 = add i32 %mul60, %mul63 %71 = load ptr, ptr %src_argb.addr, align 8 %arrayidx65 = getelementptr inbounds i8, ptr %71, i64 2 %72 = load i8, ptr %arrayidx65, align 1 %conv66 = zext i8 %72 to i32 %73 = load i32, ptr %rc, align 4 %mul67 = mul i32 %conv66, %73 %add68 = add i32 %add64, %mul67 %and69 = and i32 %add68, 32512 %74 = load ptr, ptr %luma.addr, align 8 %idx.ext70 = zext i32 %and69 to i64 %add.ptr71 = getelementptr inbounds nuw i8, ptr %74, i64 %idx.ext70 store ptr %add.ptr71, ptr %luma057, align 8 %75 = load ptr, ptr %luma057, align 8 %76 = load ptr, ptr %src_argb.addr, align 8 %arrayidx72 = getelementptr inbounds i8, ptr %76, i64 0 %77 = load i8, ptr %arrayidx72, align 1 %idxprom73 = zext i8 %77 to i64 %arrayidx74 = getelementptr inbounds nuw i8, ptr %75, i64 %idxprom73 %78 = load i8, ptr %arrayidx74, align 1 %79 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx75 = getelementptr inbounds i8, ptr %79, i64 0 store i8 %78, ptr %arrayidx75, align 1 %80 = load ptr, ptr %luma057, align 8 %81 = load ptr, ptr %src_argb.addr, align 8 %arrayidx76 = getelementptr inbounds i8, ptr %81, i64 1 %82 = load i8, ptr %arrayidx76, align 1 %idxprom77 = zext i8 %82 to i64 %arrayidx78 = getelementptr inbounds nuw i8, ptr %80, i64 %idxprom77 %83 = load i8, ptr %arrayidx78, align 1 %84 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx79 = getelementptr inbounds i8, ptr %84, i64 1 store i8 %83, ptr %arrayidx79, align 1 %85 = load ptr, ptr %luma057, align 8 %86 = load ptr, ptr %src_argb.addr, align 8 %arrayidx80 = getelementptr inbounds i8, ptr %86, i64 2 %87 = load i8, ptr %arrayidx80, align 1 %idxprom81 = zext i8 %87 to i64 %arrayidx82 = getelementptr inbounds nuw i8, ptr %85, i64 %idxprom81 %88 = load i8, ptr %arrayidx82, align 1 %89 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx83 = getelementptr inbounds i8, ptr %89, i64 2 store i8 %88, ptr %arrayidx83, align 1 %90 = load ptr, ptr %src_argb.addr, align 8 %arrayidx84 = getelementptr inbounds i8, ptr %90, i64 3 %91 = load i8, ptr %arrayidx84, align 1 %92 = load ptr, ptr %dst_argb.addr, align 8 %arrayidx85 = getelementptr inbounds i8, ptr %92, i64 3 store i8 %91, ptr %arrayidx85, align 1 call void @llvm.lifetime.end.p0(i64 8, ptr %luma057) #10 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %rc) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %gc) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %bc) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBCopyAlphaRow_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 3 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 3 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 7 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 7 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %dst.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 8 store ptr %add.ptr, ptr %dst.addr, align 8 %9 = load ptr, ptr %src.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %9, i64 8 store ptr %add.ptr4, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %10 = load i32, ptr %i, align 4 %add = add nsw i32 %10, 2 store i32 %add, ptr %i, align 4 br label %for.cond, !llvm.loop !171 for.end: ; preds = %for.cond %11 = load i32, ptr %width.addr, align 4 %and = and i32 %11, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %12 = load ptr, ptr %src.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx6, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBExtractAlphaRow_C(ptr noundef %src_argb, ptr noundef %dst_a, i32 noundef %width) #0 { entry: %src_argb.addr = alloca ptr, align 8 %dst_a.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src_argb, ptr %src_argb.addr, align 8 store ptr %dst_a, ptr %dst_a.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_argb.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 3 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_a.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src_argb.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 7 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_a.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 1 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %dst_a.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 2 store ptr %add.ptr, ptr %dst_a.addr, align 8 %9 = load ptr, ptr %src_argb.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %9, i64 8 store ptr %add.ptr4, ptr %src_argb.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %10 = load i32, ptr %i, align 4 %add = add nsw i32 %10, 2 store i32 %add, ptr %i, align 4 br label %for.cond, !llvm.loop !172 for.end: ; preds = %for.cond %11 = load i32, ptr %width.addr, align 4 %and = and i32 %11, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %12 = load ptr, ptr %src_argb.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 3 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst_a.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 0 store i8 %13, ptr %arrayidx6, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ARGBCopyYToAlphaRow_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 3 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 1 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 7 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %dst.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %8, i64 8 store ptr %add.ptr, ptr %dst.addr, align 8 %9 = load ptr, ptr %src.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %9, i64 2 store ptr %add.ptr4, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %10 = load i32, ptr %i, align 4 %add = add nsw i32 %10, 2 store i32 %add, ptr %i, align 4 br label %for.cond, !llvm.loop !173 for.end: ; preds = %for.cond %11 = load i32, ptr %width.addr, align 4 %and = and i32 %11, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %12 = load ptr, ptr %src.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %12, i64 0 %13 = load i8, ptr %arrayidx5, align 1 %14 = load ptr, ptr %dst.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %14, i64 3 store i8 %13, ptr %arrayidx6, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToRGB565Row_SSSE3(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_rgb565, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_rgb565.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_rgb565, ptr %dst_rgb565.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_rgb565.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToRGB565Row_SSE2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 2 %17 = load ptr, ptr %dst_rgb565.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_rgb565.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !174 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @I422ToARGBRow_SSSE3(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: null_pointer_is_valid declare void @ARGBToRGB565Row_SSE2(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGB1555Row_SSSE3(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_argb1555, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_argb1555.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_argb1555, ptr %dst_argb1555.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_argb1555.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToARGB1555Row_SSE2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 2 %17 = load ptr, ptr %dst_argb1555.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_argb1555.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !175 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @ARGBToARGB1555Row_SSE2(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGB4444Row_SSSE3(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_argb4444, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_argb4444.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_argb4444, ptr %dst_argb4444.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_argb4444.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToARGB4444Row_SSE2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 2 %17 = load ptr, ptr %dst_argb4444.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_argb4444.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !176 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @ARGBToARGB4444Row_SSE2(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToRGB565Row_SSSE3(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_rgb565, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_rgb565.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_rgb565, ptr %dst_rgb565.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_uv.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %yuvconstants.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @NV12ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %4, ptr noundef %arraydecay, ptr noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_rgb565.addr, align 8 %8 = load i32, ptr %twidth, align 4 call void @ARGBToRGB565Row_SSE2(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8) %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %9 to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load ptr, ptr %src_uv.addr, align 8 %idx.ext3 = sext i32 %11 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %12, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_uv.addr, align 8 %13 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %13, 2 %14 = load ptr, ptr %dst_rgb565.addr, align 8 %idx.ext5 = sext i32 %mul to i64 %add.ptr6 = getelementptr inbounds i8, ptr %14, i64 %idx.ext5 store ptr %add.ptr6, ptr %dst_rgb565.addr, align 8 %15 = load i32, ptr %twidth, align 4 %16 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %16, %15 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !177 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @NV12ToARGBRow_SSSE3(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToRGB24Row_SSSE3(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_rgb24, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_uv.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %yuvconstants.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @NV12ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %4, ptr noundef %arraydecay, ptr noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_rgb24.addr, align 8 %8 = load i32, ptr %twidth, align 4 call void @ARGBToRGB24Row_SSSE3(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8) %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %9 to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load ptr, ptr %src_uv.addr, align 8 %idx.ext3 = sext i32 %11 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %12, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_uv.addr, align 8 %13 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %13, 3 %14 = load ptr, ptr %dst_rgb24.addr, align 8 %idx.ext5 = sext i32 %mul to i64 %add.ptr6 = getelementptr inbounds i8, ptr %14, i64 %idx.ext5 store ptr %add.ptr6, ptr %dst_rgb24.addr, align 8 %15 = load i32, ptr %twidth, align 4 %16 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %16, %15 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !178 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @ARGBToRGB24Row_SSSE3(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV21ToRGB24Row_SSSE3(ptr noundef %src_y, ptr noundef %src_vu, ptr noundef %dst_rgb24, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_vu.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_vu, ptr %src_vu.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_vu.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %yuvconstants.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @NV21ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %4, ptr noundef %arraydecay, ptr noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_rgb24.addr, align 8 %8 = load i32, ptr %twidth, align 4 call void @ARGBToRGB24Row_SSSE3(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8) %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %9 to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load ptr, ptr %src_vu.addr, align 8 %idx.ext3 = sext i32 %11 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %12, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_vu.addr, align 8 %13 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %13, 3 %14 = load ptr, ptr %dst_rgb24.addr, align 8 %idx.ext5 = sext i32 %mul to i64 %add.ptr6 = getelementptr inbounds i8, ptr %14, i64 %idx.ext5 store ptr %add.ptr6, ptr %dst_rgb24.addr, align 8 %15 = load i32, ptr %twidth, align 4 %16 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %16, %15 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !179 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @NV21ToARGBRow_SSSE3(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToRGB24Row_AVX2(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_rgb24, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_uv.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %yuvconstants.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @NV12ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %arraydecay, ptr noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_rgb24.addr, align 8 %8 = load i32, ptr %twidth, align 4 call void @ARGBToRGB24Row_AVX2(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8) %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %9 to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load ptr, ptr %src_uv.addr, align 8 %idx.ext3 = sext i32 %11 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %12, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_uv.addr, align 8 %13 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %13, 3 %14 = load ptr, ptr %dst_rgb24.addr, align 8 %idx.ext5 = sext i32 %mul to i64 %add.ptr6 = getelementptr inbounds i8, ptr %14, i64 %idx.ext5 store ptr %add.ptr6, ptr %dst_rgb24.addr, align 8 %15 = load i32, ptr %twidth, align 4 %16 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %16, %15 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !180 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @NV12ToARGBRow_AVX2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: null_pointer_is_valid declare void @ARGBToRGB24Row_AVX2(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV21ToRGB24Row_AVX2(ptr noundef %src_y, ptr noundef %src_vu, ptr noundef %dst_rgb24, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_vu.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_vu, ptr %src_vu.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_vu.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %yuvconstants.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @NV21ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %arraydecay, ptr noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_rgb24.addr, align 8 %8 = load i32, ptr %twidth, align 4 call void @ARGBToRGB24Row_AVX2(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8) %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %9 to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load ptr, ptr %src_vu.addr, align 8 %idx.ext3 = sext i32 %11 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %12, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_vu.addr, align 8 %13 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %13, 3 %14 = load ptr, ptr %dst_rgb24.addr, align 8 %idx.ext5 = sext i32 %mul to i64 %add.ptr6 = getelementptr inbounds i8, ptr %14, i64 %idx.ext5 store ptr %add.ptr6, ptr %dst_rgb24.addr, align 8 %15 = load i32, ptr %twidth, align 4 %16 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %16, %15 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !181 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @NV21ToARGBRow_AVX2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToRGB565Row_AVX2(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_rgb565, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_rgb565.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_rgb565, ptr %dst_rgb565.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_rgb565.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToRGB565Row_SSE2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 2 %17 = load ptr, ptr %dst_rgb565.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_rgb565.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !182 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @I422ToARGBRow_AVX2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGB1555Row_AVX2(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_argb1555, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_argb1555.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_argb1555, ptr %dst_argb1555.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_argb1555.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToARGB1555Row_SSE2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 2 %17 = load ptr, ptr %dst_argb1555.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_argb1555.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !183 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToARGB4444Row_AVX2(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_argb4444, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_argb4444.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_argb4444, ptr %dst_argb4444.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_argb4444.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToARGB4444Row_SSE2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 2 %17 = load ptr, ptr %dst_argb4444.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_argb4444.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !184 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I422ToRGB24Row_AVX2(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_rgb24, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I422ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_rgb24.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToRGB24Row_AVX2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %div = sdiv i32 %12, 2 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %div to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %div5 = sdiv i32 %14, 2 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext6 = sext i32 %div5 to i64 %add.ptr7 = getelementptr inbounds i8, ptr %15, i64 %idx.ext6 store ptr %add.ptr7, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 3 %17 = load ptr, ptr %dst_rgb24.addr, align 8 %idx.ext8 = sext i32 %mul to i64 %add.ptr9 = getelementptr inbounds i8, ptr %17, i64 %idx.ext8 store ptr %add.ptr9, ptr %dst_rgb24.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !185 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @I444ToRGB24Row_AVX2(ptr noundef %src_y, ptr noundef %src_u, ptr noundef %src_v, ptr noundef %dst_rgb24, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_u.addr = alloca ptr, align 8 %src_v.addr = alloca ptr, align 8 %dst_rgb24.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_u, ptr %src_u.addr, align 8 store ptr %src_v, ptr %src_v.addr, align 8 store ptr %dst_rgb24, ptr %dst_rgb24.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_u.addr, align 8 %5 = load ptr, ptr %src_v.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %6 = load ptr, ptr %yuvconstants.addr, align 8 %7 = load i32, ptr %twidth, align 4 call void @I444ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %arraydecay, ptr noundef %6, i32 noundef %7) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %8 = load ptr, ptr %dst_rgb24.addr, align 8 %9 = load i32, ptr %twidth, align 4 call void @ARGBToRGB24Row_AVX2(ptr noundef %arraydecay2, ptr noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %12 = load i32, ptr %twidth, align 4 %13 = load ptr, ptr %src_u.addr, align 8 %idx.ext3 = sext i32 %12 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_u.addr, align 8 %14 = load i32, ptr %twidth, align 4 %15 = load ptr, ptr %src_v.addr, align 8 %idx.ext5 = sext i32 %14 to i64 %add.ptr6 = getelementptr inbounds i8, ptr %15, i64 %idx.ext5 store ptr %add.ptr6, ptr %src_v.addr, align 8 %16 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %16, 3 %17 = load ptr, ptr %dst_rgb24.addr, align 8 %idx.ext7 = sext i32 %mul to i64 %add.ptr8 = getelementptr inbounds i8, ptr %17, i64 %idx.ext7 store ptr %add.ptr8, ptr %dst_rgb24.addr, align 8 %18 = load i32, ptr %twidth, align 4 %19 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %19, %18 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !186 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @I444ToARGBRow_AVX2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV12ToRGB565Row_AVX2(ptr noundef %src_y, ptr noundef %src_uv, ptr noundef %dst_rgb565, ptr noundef %yuvconstants, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_uv.addr = alloca ptr, align 8 %dst_rgb565.addr = alloca ptr, align 8 %yuvconstants.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_rgb565, ptr %dst_rgb565.addr, align 8 store ptr %yuvconstants, ptr %yuvconstants.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_y.addr, align 8 %4 = load ptr, ptr %src_uv.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %yuvconstants.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @NV12ToARGBRow_AVX2(ptr noundef %3, ptr noundef %4, ptr noundef %arraydecay, ptr noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_rgb565.addr, align 8 %8 = load i32, ptr %twidth, align 4 call void @ARGBToRGB565Row_SSE2(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8) %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %src_y.addr, align 8 %idx.ext = sext i32 %9 to i64 %add.ptr = getelementptr inbounds i8, ptr %10, i64 %idx.ext store ptr %add.ptr, ptr %src_y.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load ptr, ptr %src_uv.addr, align 8 %idx.ext3 = sext i32 %11 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %12, i64 %idx.ext3 store ptr %add.ptr4, ptr %src_uv.addr, align 8 %13 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %13, 2 %14 = load ptr, ptr %dst_rgb565.addr, align 8 %idx.ext5 = sext i32 %mul to i64 %add.ptr6 = getelementptr inbounds i8, ptr %14, i64 %idx.ext5 store ptr %add.ptr6, ptr %dst_rgb565.addr, align 8 %15 = load i32, ptr %twidth, align 4 %16 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %16, %15 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !187 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToYJRow_AVX2(ptr noundef %src_rgb24, ptr noundef %dst_yj, i32 noundef %width) #0 { entry: %src_rgb24.addr = alloca ptr, align 8 %dst_yj.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_rgb24, ptr %src_rgb24.addr, align 8 store ptr %dst_yj, ptr %dst_yj.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_rgb24.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %4 = load i32, ptr %twidth, align 4 call void @RGB24ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %arraydecay, i32 noundef %4) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %dst_yj.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @ARGBToYJRow_AVX2(ptr noundef %arraydecay2, ptr noundef %5, i32 noundef %6) %7 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %7, 3 %8 = load ptr, ptr %src_rgb24.addr, align 8 %idx.ext = sext i32 %mul to i64 %add.ptr = getelementptr inbounds i8, ptr %8, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb24.addr, align 8 %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %dst_yj.addr, align 8 %idx.ext3 = sext i32 %9 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 %idx.ext3 store ptr %add.ptr4, ptr %dst_yj.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %12, %11 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !188 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @RGB24ToARGBRow_SSSE3(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: null_pointer_is_valid declare void @ARGBToYJRow_AVX2(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToYJRow_AVX2(ptr noundef %src_raw, ptr noundef %dst_yj, i32 noundef %width) #0 { entry: %src_raw.addr = alloca ptr, align 8 %dst_yj.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_raw, ptr %src_raw.addr, align 8 store ptr %dst_yj, ptr %dst_yj.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_raw.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %4 = load i32, ptr %twidth, align 4 call void @RAWToARGBRow_SSSE3(ptr noundef %3, ptr noundef %arraydecay, i32 noundef %4) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %dst_yj.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @ARGBToYJRow_AVX2(ptr noundef %arraydecay2, ptr noundef %5, i32 noundef %6) %7 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %7, 3 %8 = load ptr, ptr %src_raw.addr, align 8 %idx.ext = sext i32 %mul to i64 %add.ptr = getelementptr inbounds i8, ptr %8, i64 %idx.ext store ptr %add.ptr, ptr %src_raw.addr, align 8 %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %dst_yj.addr, align 8 %idx.ext3 = sext i32 %9 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 %idx.ext3 store ptr %add.ptr4, ptr %dst_yj.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %12, %11 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !189 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @RAWToARGBRow_SSSE3(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RGB24ToYJRow_SSSE3(ptr noundef %src_rgb24, ptr noundef %dst_yj, i32 noundef %width) #0 { entry: %src_rgb24.addr = alloca ptr, align 8 %dst_yj.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_rgb24, ptr %src_rgb24.addr, align 8 store ptr %dst_yj, ptr %dst_yj.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_rgb24.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %4 = load i32, ptr %twidth, align 4 call void @RGB24ToARGBRow_SSSE3(ptr noundef %3, ptr noundef %arraydecay, i32 noundef %4) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %dst_yj.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @ARGBToYJRow_SSSE3(ptr noundef %arraydecay2, ptr noundef %5, i32 noundef %6) %7 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %7, 3 %8 = load ptr, ptr %src_rgb24.addr, align 8 %idx.ext = sext i32 %mul to i64 %add.ptr = getelementptr inbounds i8, ptr %8, i64 %idx.ext store ptr %add.ptr, ptr %src_rgb24.addr, align 8 %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %dst_yj.addr, align 8 %idx.ext3 = sext i32 %9 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 %idx.ext3 store ptr %add.ptr4, ptr %dst_yj.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %12, %11 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !190 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @ARGBToYJRow_SSSE3(ptr noundef, ptr noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @RAWToYJRow_SSSE3(ptr noundef %src_raw, ptr noundef %dst_yj, i32 noundef %width) #0 { entry: %src_raw.addr = alloca ptr, align 8 %dst_yj.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %row = alloca [8192 x i8], align 32 %twidth = alloca i32, align 4 store ptr %src_raw, ptr %src_raw.addr, align 8 store ptr %dst_yj, ptr %dst_yj.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 8192, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 8192, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %3 = load ptr, ptr %src_raw.addr, align 8 %arraydecay = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %4 = load i32, ptr %twidth, align 4 call void @RAWToARGBRow_SSSE3(ptr noundef %3, ptr noundef %arraydecay, i32 noundef %4) %arraydecay2 = getelementptr inbounds [8192 x i8], ptr %row, i64 0, i64 0 %5 = load ptr, ptr %dst_yj.addr, align 8 %6 = load i32, ptr %twidth, align 4 call void @ARGBToYJRow_SSSE3(ptr noundef %arraydecay2, ptr noundef %5, i32 noundef %6) %7 = load i32, ptr %twidth, align 4 %mul = mul nsw i32 %7, 3 %8 = load ptr, ptr %src_raw.addr, align 8 %idx.ext = sext i32 %mul to i64 %add.ptr = getelementptr inbounds i8, ptr %8, i64 %idx.ext store ptr %add.ptr, ptr %src_raw.addr, align 8 %9 = load i32, ptr %twidth, align 4 %10 = load ptr, ptr %dst_yj.addr, align 8 %idx.ext3 = sext i32 %9 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %10, i64 %idx.ext3 store ptr %add.ptr4, ptr %dst_yj.addr, align 8 %11 = load i32, ptr %twidth, align 4 %12 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %12, %11 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !191 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 8192, ptr %row) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @InterpolateRow_16To8_AVX2(ptr noundef %dst_ptr, ptr noundef %src_ptr, i64 noundef %src_stride, i32 noundef %scale, i32 noundef %width, i32 noundef %source_y_fraction) #0 { entry: %dst_ptr.addr = alloca ptr, align 8 %src_ptr.addr = alloca ptr, align 8 %src_stride.addr = alloca i64, align 8 %scale.addr = alloca i32, align 4 %width.addr = alloca i32, align 4 %source_y_fraction.addr = alloca i32, align 4 %row = alloca [2048 x i16], align 32 %twidth = alloca i32, align 4 store ptr %dst_ptr, ptr %dst_ptr.addr, align 8 store ptr %src_ptr, ptr %src_ptr.addr, align 8 store i64 %src_stride, ptr %src_stride.addr, align 8 store i32 %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 store i32 %source_y_fraction, ptr %source_y_fraction.addr, align 4 call void @llvm.lifetime.start.p0(i64 4096, ptr %row) #10 call void @llvm.memset.p0.i64(ptr align 32 %row, i8 -86, i64 4096, i1 false), !annotation !4 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load i32, ptr %width.addr, align 4 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond call void @llvm.lifetime.start.p0(i64 4, ptr %twidth) #10 %1 = load i32, ptr %width.addr, align 4 %cmp1 = icmp sgt i32 %1, 2048 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %while.body br label %cond.end cond.false: ; preds = %while.body %2 = load i32, ptr %width.addr, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 2048, %cond.true ], [ %2, %cond.false ] store i32 %cond, ptr %twidth, align 4 %arraydecay = getelementptr inbounds [2048 x i16], ptr %row, i64 0, i64 0 %3 = load ptr, ptr %src_ptr.addr, align 8 %4 = load i64, ptr %src_stride.addr, align 8 %5 = load i32, ptr %twidth, align 4 %6 = load i32, ptr %source_y_fraction.addr, align 4 call void @InterpolateRow_16_C(ptr noundef %arraydecay, ptr noundef %3, i64 noundef %4, i32 noundef %5, i32 noundef %6) %arraydecay2 = getelementptr inbounds [2048 x i16], ptr %row, i64 0, i64 0 %7 = load ptr, ptr %dst_ptr.addr, align 8 %8 = load i32, ptr %scale.addr, align 4 %9 = load i32, ptr %twidth, align 4 call void @Convert16To8Row_AVX2(ptr noundef %arraydecay2, ptr noundef %7, i32 noundef %8, i32 noundef %9) %10 = load i32, ptr %twidth, align 4 %11 = load ptr, ptr %src_ptr.addr, align 8 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i16, ptr %11, i64 %idx.ext store ptr %add.ptr, ptr %src_ptr.addr, align 8 %12 = load i32, ptr %twidth, align 4 %13 = load ptr, ptr %dst_ptr.addr, align 8 %idx.ext3 = sext i32 %12 to i64 %add.ptr4 = getelementptr inbounds i8, ptr %13, i64 %idx.ext3 store ptr %add.ptr4, ptr %dst_ptr.addr, align 8 %14 = load i32, ptr %twidth, align 4 %15 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %15, %14 store i32 %sub, ptr %width.addr, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %twidth) #10 br label %while.cond, !llvm.loop !192 while.end: ; preds = %while.cond call void @llvm.lifetime.end.p0(i64 4096, ptr %row) #10 ret void } ; Function Attrs: null_pointer_is_valid declare void @Convert16To8Row_AVX2(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden float @ScaleSumSamples_C(ptr noundef %src, ptr noundef %dst, float noundef %scale, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %scale.addr = alloca float, align 4 %width.addr = alloca i32, align 4 %fsum = alloca float, align 4 %i = alloca i32, align 4 %v = alloca float, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store float %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %fsum) #10 store float 0.000000e+00, ptr %fsum, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %v) #10 %2 = load ptr, ptr %src.addr, align 8 %incdec.ptr = getelementptr inbounds nuw float, ptr %2, i32 1 store ptr %incdec.ptr, ptr %src.addr, align 8 %3 = load float, ptr %2, align 4 store float %3, ptr %v, align 4 %4 = load float, ptr %v, align 4 %5 = load float, ptr %v, align 4 %mul = fmul float %4, %5 %6 = load float, ptr %fsum, align 4 %add = fadd float %6, %mul store float %add, ptr %fsum, align 4 %7 = load float, ptr %v, align 4 %8 = load float, ptr %scale.addr, align 4 %mul1 = fmul float %7, %8 %9 = load ptr, ptr %dst.addr, align 8 %incdec.ptr2 = getelementptr inbounds nuw float, ptr %9, i32 1 store ptr %incdec.ptr2, ptr %dst.addr, align 8 store float %mul1, ptr %9, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %v) #10 br label %for.inc for.inc: ; preds = %for.body %10 = load i32, ptr %i, align 4 %inc = add nsw i32 %10, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !193 for.end: ; preds = %for.cond %11 = load float, ptr %fsum, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fsum) #10 ret float %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden float @ScaleMaxSamples_C(ptr noundef %src, ptr noundef %dst, float noundef %scale, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %scale.addr = alloca float, align 4 %width.addr = alloca i32, align 4 %fmax = alloca float, align 4 %i = alloca i32, align 4 %v = alloca float, align 4 %vs = alloca float, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store float %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %fmax) #10 store float 0.000000e+00, ptr %fmax, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 4, ptr %v) #10 %2 = load ptr, ptr %src.addr, align 8 %incdec.ptr = getelementptr inbounds nuw float, ptr %2, i32 1 store ptr %incdec.ptr, ptr %src.addr, align 8 %3 = load float, ptr %2, align 4 store float %3, ptr %v, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %vs) #10 %4 = load float, ptr %v, align 4 %5 = load float, ptr %scale.addr, align 4 %mul = fmul float %4, %5 store float %mul, ptr %vs, align 4 %6 = load float, ptr %v, align 4 %7 = load float, ptr %fmax, align 4 %cmp1 = fcmp ogt float %6, %7 br i1 %cmp1, label %cond.true, label %cond.false cond.true: ; preds = %for.body %8 = load float, ptr %v, align 4 br label %cond.end cond.false: ; preds = %for.body %9 = load float, ptr %fmax, align 4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi float [ %8, %cond.true ], [ %9, %cond.false ] store float %cond, ptr %fmax, align 4 %10 = load float, ptr %vs, align 4 %11 = load ptr, ptr %dst.addr, align 8 %incdec.ptr2 = getelementptr inbounds nuw float, ptr %11, i32 1 store ptr %incdec.ptr2, ptr %dst.addr, align 8 store float %10, ptr %11, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %vs) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %v) #10 br label %for.inc for.inc: ; preds = %cond.end %12 = load i32, ptr %i, align 4 %inc = add nsw i32 %12, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !194 for.end: ; preds = %for.cond %13 = load float, ptr %fmax, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 call void @llvm.lifetime.end.p0(i64 4, ptr %fmax) #10 ret float %13 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @ScaleSamples_C(ptr noundef %src, ptr noundef %dst, float noundef %scale, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %scale.addr = alloca float, align 4 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store float %scale, ptr %scale.addr, align 4 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src.addr, align 8 %incdec.ptr = getelementptr inbounds nuw float, ptr %2, i32 1 store ptr %incdec.ptr, ptr %src.addr, align 8 %3 = load float, ptr %2, align 4 %4 = load float, ptr %scale.addr, align 4 %mul = fmul float %3, %4 %5 = load ptr, ptr %dst.addr, align 8 %incdec.ptr1 = getelementptr inbounds nuw float, ptr %5, i32 1 store ptr %incdec.ptr1, ptr %dst.addr, align 8 store float %mul, ptr %5, align 4 br label %for.inc for.inc: ; preds = %for.body %6 = load i32, ptr %i, align 4 %inc = add nsw i32 %6, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !195 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @GaussRow_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src.addr, align 8 %arrayidx = getelementptr inbounds i32, ptr %2, i64 0 %3 = load i32, ptr %arrayidx, align 4 %4 = load ptr, ptr %src.addr, align 8 %arrayidx1 = getelementptr inbounds i32, ptr %4, i64 1 %5 = load i32, ptr %arrayidx1, align 4 %mul = mul i32 %5, 4 %add = add i32 %3, %mul %6 = load ptr, ptr %src.addr, align 8 %arrayidx2 = getelementptr inbounds i32, ptr %6, i64 2 %7 = load i32, ptr %arrayidx2, align 4 %mul3 = mul i32 %7, 6 %add4 = add i32 %add, %mul3 %8 = load ptr, ptr %src.addr, align 8 %arrayidx5 = getelementptr inbounds i32, ptr %8, i64 3 %9 = load i32, ptr %arrayidx5, align 4 %mul6 = mul i32 %9, 4 %add7 = add i32 %add4, %mul6 %10 = load ptr, ptr %src.addr, align 8 %arrayidx8 = getelementptr inbounds i32, ptr %10, i64 4 %11 = load i32, ptr %arrayidx8, align 4 %add9 = add i32 %add7, %11 %add10 = add i32 %add9, 128 %shr = lshr i32 %add10, 8 %conv = trunc i32 %shr to i16 %12 = load ptr, ptr %dst.addr, align 8 %incdec.ptr = getelementptr inbounds nuw i16, ptr %12, i32 1 store ptr %incdec.ptr, ptr %dst.addr, align 8 store i16 %conv, ptr %12, align 2 %13 = load ptr, ptr %src.addr, align 8 %incdec.ptr11 = getelementptr inbounds nuw i32, ptr %13, i32 1 store ptr %incdec.ptr11, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %14 = load i32, ptr %i, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !196 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @GaussCol_C(ptr noundef %src0, ptr noundef %src1, ptr noundef %src2, ptr noundef %src3, ptr noundef %src4, ptr noundef %dst, i32 noundef %width) #0 { entry: %src0.addr = alloca ptr, align 8 %src1.addr = alloca ptr, align 8 %src2.addr = alloca ptr, align 8 %src3.addr = alloca ptr, align 8 %src4.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src0, ptr %src0.addr, align 8 store ptr %src1, ptr %src1.addr, align 8 store ptr %src2, ptr %src2.addr, align 8 store ptr %src3, ptr %src3.addr, align 8 store ptr %src4, ptr %src4.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src0.addr, align 8 %incdec.ptr = getelementptr inbounds nuw i16, ptr %2, i32 1 store ptr %incdec.ptr, ptr %src0.addr, align 8 %3 = load i16, ptr %2, align 2 %conv = zext i16 %3 to i32 %4 = load ptr, ptr %src1.addr, align 8 %incdec.ptr1 = getelementptr inbounds nuw i16, ptr %4, i32 1 store ptr %incdec.ptr1, ptr %src1.addr, align 8 %5 = load i16, ptr %4, align 2 %conv2 = zext i16 %5 to i32 %mul = mul nsw i32 %conv2, 4 %add = add nsw i32 %conv, %mul %6 = load ptr, ptr %src2.addr, align 8 %incdec.ptr3 = getelementptr inbounds nuw i16, ptr %6, i32 1 store ptr %incdec.ptr3, ptr %src2.addr, align 8 %7 = load i16, ptr %6, align 2 %conv4 = zext i16 %7 to i32 %mul5 = mul nsw i32 %conv4, 6 %add6 = add nsw i32 %add, %mul5 %8 = load ptr, ptr %src3.addr, align 8 %incdec.ptr7 = getelementptr inbounds nuw i16, ptr %8, i32 1 store ptr %incdec.ptr7, ptr %src3.addr, align 8 %9 = load i16, ptr %8, align 2 %conv8 = zext i16 %9 to i32 %mul9 = mul nsw i32 %conv8, 4 %add10 = add nsw i32 %add6, %mul9 %10 = load ptr, ptr %src4.addr, align 8 %incdec.ptr11 = getelementptr inbounds nuw i16, ptr %10, i32 1 store ptr %incdec.ptr11, ptr %src4.addr, align 8 %11 = load i16, ptr %10, align 2 %conv12 = zext i16 %11 to i32 %add13 = add nsw i32 %add10, %conv12 %12 = load ptr, ptr %dst.addr, align 8 %incdec.ptr14 = getelementptr inbounds nuw i32, ptr %12, i32 1 store ptr %incdec.ptr14, ptr %dst.addr, align 8 store i32 %add13, ptr %12, align 4 br label %for.inc for.inc: ; preds = %for.body %13 = load i32, ptr %i, align 4 %inc = add nsw i32 %13, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !197 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @GaussRow_F32_C(ptr noundef %src, ptr noundef %dst, i32 noundef %width) #0 { entry: %src.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src, ptr %src.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src.addr, align 8 %arrayidx = getelementptr inbounds float, ptr %2, i64 0 %3 = load float, ptr %arrayidx, align 4 %4 = load ptr, ptr %src.addr, align 8 %arrayidx1 = getelementptr inbounds float, ptr %4, i64 1 %5 = load float, ptr %arrayidx1, align 4 %mul = fmul float %5, 4.000000e+00 %add = fadd float %3, %mul %6 = load ptr, ptr %src.addr, align 8 %arrayidx2 = getelementptr inbounds float, ptr %6, i64 2 %7 = load float, ptr %arrayidx2, align 4 %mul3 = fmul float %7, 6.000000e+00 %add4 = fadd float %add, %mul3 %8 = load ptr, ptr %src.addr, align 8 %arrayidx5 = getelementptr inbounds float, ptr %8, i64 3 %9 = load float, ptr %arrayidx5, align 4 %mul6 = fmul float %9, 4.000000e+00 %add7 = fadd float %add4, %mul6 %10 = load ptr, ptr %src.addr, align 8 %arrayidx8 = getelementptr inbounds float, ptr %10, i64 4 %11 = load float, ptr %arrayidx8, align 4 %add9 = fadd float %add7, %11 %mul10 = fmul float %add9, 3.906250e-03 %12 = load ptr, ptr %dst.addr, align 8 %incdec.ptr = getelementptr inbounds nuw float, ptr %12, i32 1 store ptr %incdec.ptr, ptr %dst.addr, align 8 store float %mul10, ptr %12, align 4 %13 = load ptr, ptr %src.addr, align 8 %incdec.ptr11 = getelementptr inbounds nuw float, ptr %13, i32 1 store ptr %incdec.ptr11, ptr %src.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %14 = load i32, ptr %i, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !198 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @GaussCol_F32_C(ptr noundef %src0, ptr noundef %src1, ptr noundef %src2, ptr noundef %src3, ptr noundef %src4, ptr noundef %dst, i32 noundef %width) #0 { entry: %src0.addr = alloca ptr, align 8 %src1.addr = alloca ptr, align 8 %src2.addr = alloca ptr, align 8 %src3.addr = alloca ptr, align 8 %src4.addr = alloca ptr, align 8 %dst.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %i = alloca i32, align 4 store ptr %src0, ptr %src0.addr, align 8 store ptr %src1, ptr %src1.addr, align 8 store ptr %src2, ptr %src2.addr, align 8 store ptr %src3, ptr %src3.addr, align 8 store ptr %src4, ptr %src4.addr, align 8 store ptr %dst, ptr %dst.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %i) #10 store i32 -1431655766, ptr %i, align 4, !annotation !4 store i32 0, ptr %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %i, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src0.addr, align 8 %incdec.ptr = getelementptr inbounds nuw float, ptr %2, i32 1 store ptr %incdec.ptr, ptr %src0.addr, align 8 %3 = load float, ptr %2, align 4 %4 = load ptr, ptr %src1.addr, align 8 %incdec.ptr1 = getelementptr inbounds nuw float, ptr %4, i32 1 store ptr %incdec.ptr1, ptr %src1.addr, align 8 %5 = load float, ptr %4, align 4 %mul = fmul float %5, 4.000000e+00 %add = fadd float %3, %mul %6 = load ptr, ptr %src2.addr, align 8 %incdec.ptr2 = getelementptr inbounds nuw float, ptr %6, i32 1 store ptr %incdec.ptr2, ptr %src2.addr, align 8 %7 = load float, ptr %6, align 4 %mul3 = fmul float %7, 6.000000e+00 %add4 = fadd float %add, %mul3 %8 = load ptr, ptr %src3.addr, align 8 %incdec.ptr5 = getelementptr inbounds nuw float, ptr %8, i32 1 store ptr %incdec.ptr5, ptr %src3.addr, align 8 %9 = load float, ptr %8, align 4 %mul6 = fmul float %9, 4.000000e+00 %add7 = fadd float %add4, %mul6 %10 = load ptr, ptr %src4.addr, align 8 %incdec.ptr8 = getelementptr inbounds nuw float, ptr %10, i32 1 store ptr %incdec.ptr8, ptr %src4.addr, align 8 %11 = load float, ptr %10, align 4 %add9 = fadd float %add7, %11 %12 = load ptr, ptr %dst.addr, align 8 %incdec.ptr10 = getelementptr inbounds nuw float, ptr %12, i32 1 store ptr %incdec.ptr10, ptr %dst.addr, align 8 store float %add9, ptr %12, align 4 br label %for.inc for.inc: ; preds = %for.body %13 = load i32, ptr %i, align 4 %inc = add nsw i32 %13, 1 store i32 %inc, ptr %i, align 4 br label %for.cond, !llvm.loop !199 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %i) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @NV21ToYUV24Row_C(ptr noundef %src_y, ptr noundef %src_vu, ptr noundef %dst_yuv24, i32 noundef %width) #0 { entry: %src_y.addr = alloca ptr, align 8 %src_vu.addr = alloca ptr, align 8 %dst_yuv24.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_y, ptr %src_y.addr, align 8 store ptr %src_vu, ptr %src_vu.addr, align 8 store ptr %dst_yuv24, ptr %dst_yuv24.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_vu.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0 store i8 %3, ptr %arrayidx1, align 1 %5 = load ptr, ptr %src_vu.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %5, i64 1 %6 = load i8, ptr %arrayidx2, align 1 %7 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 1 store i8 %6, ptr %arrayidx3, align 1 %8 = load ptr, ptr %src_y.addr, align 8 %arrayidx4 = getelementptr inbounds i8, ptr %8, i64 0 %9 = load i8, ptr %arrayidx4, align 1 %10 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 2 store i8 %9, ptr %arrayidx5, align 1 %11 = load ptr, ptr %src_vu.addr, align 8 %arrayidx6 = getelementptr inbounds i8, ptr %11, i64 0 %12 = load i8, ptr %arrayidx6, align 1 %13 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx7 = getelementptr inbounds i8, ptr %13, i64 3 store i8 %12, ptr %arrayidx7, align 1 %14 = load ptr, ptr %src_vu.addr, align 8 %arrayidx8 = getelementptr inbounds i8, ptr %14, i64 1 %15 = load i8, ptr %arrayidx8, align 1 %16 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx9 = getelementptr inbounds i8, ptr %16, i64 4 store i8 %15, ptr %arrayidx9, align 1 %17 = load ptr, ptr %src_y.addr, align 8 %arrayidx10 = getelementptr inbounds i8, ptr %17, i64 1 %18 = load i8, ptr %arrayidx10, align 1 %19 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx11 = getelementptr inbounds i8, ptr %19, i64 5 store i8 %18, ptr %arrayidx11, align 1 %20 = load ptr, ptr %src_y.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %20, i64 2 store ptr %add.ptr, ptr %src_y.addr, align 8 %21 = load ptr, ptr %src_vu.addr, align 8 %add.ptr12 = getelementptr inbounds i8, ptr %21, i64 2 store ptr %add.ptr12, ptr %src_vu.addr, align 8 %22 = load ptr, ptr %dst_yuv24.addr, align 8 %add.ptr13 = getelementptr inbounds i8, ptr %22, i64 6 store ptr %add.ptr13, ptr %dst_yuv24.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %23 = load i32, ptr %x, align 4 %add = add nsw i32 %23, 2 store i32 %add, ptr %x, align 4 br label %for.cond, !llvm.loop !200 for.end: ; preds = %for.cond %24 = load i32, ptr %width.addr, align 4 %and = and i32 %24, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %25 = load ptr, ptr %src_vu.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %25, i64 0 %26 = load i8, ptr %arrayidx14, align 1 %27 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %27, i64 0 store i8 %26, ptr %arrayidx15, align 1 %28 = load ptr, ptr %src_vu.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %28, i64 1 %29 = load i8, ptr %arrayidx16, align 1 %30 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %30, i64 1 store i8 %29, ptr %arrayidx17, align 1 %31 = load ptr, ptr %src_y.addr, align 8 %arrayidx18 = getelementptr inbounds i8, ptr %31, i64 0 %32 = load i8, ptr %arrayidx18, align 1 %33 = load ptr, ptr %dst_yuv24.addr, align 8 %arrayidx19 = getelementptr inbounds i8, ptr %33, i64 2 store i8 %32, ptr %arrayidx19, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AYUVToUVRow_C(ptr noundef %src_ayuv, i32 noundef %src_stride_ayuv, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_ayuv.addr = alloca ptr, align 8 %src_stride_ayuv.addr = alloca i32, align 4 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_ayuv, ptr %src_ayuv.addr, align 8 store i32 %src_stride_ayuv, ptr %src_stride_ayuv.addr, align 4 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 1 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 5 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %add = add nsw i32 %conv, %conv2 %6 = load ptr, ptr %src_ayuv.addr, align 8 %7 = load i32, ptr %src_stride_ayuv.addr, align 4 %add3 = add nsw i32 %7, 1 %idxprom = sext i32 %add3 to i64 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 %idxprom %8 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %8 to i32 %add6 = add nsw i32 %add, %conv5 %9 = load ptr, ptr %src_ayuv.addr, align 8 %10 = load i32, ptr %src_stride_ayuv.addr, align 4 %add7 = add nsw i32 %10, 5 %idxprom8 = sext i32 %add7 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %9, i64 %idxprom8 %11 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %11 to i32 %add11 = add nsw i32 %add6, %conv10 %add12 = add nsw i32 %add11, 2 %shr = ashr i32 %add12, 2 %conv13 = trunc i32 %shr to i8 %12 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv13, ptr %arrayidx14, align 1 %13 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %13, i64 0 %14 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %14 to i32 %15 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %15, i64 4 %16 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %16 to i32 %add19 = add nsw i32 %conv16, %conv18 %17 = load ptr, ptr %src_ayuv.addr, align 8 %18 = load i32, ptr %src_stride_ayuv.addr, align 4 %add20 = add nsw i32 %18, 0 %idxprom21 = sext i32 %add20 to i64 %arrayidx22 = getelementptr inbounds i8, ptr %17, i64 %idxprom21 %19 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %19 to i32 %add24 = add nsw i32 %add19, %conv23 %20 = load ptr, ptr %src_ayuv.addr, align 8 %21 = load i32, ptr %src_stride_ayuv.addr, align 4 %add25 = add nsw i32 %21, 4 %idxprom26 = sext i32 %add25 to i64 %arrayidx27 = getelementptr inbounds i8, ptr %20, i64 %idxprom26 %22 = load i8, ptr %arrayidx27, align 1 %conv28 = zext i8 %22 to i32 %add29 = add nsw i32 %add24, %conv28 %add30 = add nsw i32 %add29, 2 %shr31 = ashr i32 %add30, 2 %conv32 = trunc i32 %shr31 to i8 %23 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv32, ptr %arrayidx33, align 1 %24 = load ptr, ptr %src_ayuv.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %24, i64 8 store ptr %add.ptr, ptr %src_ayuv.addr, align 8 %25 = load ptr, ptr %dst_uv.addr, align 8 %add.ptr34 = getelementptr inbounds i8, ptr %25, i64 2 store ptr %add.ptr34, ptr %dst_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %26 = load i32, ptr %x, align 4 %add35 = add nsw i32 %26, 2 store i32 %add35, ptr %x, align 4 br label %for.cond, !llvm.loop !201 for.end: ; preds = %for.cond %27 = load i32, ptr %width.addr, align 4 %and = and i32 %27, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %28 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx36 = getelementptr inbounds i8, ptr %28, i64 1 %29 = load i8, ptr %arrayidx36, align 1 %conv37 = zext i8 %29 to i32 %30 = load ptr, ptr %src_ayuv.addr, align 8 %31 = load i32, ptr %src_stride_ayuv.addr, align 4 %add38 = add nsw i32 %31, 1 %idxprom39 = sext i32 %add38 to i64 %arrayidx40 = getelementptr inbounds i8, ptr %30, i64 %idxprom39 %32 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %32 to i32 %add42 = add nsw i32 %conv37, %conv41 %add43 = add nsw i32 %add42, 1 %shr44 = ashr i32 %add43, 1 %conv45 = trunc i32 %shr44 to i8 %33 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx46 = getelementptr inbounds i8, ptr %33, i64 0 store i8 %conv45, ptr %arrayidx46, align 1 %34 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx47 = getelementptr inbounds i8, ptr %34, i64 0 %35 = load i8, ptr %arrayidx47, align 1 %conv48 = zext i8 %35 to i32 %36 = load ptr, ptr %src_ayuv.addr, align 8 %37 = load i32, ptr %src_stride_ayuv.addr, align 4 %add49 = add nsw i32 %37, 0 %idxprom50 = sext i32 %add49 to i64 %arrayidx51 = getelementptr inbounds i8, ptr %36, i64 %idxprom50 %38 = load i8, ptr %arrayidx51, align 1 %conv52 = zext i8 %38 to i32 %add53 = add nsw i32 %conv48, %conv52 %add54 = add nsw i32 %add53, 1 %shr55 = ashr i32 %add54, 1 %conv56 = trunc i32 %shr55 to i8 %39 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx57 = getelementptr inbounds i8, ptr %39, i64 1 store i8 %conv56, ptr %arrayidx57, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AYUVToVURow_C(ptr noundef %src_ayuv, i32 noundef %src_stride_ayuv, ptr noundef %dst_vu, i32 noundef %width) #0 { entry: %src_ayuv.addr = alloca ptr, align 8 %src_stride_ayuv.addr = alloca i32, align 4 %dst_vu.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_ayuv, ptr %src_ayuv.addr, align 8 store i32 %src_stride_ayuv, ptr %src_stride_ayuv.addr, align 4 store ptr %dst_vu, ptr %dst_vu.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 4 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %add = add nsw i32 %conv, %conv2 %6 = load ptr, ptr %src_ayuv.addr, align 8 %7 = load i32, ptr %src_stride_ayuv.addr, align 4 %add3 = add nsw i32 %7, 0 %idxprom = sext i32 %add3 to i64 %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 %idxprom %8 = load i8, ptr %arrayidx4, align 1 %conv5 = zext i8 %8 to i32 %add6 = add nsw i32 %add, %conv5 %9 = load ptr, ptr %src_ayuv.addr, align 8 %10 = load i32, ptr %src_stride_ayuv.addr, align 4 %add7 = add nsw i32 %10, 4 %idxprom8 = sext i32 %add7 to i64 %arrayidx9 = getelementptr inbounds i8, ptr %9, i64 %idxprom8 %11 = load i8, ptr %arrayidx9, align 1 %conv10 = zext i8 %11 to i32 %add11 = add nsw i32 %add6, %conv10 %add12 = add nsw i32 %add11, 2 %shr = ashr i32 %add12, 2 %conv13 = trunc i32 %shr to i8 %12 = load ptr, ptr %dst_vu.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv13, ptr %arrayidx14, align 1 %13 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx15 = getelementptr inbounds i8, ptr %13, i64 1 %14 = load i8, ptr %arrayidx15, align 1 %conv16 = zext i8 %14 to i32 %15 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx17 = getelementptr inbounds i8, ptr %15, i64 5 %16 = load i8, ptr %arrayidx17, align 1 %conv18 = zext i8 %16 to i32 %add19 = add nsw i32 %conv16, %conv18 %17 = load ptr, ptr %src_ayuv.addr, align 8 %18 = load i32, ptr %src_stride_ayuv.addr, align 4 %add20 = add nsw i32 %18, 1 %idxprom21 = sext i32 %add20 to i64 %arrayidx22 = getelementptr inbounds i8, ptr %17, i64 %idxprom21 %19 = load i8, ptr %arrayidx22, align 1 %conv23 = zext i8 %19 to i32 %add24 = add nsw i32 %add19, %conv23 %20 = load ptr, ptr %src_ayuv.addr, align 8 %21 = load i32, ptr %src_stride_ayuv.addr, align 4 %add25 = add nsw i32 %21, 5 %idxprom26 = sext i32 %add25 to i64 %arrayidx27 = getelementptr inbounds i8, ptr %20, i64 %idxprom26 %22 = load i8, ptr %arrayidx27, align 1 %conv28 = zext i8 %22 to i32 %add29 = add nsw i32 %add24, %conv28 %add30 = add nsw i32 %add29, 2 %shr31 = ashr i32 %add30, 2 %conv32 = trunc i32 %shr31 to i8 %23 = load ptr, ptr %dst_vu.addr, align 8 %arrayidx33 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv32, ptr %arrayidx33, align 1 %24 = load ptr, ptr %src_ayuv.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %24, i64 8 store ptr %add.ptr, ptr %src_ayuv.addr, align 8 %25 = load ptr, ptr %dst_vu.addr, align 8 %add.ptr34 = getelementptr inbounds i8, ptr %25, i64 2 store ptr %add.ptr34, ptr %dst_vu.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %26 = load i32, ptr %x, align 4 %add35 = add nsw i32 %26, 2 store i32 %add35, ptr %x, align 4 br label %for.cond, !llvm.loop !202 for.end: ; preds = %for.cond %27 = load i32, ptr %width.addr, align 4 %and = and i32 %27, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %28 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx36 = getelementptr inbounds i8, ptr %28, i64 0 %29 = load i8, ptr %arrayidx36, align 1 %conv37 = zext i8 %29 to i32 %30 = load ptr, ptr %src_ayuv.addr, align 8 %31 = load i32, ptr %src_stride_ayuv.addr, align 4 %add38 = add nsw i32 %31, 0 %idxprom39 = sext i32 %add38 to i64 %arrayidx40 = getelementptr inbounds i8, ptr %30, i64 %idxprom39 %32 = load i8, ptr %arrayidx40, align 1 %conv41 = zext i8 %32 to i32 %add42 = add nsw i32 %conv37, %conv41 %add43 = add nsw i32 %add42, 1 %shr44 = ashr i32 %add43, 1 %conv45 = trunc i32 %shr44 to i8 %33 = load ptr, ptr %dst_vu.addr, align 8 %arrayidx46 = getelementptr inbounds i8, ptr %33, i64 0 store i8 %conv45, ptr %arrayidx46, align 1 %34 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx47 = getelementptr inbounds i8, ptr %34, i64 1 %35 = load i8, ptr %arrayidx47, align 1 %conv48 = zext i8 %35 to i32 %36 = load ptr, ptr %src_ayuv.addr, align 8 %37 = load i32, ptr %src_stride_ayuv.addr, align 4 %add49 = add nsw i32 %37, 1 %idxprom50 = sext i32 %add49 to i64 %arrayidx51 = getelementptr inbounds i8, ptr %36, i64 %idxprom50 %38 = load i8, ptr %arrayidx51, align 1 %conv52 = zext i8 %38 to i32 %add53 = add nsw i32 %conv48, %conv52 %add54 = add nsw i32 %add53, 1 %shr55 = ashr i32 %add54, 1 %conv56 = trunc i32 %shr55 to i8 %39 = load ptr, ptr %dst_vu.addr, align 8 %arrayidx57 = getelementptr inbounds i8, ptr %39, i64 1 store i8 %conv56, ptr %arrayidx57, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @AYUVToYRow_C(ptr noundef %src_ayuv, ptr noundef %dst_y, i32 noundef %width) #0 { entry: %src_ayuv.addr = alloca ptr, align 8 %dst_y.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_ayuv, ptr %src_ayuv.addr, align 8 store ptr %dst_y, ptr %dst_y.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_ayuv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 2 %3 = load i8, ptr %arrayidx, align 1 %4 = load ptr, ptr %dst_y.addr, align 8 %5 = load i32, ptr %x, align 4 %idxprom = sext i32 %5 to i64 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 %idxprom store i8 %3, ptr %arrayidx1, align 1 %6 = load ptr, ptr %src_ayuv.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %6, i64 4 store ptr %add.ptr, ptr %src_ayuv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %7 = load i32, ptr %x, align 4 %inc = add nsw i32 %7, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !203 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @SwapUVRow_C(ptr noundef %src_uv, ptr noundef %dst_vu, i32 noundef %width) #0 { entry: %src_uv.addr = alloca ptr, align 8 %dst_vu.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 %u = alloca i8, align 1 %v = alloca i8, align 1 store ptr %src_uv, ptr %src_uv.addr, align 8 store ptr %dst_vu, ptr %dst_vu.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start.p0(i64 1, ptr %u) #10 %2 = load ptr, ptr %src_uv.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 store i8 %3, ptr %u, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %v) #10 %4 = load ptr, ptr %src_uv.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 store i8 %5, ptr %v, align 1 %6 = load i8, ptr %v, align 1 %7 = load ptr, ptr %dst_vu.addr, align 8 %arrayidx2 = getelementptr inbounds i8, ptr %7, i64 0 store i8 %6, ptr %arrayidx2, align 1 %8 = load i8, ptr %u, align 1 %9 = load ptr, ptr %dst_vu.addr, align 8 %arrayidx3 = getelementptr inbounds i8, ptr %9, i64 1 store i8 %8, ptr %arrayidx3, align 1 %10 = load ptr, ptr %src_uv.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %10, i64 2 store ptr %add.ptr, ptr %src_uv.addr, align 8 %11 = load ptr, ptr %dst_vu.addr, align 8 %add.ptr4 = getelementptr inbounds i8, ptr %11, i64 2 store ptr %add.ptr4, ptr %dst_vu.addr, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr %v) #10 call void @llvm.lifetime.end.p0(i64 1, ptr %u) #10 br label %for.inc for.inc: ; preds = %for.body %12 = load i32, ptr %x, align 4 %inc = add nsw i32 %12, 1 store i32 %inc, ptr %x, align 4 br label %for.cond, !llvm.loop !204 for.end: ; preds = %for.cond call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @HalfMergeUVRow_C(ptr noundef %src_u, i32 noundef %src_stride_u, ptr noundef %src_v, i32 noundef %src_stride_v, ptr noundef %dst_uv, i32 noundef %width) #0 { entry: %src_u.addr = alloca ptr, align 8 %src_stride_u.addr = alloca i32, align 4 %src_v.addr = alloca ptr, align 8 %src_stride_v.addr = alloca i32, align 4 %dst_uv.addr = alloca ptr, align 8 %width.addr = alloca i32, align 4 %x = alloca i32, align 4 store ptr %src_u, ptr %src_u.addr, align 8 store i32 %src_stride_u, ptr %src_stride_u.addr, align 4 store ptr %src_v, ptr %src_v.addr, align 8 store i32 %src_stride_v, ptr %src_stride_v.addr, align 4 store ptr %dst_uv, ptr %dst_uv.addr, align 8 store i32 %width, ptr %width.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %x) #10 store i32 -1431655766, ptr %x, align 4, !annotation !4 store i32 0, ptr %x, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, ptr %x, align 4 %1 = load i32, ptr %width.addr, align 4 %sub = sub nsw i32 %1, 1 %cmp = icmp slt i32 %0, %sub br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %src_u.addr, align 8 %arrayidx = getelementptr inbounds i8, ptr %2, i64 0 %3 = load i8, ptr %arrayidx, align 1 %conv = zext i8 %3 to i32 %4 = load ptr, ptr %src_u.addr, align 8 %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 1 %5 = load i8, ptr %arrayidx1, align 1 %conv2 = zext i8 %5 to i32 %add = add nsw i32 %conv, %conv2 %6 = load ptr, ptr %src_u.addr, align 8 %7 = load i32, ptr %src_stride_u.addr, align 4 %idxprom = sext i32 %7 to i64 %arrayidx3 = getelementptr inbounds i8, ptr %6, i64 %idxprom %8 = load i8, ptr %arrayidx3, align 1 %conv4 = zext i8 %8 to i32 %add5 = add nsw i32 %add, %conv4 %9 = load ptr, ptr %src_u.addr, align 8 %10 = load i32, ptr %src_stride_u.addr, align 4 %add6 = add nsw i32 %10, 1 %idxprom7 = sext i32 %add6 to i64 %arrayidx8 = getelementptr inbounds i8, ptr %9, i64 %idxprom7 %11 = load i8, ptr %arrayidx8, align 1 %conv9 = zext i8 %11 to i32 %add10 = add nsw i32 %add5, %conv9 %add11 = add nsw i32 %add10, 2 %shr = ashr i32 %add11, 2 %conv12 = trunc i32 %shr to i8 %12 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx13 = getelementptr inbounds i8, ptr %12, i64 0 store i8 %conv12, ptr %arrayidx13, align 1 %13 = load ptr, ptr %src_v.addr, align 8 %arrayidx14 = getelementptr inbounds i8, ptr %13, i64 0 %14 = load i8, ptr %arrayidx14, align 1 %conv15 = zext i8 %14 to i32 %15 = load ptr, ptr %src_v.addr, align 8 %arrayidx16 = getelementptr inbounds i8, ptr %15, i64 1 %16 = load i8, ptr %arrayidx16, align 1 %conv17 = zext i8 %16 to i32 %add18 = add nsw i32 %conv15, %conv17 %17 = load ptr, ptr %src_v.addr, align 8 %18 = load i32, ptr %src_stride_v.addr, align 4 %idxprom19 = sext i32 %18 to i64 %arrayidx20 = getelementptr inbounds i8, ptr %17, i64 %idxprom19 %19 = load i8, ptr %arrayidx20, align 1 %conv21 = zext i8 %19 to i32 %add22 = add nsw i32 %add18, %conv21 %20 = load ptr, ptr %src_v.addr, align 8 %21 = load i32, ptr %src_stride_v.addr, align 4 %add23 = add nsw i32 %21, 1 %idxprom24 = sext i32 %add23 to i64 %arrayidx25 = getelementptr inbounds i8, ptr %20, i64 %idxprom24 %22 = load i8, ptr %arrayidx25, align 1 %conv26 = zext i8 %22 to i32 %add27 = add nsw i32 %add22, %conv26 %add28 = add nsw i32 %add27, 2 %shr29 = ashr i32 %add28, 2 %conv30 = trunc i32 %shr29 to i8 %23 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx31 = getelementptr inbounds i8, ptr %23, i64 1 store i8 %conv30, ptr %arrayidx31, align 1 %24 = load ptr, ptr %src_u.addr, align 8 %add.ptr = getelementptr inbounds i8, ptr %24, i64 2 store ptr %add.ptr, ptr %src_u.addr, align 8 %25 = load ptr, ptr %src_v.addr, align 8 %add.ptr32 = getelementptr inbounds i8, ptr %25, i64 2 store ptr %add.ptr32, ptr %src_v.addr, align 8 %26 = load ptr, ptr %dst_uv.addr, align 8 %add.ptr33 = getelementptr inbounds i8, ptr %26, i64 2 store ptr %add.ptr33, ptr %dst_uv.addr, align 8 br label %for.inc for.inc: ; preds = %for.body %27 = load i32, ptr %x, align 4 %add34 = add nsw i32 %27, 2 store i32 %add34, ptr %x, align 4 br label %for.cond, !llvm.loop !205 for.end: ; preds = %for.cond %28 = load i32, ptr %width.addr, align 4 %and = and i32 %28, 1 %tobool = icmp ne i32 %and, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.end %29 = load ptr, ptr %src_u.addr, align 8 %arrayidx35 = getelementptr inbounds i8, ptr %29, i64 0 %30 = load i8, ptr %arrayidx35, align 1 %conv36 = zext i8 %30 to i32 %31 = load ptr, ptr %src_u.addr, align 8 %32 = load i32, ptr %src_stride_u.addr, align 4 %idxprom37 = sext i32 %32 to i64 %arrayidx38 = getelementptr inbounds i8, ptr %31, i64 %idxprom37 %33 = load i8, ptr %arrayidx38, align 1 %conv39 = zext i8 %33 to i32 %add40 = add nsw i32 %conv36, %conv39 %add41 = add nsw i32 %add40, 1 %shr42 = ashr i32 %add41, 1 %conv43 = trunc i32 %shr42 to i8 %34 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx44 = getelementptr inbounds i8, ptr %34, i64 0 store i8 %conv43, ptr %arrayidx44, align 1 %35 = load ptr, ptr %src_v.addr, align 8 %arrayidx45 = getelementptr inbounds i8, ptr %35, i64 0 %36 = load i8, ptr %arrayidx45, align 1 %conv46 = zext i8 %36 to i32 %37 = load ptr, ptr %src_v.addr, align 8 %38 = load i32, ptr %src_stride_v.addr, align 4 %idxprom47 = sext i32 %38 to i64 %arrayidx48 = getelementptr inbounds i8, ptr %37, i64 %idxprom47 %39 = load i8, ptr %arrayidx48, align 1 %conv49 = zext i8 %39 to i32 %add50 = add nsw i32 %conv46, %conv49 %add51 = add nsw i32 %add50, 1 %shr52 = ashr i32 %add51, 1 %conv53 = trunc i32 %shr52 to i8 %40 = load ptr, ptr %dst_uv.addr, align 8 %arrayidx54 = getelementptr inbounds i8, ptr %40, i64 1 store i8 %conv53, ptr %arrayidx54, align 1 br label %if.end if.end: ; preds = %if.then, %for.end call void @llvm.lifetime.end.p0(i64 4, ptr %x) #10 ret void } ; Function Attrs: nounwind null_pointer_is_valid declare ptr @__memcpy_chk(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.objectsize.i64.p0(ptr, i1 immarg, i1 immarg, i1 immarg) #8 ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @_ZN6libyuvL7Clamp10Ei(i32 noundef %val) #4 { entry: %val.addr = alloca i32, align 4 %v = alloca i32, align 4 store i32 %val, ptr %val.addr, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr %v) #10 %0 = load i32, ptr %val.addr, align 4 %call = call noundef i32 @_ZN6libyuvL6clamp0Ei(i32 noundef %0) store i32 %call, ptr %v, align 4 %1 = load i32, ptr %v, align 4 %call1 = call noundef i32 @_ZN6libyuvL9clamp1023Ei(i32 noundef %1) call void @llvm.lifetime.end.p0(i64 4, ptr %v) #10 ret i32 %call1 } ; Function Attrs: convergent nocallback nofree nosync nounwind willreturn memory(none) declare i1 @llvm.is.constant.i64(i64) #9 ; Function Attrs: convergent nocallback nofree nosync nounwind willreturn memory(none) declare i1 @llvm.is.constant.i32(i32) #9 ; Function Attrs: nounwind null_pointer_is_valid declare ptr @__memset_chk(ptr noundef, i32 noundef, i64 noundef, i64 noundef) #7 attributes #0 = { mustprogress nounwind null_pointer_is_valid ssp uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { alwaysinline nobuiltin nounwind null_pointer_is_valid ssp uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #3 = { alwaysinline mustprogress nounwind "min-legal-vector-width"="0" } attributes #4 = { inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #6 = { null_pointer_is_valid "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #7 = { nounwind null_pointer_is_valid "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #9 = { convergent nocallback nofree nosync nounwind willreturn memory(none) } attributes #10 = { nounwind } !llvm.linker.options = !{} !llvm.module.flags = !{!0, !1, !2, !3} !0 = !{i32 1, !"wchar_size", i32 4} !1 = !{i32 8, !"PIC Level", i32 2} !2 = !{i32 7, !"uwtable", i32 2} !3 = !{i32 7, !"frame-pointer", i32 2} !4 = !{!"auto-init"} !5 = distinct !{!5, !6} !6 = !{!"llvm.loop.mustprogress"} !7 = distinct !{!7, !6} !8 = distinct !{!8, !6} !9 = distinct !{!9, !6} !10 = distinct !{!10, !6} !11 = distinct !{!11, !6} !12 = distinct !{!12, !6} !13 = distinct !{!13, !6} !14 = distinct !{!14, !6} !15 = distinct !{!15, !6} !16 = distinct !{!16, !6} !17 = distinct !{!17, !6} !18 = distinct !{!18, !6} !19 = distinct !{!19, !6} !20 = distinct !{!20, !6} !21 = distinct !{!21, !6} !22 = distinct !{!22, !6} !23 = distinct !{!23, !6} !24 = distinct !{!24, !6} !25 = distinct !{!25, !6} !26 = distinct !{!26, !6} !27 = distinct !{!27, !6} !28 = distinct !{!28, !6} !29 = distinct !{!29, !6} !30 = distinct !{!30, !6} !31 = distinct !{!31, !6} !32 = distinct !{!32, !6} !33 = distinct !{!33, !6} !34 = distinct !{!34, !6} !35 = distinct !{!35, !6} !36 = distinct !{!36, !6} !37 = distinct !{!37, !6} !38 = distinct !{!38, !6} !39 = distinct !{!39, !6} !40 = distinct !{!40, !6} !41 = distinct !{!41, !6} !42 = distinct !{!42, !6} !43 = distinct !{!43, !6} !44 = distinct !{!44, !6} !45 = distinct !{!45, !6} !46 = distinct !{!46, !6} !47 = distinct !{!47, !6} !48 = distinct !{!48, !6} !49 = distinct !{!49, !6} !50 = distinct !{!50, !6} !51 = distinct !{!51, !6} !52 = distinct !{!52, !6} !53 = distinct !{!53, !6} !54 = distinct !{!54, !6} !55 = distinct !{!55, !6} !56 = distinct !{!56, !6} !57 = distinct !{!57, !6} !58 = distinct !{!58, !6} !59 = distinct !{!59, !6} !60 = distinct !{!60, !6} !61 = distinct !{!61, !6} !62 = distinct !{!62, !6} !63 = distinct !{!63, !6} !64 = distinct !{!64, !6} !65 = distinct !{!65, !6} !66 = distinct !{!66, !6} !67 = distinct !{!67, !6} !68 = distinct !{!68, !6} !69 = distinct !{!69, !6} !70 = distinct !{!70, !6} !71 = distinct !{!71, !6} !72 = distinct !{!72, !6} !73 = distinct !{!73, !6} !74 = distinct !{!74, !6} !75 = distinct !{!75, !6} !76 = distinct !{!76, !6} !77 = distinct !{!77, !6} !78 = distinct !{!78, !6} !79 = distinct !{!79, !6} !80 = distinct !{!80, !6} !81 = distinct !{!81, !6} !82 = distinct !{!82, !6} !83 = distinct !{!83, !6} !84 = distinct !{!84, !6} !85 = distinct !{!85, !6} !86 = distinct !{!86, !6} !87 = distinct !{!87, !6} !88 = distinct !{!88, !6} !89 = distinct !{!89, !6} !90 = distinct !{!90, !6} !91 = distinct !{!91, !6} !92 = distinct !{!92, !6} !93 = distinct !{!93, !6} !94 = distinct !{!94, !6} !95 = distinct !{!95, !6} !96 = distinct !{!96, !6} !97 = distinct !{!97, !6} !98 = distinct !{!98, !6} !99 = distinct !{!99, !6} !100 = distinct !{!100, !6} !101 = distinct !{!101, !6} !102 = distinct !{!102, !6} !103 = distinct !{!103, !6} !104 = distinct !{!104, !6} !105 = distinct !{!105, !6} !106 = distinct !{!106, !6} !107 = distinct !{!107, !6} !108 = distinct !{!108, !6} !109 = distinct !{!109, !6} !110 = distinct !{!110, !6} !111 = distinct !{!111, !6} !112 = distinct !{!112, !6} !113 = distinct !{!113, !6} !114 = distinct !{!114, !6} !115 = distinct !{!115, !6} !116 = distinct !{!116, !6} !117 = distinct !{!117, !6} !118 = distinct !{!118, !6} !119 = distinct !{!119, !6} !120 = distinct !{!120, !6} !121 = distinct !{!121, !6} !122 = distinct !{!122, !6} !123 = distinct !{!123, !6} !124 = distinct !{!124, !6} !125 = distinct !{!125, !6} !126 = distinct !{!126, !6} !127 = distinct !{!127, !6} !128 = distinct !{!128, !6} !129 = distinct !{!129, !6} !130 = distinct !{!130, !6} !131 = distinct !{!131, !6} !132 = distinct !{!132, !6} !133 = distinct !{!133, !6} !134 = distinct !{!134, !6} !135 = distinct !{!135, !6} !136 = distinct !{!136, !6} !137 = distinct !{!137, !6} !138 = distinct !{!138, !6} !139 = distinct !{!139, !6} !140 = distinct !{!140, !6} !141 = distinct !{!141, !6} !142 = distinct !{!142, !6} !143 = distinct !{!143, !6} !144 = distinct !{!144, !6} !145 = distinct !{!145, !6} !146 = distinct !{!146, !6} !147 = distinct !{!147, !6} !148 = distinct !{!148, !6} !149 = distinct !{!149, !6} !150 = distinct !{!150, !6} !151 = distinct !{!151, !6} !152 = distinct !{!152, !6} !153 = distinct !{!153, !6} !154 = distinct !{!154, !6} !155 = distinct !{!155, !6} !156 = distinct !{!156, !6} !157 = distinct !{!157, !6} !158 = distinct !{!158, !6} !159 = distinct !{!159, !6} !160 = distinct !{!160, !6} !161 = distinct !{!161, !6} !162 = distinct !{!162, !6} !163 = distinct !{!163, !6} !164 = distinct !{!164, !6} !165 = distinct !{!165, !6} !166 = distinct !{!166, !6} !167 = distinct !{!167, !6} !168 = distinct !{!168, !6} !169 = distinct !{!169, !6} !170 = distinct !{!170, !6} !171 = distinct !{!171, !6} !172 = distinct !{!172, !6} !173 = distinct !{!173, !6} !174 = distinct !{!174, !6} !175 = distinct !{!175, !6} !176 = distinct !{!176, !6} !177 = distinct !{!177, !6} !178 = distinct !{!178, !6} !179 = distinct !{!179, !6} !180 = distinct !{!180, !6} !181 = distinct !{!181, !6} !182 = distinct !{!182, !6} !183 = distinct !{!183, !6} !184 = distinct !{!184, !6} !185 = distinct !{!185, !6} !186 = distinct !{!186, !6} !187 = distinct !{!187, !6} !188 = distinct !{!188, !6} !189 = distinct !{!189, !6} !190 = distinct !{!190, !6} !191 = distinct !{!191, !6} !192 = distinct !{!192, !6} !193 = distinct !{!193, !6} !194 = distinct !{!194, !6} !195 = distinct !{!195, !6} !196 = distinct !{!196, !6} !197 = distinct !{!197, !6} !198 = distinct !{!198, !6} !199 = distinct !{!199, !6} !200 = distinct !{!200, !6} !201 = distinct !{!201, !6} !202 = distinct !{!202, !6} !203 = distinct !{!203, !6} !204 = distinct !{!204, !6} !205 = distinct !{!205, !6}