527 lines
21 KiB
LLVM
527 lines
21 KiB
LLVM
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 } |