define dso_local i32 @x264_pixel_sad_16x16(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 br label %7 7: %8 = phi i32 [ 0, %4 ], [ %24, %7 ] %9 = phi i32 [ 0, %4 ], [ %21, %7 ] %10 = phi i8* [ %0, %4 ], [ %22, %7 ] %11 = phi i8* [ %2, %4 ], [ %23, %7 ] %12 = bitcast i8* %10 to <16 x i8>* %13 = load <16 x i8>, <16 x i8>* %12, align 1 %14 = zext <16 x i8> %13 to <16 x i32> %15 = bitcast i8* %11 to <16 x i8>* %16 = load <16 x i8>, <16 x i8>* %15, align 1 %17 = zext <16 x i8> %16 to <16 x i32> %18 = sub nsw <16 x i32> %14, %17 %19 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %18, i1 true) %20 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %19) %21 = add nsw i32 %20, %9 %22 = getelementptr inbounds i8, i8* %10, i64 %5 %23 = getelementptr inbounds i8, i8* %11, i64 %6 %24 = add nuw nsw i32 %8, 1 %25 = icmp eq i32 %24, 16 br i1 %25, label %26, label %7 26: ret i32 %21 } define dso_local i32 @x264_pixel_sad_16x8(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 %7 = bitcast i8* %0 to <16 x i8>* %8 = load <16 x i8>, <16 x i8>* %7, align 1 %9 = zext <16 x i8> %8 to <16 x i32> %10 = bitcast i8* %2 to <16 x i8>* %11 = load <16 x i8>, <16 x i8>* %10, align 1 %12 = zext <16 x i8> %11 to <16 x i32> %13 = sub nsw <16 x i32> %9, %12 %14 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %13, i1 true) %15 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %14) %16 = getelementptr inbounds i8, i8* %0, i64 %5 %17 = getelementptr inbounds i8, i8* %2, i64 %6 %18 = bitcast i8* %16 to <16 x i8>* %19 = load <16 x i8>, <16 x i8>* %18, align 1 %20 = zext <16 x i8> %19 to <16 x i32> %21 = bitcast i8* %17 to <16 x i8>* %22 = load <16 x i8>, <16 x i8>* %21, align 1 %23 = zext <16 x i8> %22 to <16 x i32> %24 = sub nsw <16 x i32> %20, %23 %25 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %24, i1 true) %26 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %25) %27 = add nsw i32 %26, %15 %28 = getelementptr inbounds i8, i8* %16, i64 %5 %29 = getelementptr inbounds i8, i8* %17, i64 %6 %30 = bitcast i8* %28 to <16 x i8>* %31 = load <16 x i8>, <16 x i8>* %30, align 1 %32 = zext <16 x i8> %31 to <16 x i32> %33 = bitcast i8* %29 to <16 x i8>* %34 = load <16 x i8>, <16 x i8>* %33, align 1 %35 = zext <16 x i8> %34 to <16 x i32> %36 = sub nsw <16 x i32> %32, %35 %37 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %36, i1 true) %38 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %37) %39 = add nsw i32 %38, %27 %40 = getelementptr inbounds i8, i8* %28, i64 %5 %41 = getelementptr inbounds i8, i8* %29, i64 %6 %42 = bitcast i8* %40 to <16 x i8>* %43 = load <16 x i8>, <16 x i8>* %42, align 1 %44 = zext <16 x i8> %43 to <16 x i32> %45 = bitcast i8* %41 to <16 x i8>* %46 = load <16 x i8>, <16 x i8>* %45, align 1 %47 = zext <16 x i8> %46 to <16 x i32> %48 = sub nsw <16 x i32> %44, %47 %49 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %48, i1 true) %50 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %49) %51 = add nsw i32 %50, %39 %52 = getelementptr inbounds i8, i8* %40, i64 %5 %53 = getelementptr inbounds i8, i8* %41, i64 %6 %54 = bitcast i8* %52 to <16 x i8>* %55 = load <16 x i8>, <16 x i8>* %54, align 1 %56 = zext <16 x i8> %55 to <16 x i32> %57 = bitcast i8* %53 to <16 x i8>* %58 = load <16 x i8>, <16 x i8>* %57, align 1 %59 = zext <16 x i8> %58 to <16 x i32> %60 = sub nsw <16 x i32> %56, %59 %61 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %60, i1 true) %62 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %61) %63 = add nsw i32 %62, %51 %64 = getelementptr inbounds i8, i8* %52, i64 %5 %65 = getelementptr inbounds i8, i8* %53, i64 %6 %66 = bitcast i8* %64 to <16 x i8>* %67 = load <16 x i8>, <16 x i8>* %66, align 1 %68 = zext <16 x i8> %67 to <16 x i32> %69 = bitcast i8* %65 to <16 x i8>* %70 = load <16 x i8>, <16 x i8>* %69, align 1 %71 = zext <16 x i8> %70 to <16 x i32> %72 = sub nsw <16 x i32> %68, %71 %73 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %72, i1 true) %74 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %73) %75 = add nsw i32 %74, %63 %76 = getelementptr inbounds i8, i8* %64, i64 %5 %77 = getelementptr inbounds i8, i8* %65, i64 %6 %78 = bitcast i8* %76 to <16 x i8>* %79 = load <16 x i8>, <16 x i8>* %78, align 1 %80 = zext <16 x i8> %79 to <16 x i32> %81 = bitcast i8* %77 to <16 x i8>* %82 = load <16 x i8>, <16 x i8>* %81, align 1 %83 = zext <16 x i8> %82 to <16 x i32> %84 = sub nsw <16 x i32> %80, %83 %85 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %84, i1 true) %86 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %85) %87 = add nsw i32 %86, %75 %88 = getelementptr inbounds i8, i8* %76, i64 %5 %89 = getelementptr inbounds i8, i8* %77, i64 %6 %90 = bitcast i8* %88 to <16 x i8>* %91 = load <16 x i8>, <16 x i8>* %90, align 1 %92 = zext <16 x i8> %91 to <16 x i32> %93 = bitcast i8* %89 to <16 x i8>* %94 = load <16 x i8>, <16 x i8>* %93, align 1 %95 = zext <16 x i8> %94 to <16 x i32> %96 = sub nsw <16 x i32> %92, %95 %97 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %96, i1 true) %98 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %97) %99 = add nsw i32 %98, %87 ret i32 %99 } define dso_local i32 @x264_pixel_sad_8x16(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 br label %7 7: %8 = phi i32 [ 0, %4 ], [ %24, %7 ] %9 = phi i32 [ 0, %4 ], [ %21, %7 ] %10 = phi i8* [ %0, %4 ], [ %22, %7 ] %11 = phi i8* [ %2, %4 ], [ %23, %7 ] %12 = bitcast i8* %10 to <8 x i8>* %13 = load <8 x i8>, <8 x i8>* %12, align 1 %14 = zext <8 x i8> %13 to <8 x i32> %15 = bitcast i8* %11 to <8 x i8>* %16 = load <8 x i8>, <8 x i8>* %15, align 1 %17 = zext <8 x i8> %16 to <8 x i32> %18 = sub nsw <8 x i32> %14, %17 %19 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %18, i1 true) %20 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %19) %21 = add nsw i32 %20, %9 %22 = getelementptr inbounds i8, i8* %10, i64 %5 %23 = getelementptr inbounds i8, i8* %11, i64 %6 %24 = add nuw nsw i32 %8, 1 %25 = icmp eq i32 %24, 16 br i1 %25, label %26, label %7 26: ret i32 %21 } define dso_local i32 @x264_pixel_sad_8x8(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 %7 = bitcast i8* %0 to <8 x i8>* %8 = load <8 x i8>, <8 x i8>* %7, align 1 %9 = zext <8 x i8> %8 to <8 x i32> %10 = bitcast i8* %2 to <8 x i8>* %11 = load <8 x i8>, <8 x i8>* %10, align 1 %12 = zext <8 x i8> %11 to <8 x i32> %13 = sub nsw <8 x i32> %9, %12 %14 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %13, i1 true) %15 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %14) %16 = getelementptr inbounds i8, i8* %0, i64 %5 %17 = getelementptr inbounds i8, i8* %2, i64 %6 %18 = bitcast i8* %16 to <8 x i8>* %19 = load <8 x i8>, <8 x i8>* %18, align 1 %20 = zext <8 x i8> %19 to <8 x i32> %21 = bitcast i8* %17 to <8 x i8>* %22 = load <8 x i8>, <8 x i8>* %21, align 1 %23 = zext <8 x i8> %22 to <8 x i32> %24 = sub nsw <8 x i32> %20, %23 %25 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %24, i1 true) %26 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %25) %27 = add nsw i32 %26, %15 %28 = getelementptr inbounds i8, i8* %16, i64 %5 %29 = getelementptr inbounds i8, i8* %17, i64 %6 %30 = bitcast i8* %28 to <8 x i8>* %31 = load <8 x i8>, <8 x i8>* %30, align 1 %32 = zext <8 x i8> %31 to <8 x i32> %33 = bitcast i8* %29 to <8 x i8>* %34 = load <8 x i8>, <8 x i8>* %33, align 1 %35 = zext <8 x i8> %34 to <8 x i32> %36 = sub nsw <8 x i32> %32, %35 %37 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %36, i1 true) %38 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %37) %39 = add nsw i32 %38, %27 %40 = getelementptr inbounds i8, i8* %28, i64 %5 %41 = getelementptr inbounds i8, i8* %29, i64 %6 %42 = bitcast i8* %40 to <8 x i8>* %43 = load <8 x i8>, <8 x i8>* %42, align 1 %44 = zext <8 x i8> %43 to <8 x i32> %45 = bitcast i8* %41 to <8 x i8>* %46 = load <8 x i8>, <8 x i8>* %45, align 1 %47 = zext <8 x i8> %46 to <8 x i32> %48 = sub nsw <8 x i32> %44, %47 %49 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %48, i1 true) %50 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %49) %51 = add nsw i32 %50, %39 %52 = getelementptr inbounds i8, i8* %40, i64 %5 %53 = getelementptr inbounds i8, i8* %41, i64 %6 %54 = bitcast i8* %52 to <8 x i8>* %55 = load <8 x i8>, <8 x i8>* %54, align 1 %56 = zext <8 x i8> %55 to <8 x i32> %57 = bitcast i8* %53 to <8 x i8>* %58 = load <8 x i8>, <8 x i8>* %57, align 1 %59 = zext <8 x i8> %58 to <8 x i32> %60 = sub nsw <8 x i32> %56, %59 %61 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %60, i1 true) %62 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %61) %63 = add nsw i32 %62, %51 %64 = getelementptr inbounds i8, i8* %52, i64 %5 %65 = getelementptr inbounds i8, i8* %53, i64 %6 %66 = bitcast i8* %64 to <8 x i8>* %67 = load <8 x i8>, <8 x i8>* %66, align 1 %68 = zext <8 x i8> %67 to <8 x i32> %69 = bitcast i8* %65 to <8 x i8>* %70 = load <8 x i8>, <8 x i8>* %69, align 1 %71 = zext <8 x i8> %70 to <8 x i32> %72 = sub nsw <8 x i32> %68, %71 %73 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %72, i1 true) %74 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %73) %75 = add nsw i32 %74, %63 %76 = getelementptr inbounds i8, i8* %64, i64 %5 %77 = getelementptr inbounds i8, i8* %65, i64 %6 %78 = bitcast i8* %76 to <8 x i8>* %79 = load <8 x i8>, <8 x i8>* %78, align 1 %80 = zext <8 x i8> %79 to <8 x i32> %81 = bitcast i8* %77 to <8 x i8>* %82 = load <8 x i8>, <8 x i8>* %81, align 1 %83 = zext <8 x i8> %82 to <8 x i32> %84 = sub nsw <8 x i32> %80, %83 %85 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %84, i1 true) %86 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %85) %87 = add nsw i32 %86, %75 %88 = getelementptr inbounds i8, i8* %76, i64 %5 %89 = getelementptr inbounds i8, i8* %77, i64 %6 %90 = bitcast i8* %88 to <8 x i8>* %91 = load <8 x i8>, <8 x i8>* %90, align 1 %92 = zext <8 x i8> %91 to <8 x i32> %93 = bitcast i8* %89 to <8 x i8>* %94 = load <8 x i8>, <8 x i8>* %93, align 1 %95 = zext <8 x i8> %94 to <8 x i32> %96 = sub nsw <8 x i32> %92, %95 %97 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %96, i1 true) %98 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %97) %99 = add nsw i32 %98, %87 ret i32 %99 } define dso_local i32 @x264_pixel_sad_8x4(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 %7 = bitcast i8* %0 to <8 x i8>* %8 = load <8 x i8>, <8 x i8>* %7, align 1 %9 = zext <8 x i8> %8 to <8 x i32> %10 = bitcast i8* %2 to <8 x i8>* %11 = load <8 x i8>, <8 x i8>* %10, align 1 %12 = zext <8 x i8> %11 to <8 x i32> %13 = sub nsw <8 x i32> %9, %12 %14 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %13, i1 true) %15 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %14) %16 = getelementptr inbounds i8, i8* %0, i64 %5 %17 = getelementptr inbounds i8, i8* %2, i64 %6 %18 = bitcast i8* %16 to <8 x i8>* %19 = load <8 x i8>, <8 x i8>* %18, align 1 %20 = zext <8 x i8> %19 to <8 x i32> %21 = bitcast i8* %17 to <8 x i8>* %22 = load <8 x i8>, <8 x i8>* %21, align 1 %23 = zext <8 x i8> %22 to <8 x i32> %24 = sub nsw <8 x i32> %20, %23 %25 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %24, i1 true) %26 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %25) %27 = add nsw i32 %26, %15 %28 = getelementptr inbounds i8, i8* %16, i64 %5 %29 = getelementptr inbounds i8, i8* %17, i64 %6 %30 = bitcast i8* %28 to <8 x i8>* %31 = load <8 x i8>, <8 x i8>* %30, align 1 %32 = zext <8 x i8> %31 to <8 x i32> %33 = bitcast i8* %29 to <8 x i8>* %34 = load <8 x i8>, <8 x i8>* %33, align 1 %35 = zext <8 x i8> %34 to <8 x i32> %36 = sub nsw <8 x i32> %32, %35 %37 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %36, i1 true) %38 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %37) %39 = add nsw i32 %38, %27 %40 = getelementptr inbounds i8, i8* %28, i64 %5 %41 = getelementptr inbounds i8, i8* %29, i64 %6 %42 = bitcast i8* %40 to <8 x i8>* %43 = load <8 x i8>, <8 x i8>* %42, align 1 %44 = zext <8 x i8> %43 to <8 x i32> %45 = bitcast i8* %41 to <8 x i8>* %46 = load <8 x i8>, <8 x i8>* %45, align 1 %47 = zext <8 x i8> %46 to <8 x i32> %48 = sub nsw <8 x i32> %44, %47 %49 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %48, i1 true) %50 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %49) %51 = add nsw i32 %50, %39 ret i32 %51 } define dso_local i32 @x264_pixel_sad_4x8(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 br label %7 7: %8 = phi i32 [ 0, %4 ], [ %48, %7 ] %9 = phi i32 [ 0, %4 ], [ %45, %7 ] %10 = phi i8* [ %0, %4 ], [ %46, %7 ] %11 = phi i8* [ %2, %4 ], [ %47, %7 ] %12 = load i8, i8* %10, align 1 %13 = zext i8 %12 to i32 %14 = load i8, i8* %11, align 1 %15 = zext i8 %14 to i32 %16 = sub nsw i32 %13, %15 %17 = tail call i32 @llvm.abs.i32(i32 %16, i1 true) %18 = add nsw i32 %17, %9 %19 = getelementptr inbounds i8, i8* %10, i64 1 %20 = load i8, i8* %19, align 1 %21 = zext i8 %20 to i32 %22 = getelementptr inbounds i8, i8* %11, i64 1 %23 = load i8, i8* %22, align 1 %24 = zext i8 %23 to i32 %25 = sub nsw i32 %21, %24 %26 = tail call i32 @llvm.abs.i32(i32 %25, i1 true) %27 = add nsw i32 %26, %18 %28 = getelementptr inbounds i8, i8* %10, i64 2 %29 = load i8, i8* %28, align 1 %30 = zext i8 %29 to i32 %31 = getelementptr inbounds i8, i8* %11, i64 2 %32 = load i8, i8* %31, align 1 %33 = zext i8 %32 to i32 %34 = sub nsw i32 %30, %33 %35 = tail call i32 @llvm.abs.i32(i32 %34, i1 true) %36 = add nsw i32 %35, %27 %37 = getelementptr inbounds i8, i8* %10, i64 3 %38 = load i8, i8* %37, align 1 %39 = zext i8 %38 to i32 %40 = getelementptr inbounds i8, i8* %11, i64 3 %41 = load i8, i8* %40, align 1 %42 = zext i8 %41 to i32 %43 = sub nsw i32 %39, %42 %44 = tail call i32 @llvm.abs.i32(i32 %43, i1 true) %45 = add nsw i32 %44, %36 %46 = getelementptr inbounds i8, i8* %10, i64 %5 %47 = getelementptr inbounds i8, i8* %11, i64 %6 %48 = add nuw nsw i32 %8, 1 %49 = icmp eq i32 %48, 8 br i1 %49, label %50, label %7 50: ret i32 %45 } define dso_local i32 @x264_pixel_sad_4x4(i8* nocapture readonly %0, i32 %1, i8* nocapture readonly %2, i32 %3) local_unnamed_addr #0 { %5 = sext i32 %1 to i64 %6 = sext i32 %3 to i64 %7 = load i8, i8* %0, align 1 %8 = zext i8 %7 to i32 %9 = load i8, i8* %2, align 1 %10 = zext i8 %9 to i32 %11 = sub nsw i32 %8, %10 %12 = tail call i32 @llvm.abs.i32(i32 %11, i1 true) %13 = getelementptr inbounds i8, i8* %0, i64 1 %14 = load i8, i8* %13, align 1 %15 = zext i8 %14 to i32 %16 = getelementptr inbounds i8, i8* %2, i64 1 %17 = load i8, i8* %16, align 1 %18 = zext i8 %17 to i32 %19 = sub nsw i32 %15, %18 %20 = tail call i32 @llvm.abs.i32(i32 %19, i1 true) %21 = add nuw nsw i32 %20, %12 %22 = getelementptr inbounds i8, i8* %0, i64 2 %23 = load i8, i8* %22, align 1 %24 = zext i8 %23 to i32 %25 = getelementptr inbounds i8, i8* %2, i64 2 %26 = load i8, i8* %25, align 1 %27 = zext i8 %26 to i32 %28 = sub nsw i32 %24, %27 %29 = tail call i32 @llvm.abs.i32(i32 %28, i1 true) %30 = add nuw nsw i32 %29, %21 %31 = getelementptr inbounds i8, i8* %0, i64 3 %32 = load i8, i8* %31, align 1 %33 = zext i8 %32 to i32 %34 = getelementptr inbounds i8, i8* %2, i64 3 %35 = load i8, i8* %34, align 1 %36 = zext i8 %35 to i32 %37 = sub nsw i32 %33, %36 %38 = tail call i32 @llvm.abs.i32(i32 %37, i1 true) %39 = add nuw nsw i32 %38, %30 %40 = getelementptr inbounds i8, i8* %0, i64 %5 %41 = getelementptr inbounds i8, i8* %2, i64 %6 %42 = load i8, i8* %40, align 1 %43 = zext i8 %42 to i32 %44 = load i8, i8* %41, align 1 %45 = zext i8 %44 to i32 %46 = sub nsw i32 %43, %45 %47 = tail call i32 @llvm.abs.i32(i32 %46, i1 true) %48 = add nuw nsw i32 %47, %39 %49 = getelementptr inbounds i8, i8* %40, i64 1 %50 = load i8, i8* %49, align 1 %51 = zext i8 %50 to i32 %52 = getelementptr inbounds i8, i8* %41, i64 1 %53 = load i8, i8* %52, align 1 %54 = zext i8 %53 to i32 %55 = sub nsw i32 %51, %54 %56 = tail call i32 @llvm.abs.i32(i32 %55, i1 true) %57 = add nuw nsw i32 %56, %48 %58 = getelementptr inbounds i8, i8* %40, i64 2 %59 = load i8, i8* %58, align 1 %60 = zext i8 %59 to i32 %61 = getelementptr inbounds i8, i8* %41, i64 2 %62 = load i8, i8* %61, align 1 %63 = zext i8 %62 to i32 %64 = sub nsw i32 %60, %63 %65 = tail call i32 @llvm.abs.i32(i32 %64, i1 true) %66 = add nuw nsw i32 %65, %57 %67 = getelementptr inbounds i8, i8* %40, i64 3 %68 = load i8, i8* %67, align 1 %69 = zext i8 %68 to i32 %70 = getelementptr inbounds i8, i8* %41, i64 3 %71 = load i8, i8* %70, align 1 %72 = zext i8 %71 to i32 %73 = sub nsw i32 %69, %72 %74 = tail call i32 @llvm.abs.i32(i32 %73, i1 true) %75 = add nuw nsw i32 %74, %66 %76 = getelementptr inbounds i8, i8* %40, i64 %5 %77 = getelementptr inbounds i8, i8* %41, i64 %6 %78 = load i8, i8* %76, align 1 %79 = zext i8 %78 to i32 %80 = load i8, i8* %77, align 1 %81 = zext i8 %80 to i32 %82 = sub nsw i32 %79, %81 %83 = tail call i32 @llvm.abs.i32(i32 %82, i1 true) %84 = add nuw nsw i32 %83, %75 %85 = getelementptr inbounds i8, i8* %76, i64 1 %86 = load i8, i8* %85, align 1 %87 = zext i8 %86 to i32 %88 = getelementptr inbounds i8, i8* %77, i64 1 %89 = load i8, i8* %88, align 1 %90 = zext i8 %89 to i32 %91 = sub nsw i32 %87, %90 %92 = tail call i32 @llvm.abs.i32(i32 %91, i1 true) %93 = add nuw nsw i32 %92, %84 %94 = getelementptr inbounds i8, i8* %76, i64 2 %95 = load i8, i8* %94, align 1 %96 = zext i8 %95 to i32 %97 = getelementptr inbounds i8, i8* %77, i64 2 %98 = load i8, i8* %97, align 1 %99 = zext i8 %98 to i32 %100 = sub nsw i32 %96, %99 %101 = tail call i32 @llvm.abs.i32(i32 %100, i1 true) %102 = add nuw nsw i32 %101, %93 %103 = getelementptr inbounds i8, i8* %76, i64 3 %104 = load i8, i8* %103, align 1 %105 = zext i8 %104 to i32 %106 = getelementptr inbounds i8, i8* %77, i64 3 %107 = load i8, i8* %106, align 1 %108 = zext i8 %107 to i32 %109 = sub nsw i32 %105, %108 %110 = tail call i32 @llvm.abs.i32(i32 %109, i1 true) %111 = add nuw nsw i32 %110, %102 %112 = getelementptr inbounds i8, i8* %76, i64 %5 %113 = getelementptr inbounds i8, i8* %77, i64 %6 %114 = load i8, i8* %112, align 1 %115 = zext i8 %114 to i32 %116 = load i8, i8* %113, align 1 %117 = zext i8 %116 to i32 %118 = sub nsw i32 %115, %117 %119 = tail call i32 @llvm.abs.i32(i32 %118, i1 true) %120 = add nuw nsw i32 %119, %111 %121 = getelementptr inbounds i8, i8* %112, i64 1 %122 = load i8, i8* %121, align 1 %123 = zext i8 %122 to i32 %124 = getelementptr inbounds i8, i8* %113, i64 1 %125 = load i8, i8* %124, align 1 %126 = zext i8 %125 to i32 %127 = sub nsw i32 %123, %126 %128 = tail call i32 @llvm.abs.i32(i32 %127, i1 true) %129 = add nuw nsw i32 %128, %120 %130 = getelementptr inbounds i8, i8* %112, i64 2 %131 = load i8, i8* %130, align 1 %132 = zext i8 %131 to i32 %133 = getelementptr inbounds i8, i8* %113, i64 2 %134 = load i8, i8* %133, align 1 %135 = zext i8 %134 to i32 %136 = sub nsw i32 %132, %135 %137 = tail call i32 @llvm.abs.i32(i32 %136, i1 true) %138 = add nuw nsw i32 %137, %129 %139 = getelementptr inbounds i8, i8* %112, i64 3 %140 = load i8, i8* %139, align 1 %141 = zext i8 %140 to i32 %142 = getelementptr inbounds i8, i8* %113, i64 3 %143 = load i8, i8* %142, align 1 %144 = zext i8 %143 to i32 %145 = sub nsw i32 %141, %144 %146 = tail call i32 @llvm.abs.i32(i32 %145, i1 true) %147 = add nuw nsw i32 %146, %138 ret i32 %147 } declare i32 @llvm.abs.i32(i32, i1 immarg) #1 declare <16 x i32> @llvm.abs.v16i32(<16 x i32>, i1 immarg) #1 declare i32 @llvm.vector.reduce.add.v16i32(<16 x i32>) #2 declare <8 x i32> @llvm.abs.v8i32(<8 x i32>, i1 immarg) #1 declare i32 @llvm.vector.reduce.add.v8i32(<8 x i32>) #2 declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, i1 immarg) #1 declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #2 attributes #0 = { nofree nosync nounwind readonly uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+neon,+outline-atomics" } attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } attributes #2 = { nofree nosync nounwind readnone willreturn }