527 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -mtriple=riscv64 -mattr=+m,+v,+unaligned-vector-mem \3; RUN: -passes=slp-vectorizer -S < %s | FileCheck %s4; Function Attrs: nounwind uwtable vscale_range(8,1024)5define i32 @x264_pixel_satd_8x4(ptr %pix1, i32 %i_pix1, ptr %pix2, i32 %i_pix2) {6; CHECK-LABEL: define i32 @x264_pixel_satd_8x4(7; CHECK-SAME: ptr [[PIX1:%.*]], i32 [[I_PIX1:%.*]], ptr [[PIX2:%.*]], i32 [[I_PIX2:%.*]]) #[[ATTR0:[0-9]+]] {8; CHECK-NEXT: [[ENTRY:.*:]]9; CHECK-NEXT: [[IDX_EXT:%.*]] = sext i32 [[I_PIX1]] to i6410; CHECK-NEXT: [[IDX_EXT63:%.*]] = sext i32 [[I_PIX2]] to i6411; CHECK-NEXT: [[ARRAYIDX3:%.*]] = getelementptr inbounds nuw i8, ptr [[PIX1]], i64 412; CHECK-NEXT: [[ARRAYIDX5:%.*]] = getelementptr inbounds nuw i8, ptr [[PIX2]], i64 413; CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i8, ptr [[PIX1]], i64 [[IDX_EXT]]14; CHECK-NEXT: [[ADD_PTR64:%.*]] = getelementptr inbounds i8, ptr [[PIX2]], i64 [[IDX_EXT63]]15; CHECK-NEXT: [[ARRAYIDX3_1:%.*]] = getelementptr inbounds nuw i8, ptr [[ADD_PTR]], i64 416; CHECK-NEXT: [[ARRAYIDX5_1:%.*]] = getelementptr inbounds nuw i8, ptr [[ADD_PTR64]], i64 417; CHECK-NEXT: [[ADD_PTR_1:%.*]] = getelementptr inbounds i8, ptr [[ADD_PTR]], i64 [[IDX_EXT]]18; CHECK-NEXT: [[ADD_PTR64_1:%.*]] = getelementptr inbounds i8, ptr [[ADD_PTR64]], i64 [[IDX_EXT63]]19; CHECK-NEXT: [[ARRAYIDX3_2:%.*]] = getelementptr inbounds nuw i8, ptr [[ADD_PTR_1]], i64 420; CHECK-NEXT: [[ARRAYIDX5_2:%.*]] = getelementptr inbounds nuw i8, ptr [[ADD_PTR64_1]], i64 421; CHECK-NEXT: [[ADD_PTR_2:%.*]] = getelementptr inbounds i8, ptr [[ADD_PTR_1]], i64 [[IDX_EXT]]22; CHECK-NEXT: [[ADD_PTR64_2:%.*]] = getelementptr inbounds i8, ptr [[ADD_PTR64_1]], i64 [[IDX_EXT63]]23; CHECK-NEXT: [[ARRAYIDX3_3:%.*]] = getelementptr inbounds nuw i8, ptr [[ADD_PTR_2]], i64 424; CHECK-NEXT: [[ARRAYIDX5_3:%.*]] = getelementptr inbounds nuw i8, ptr [[ADD_PTR64_2]], i64 425; CHECK-NEXT: [[TMP0:%.*]] = load <4 x i8>, ptr [[PIX1]], align 126; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i8>, ptr [[PIX2]], align 127; CHECK-NEXT: [[TMP2:%.*]] = load <4 x i8>, ptr [[ARRAYIDX3]], align 128; CHECK-NEXT: [[TMP3:%.*]] = load <4 x i8>, ptr [[ARRAYIDX5]], align 129; CHECK-NEXT: [[TMP4:%.*]] = load <4 x i8>, ptr [[ADD_PTR]], align 130; CHECK-NEXT: [[TMP5:%.*]] = load <4 x i8>, ptr [[ADD_PTR64]], align 131; CHECK-NEXT: [[TMP6:%.*]] = load <4 x i8>, ptr [[ARRAYIDX3_1]], align 132; CHECK-NEXT: [[TMP7:%.*]] = load <4 x i8>, ptr [[ARRAYIDX5_1]], align 133; CHECK-NEXT: [[TMP8:%.*]] = load <4 x i8>, ptr [[ADD_PTR_1]], align 134; CHECK-NEXT: [[TMP9:%.*]] = load <4 x i8>, ptr [[ADD_PTR64_1]], align 135; CHECK-NEXT: [[TMP10:%.*]] = load <4 x i8>, ptr [[ARRAYIDX3_2]], align 136; CHECK-NEXT: [[TMP11:%.*]] = load <4 x i8>, ptr [[ARRAYIDX5_2]], align 137; CHECK-NEXT: [[TMP12:%.*]] = load <4 x i8>, ptr [[ADD_PTR_2]], align 138; CHECK-NEXT: [[TMP13:%.*]] = shufflevector <4 x i8> [[TMP0]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>39; CHECK-NEXT: [[TMP14:%.*]] = shufflevector <4 x i8> [[TMP4]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>40; CHECK-NEXT: [[TMP15:%.*]] = shufflevector <4 x i8> [[TMP0]], <4 x i8> [[TMP4]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>41; CHECK-NEXT: [[TMP16:%.*]] = shufflevector <4 x i8> [[TMP8]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>42; CHECK-NEXT: [[TMP17:%.*]] = shufflevector <16 x i8> [[TMP15]], <16 x i8> [[TMP16]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 poison, i32 poison, i32 poison, i32 poison>43; CHECK-NEXT: [[TMP18:%.*]] = shufflevector <4 x i8> [[TMP12]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>44; CHECK-NEXT: [[TMP19:%.*]] = shufflevector <16 x i8> [[TMP17]], <16 x i8> [[TMP18]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 18, i32 19>45; CHECK-NEXT: [[TMP20:%.*]] = zext <16 x i8> [[TMP19]] to <16 x i32>46; CHECK-NEXT: [[TMP21:%.*]] = load <4 x i8>, ptr [[ADD_PTR64_2]], align 147; CHECK-NEXT: [[TMP22:%.*]] = shufflevector <4 x i8> [[TMP1]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>48; CHECK-NEXT: [[TMP23:%.*]] = shufflevector <4 x i8> [[TMP5]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>49; CHECK-NEXT: [[TMP24:%.*]] = shufflevector <4 x i8> [[TMP1]], <4 x i8> [[TMP5]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>50; CHECK-NEXT: [[TMP25:%.*]] = shufflevector <4 x i8> [[TMP9]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>51; CHECK-NEXT: [[TMP26:%.*]] = shufflevector <16 x i8> [[TMP24]], <16 x i8> [[TMP25]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 poison, i32 poison, i32 poison, i32 poison>52; CHECK-NEXT: [[TMP27:%.*]] = shufflevector <4 x i8> [[TMP21]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>53; CHECK-NEXT: [[TMP28:%.*]] = shufflevector <16 x i8> [[TMP26]], <16 x i8> [[TMP27]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 18, i32 19>54; CHECK-NEXT: [[TMP29:%.*]] = zext <16 x i8> [[TMP28]] to <16 x i32>55; CHECK-NEXT: [[TMP30:%.*]] = sub nsw <16 x i32> [[TMP20]], [[TMP29]]56; CHECK-NEXT: [[TMP31:%.*]] = load <4 x i8>, ptr [[ARRAYIDX3_3]], align 157; CHECK-NEXT: [[TMP32:%.*]] = shufflevector <4 x i8> [[TMP2]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>58; CHECK-NEXT: [[TMP33:%.*]] = shufflevector <4 x i8> [[TMP6]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>59; CHECK-NEXT: [[TMP34:%.*]] = shufflevector <4 x i8> [[TMP2]], <4 x i8> [[TMP6]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>60; CHECK-NEXT: [[TMP35:%.*]] = shufflevector <4 x i8> [[TMP10]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>61; CHECK-NEXT: [[TMP36:%.*]] = shufflevector <16 x i8> [[TMP34]], <16 x i8> [[TMP35]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 poison, i32 poison, i32 poison, i32 poison>62; CHECK-NEXT: [[TMP37:%.*]] = shufflevector <4 x i8> [[TMP31]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>63; CHECK-NEXT: [[TMP38:%.*]] = shufflevector <16 x i8> [[TMP36]], <16 x i8> [[TMP37]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 18, i32 19>64; CHECK-NEXT: [[TMP39:%.*]] = zext <16 x i8> [[TMP38]] to <16 x i32>65; CHECK-NEXT: [[TMP40:%.*]] = load <4 x i8>, ptr [[ARRAYIDX5_3]], align 166; CHECK-NEXT: [[TMP41:%.*]] = shufflevector <4 x i8> [[TMP3]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>67; CHECK-NEXT: [[TMP42:%.*]] = shufflevector <4 x i8> [[TMP7]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>68; CHECK-NEXT: [[TMP43:%.*]] = shufflevector <4 x i8> [[TMP3]], <4 x i8> [[TMP7]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>69; CHECK-NEXT: [[TMP44:%.*]] = shufflevector <4 x i8> [[TMP11]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>70; CHECK-NEXT: [[TMP45:%.*]] = shufflevector <16 x i8> [[TMP43]], <16 x i8> [[TMP44]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 poison, i32 poison, i32 poison, i32 poison>71; CHECK-NEXT: [[TMP46:%.*]] = shufflevector <4 x i8> [[TMP40]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>72; CHECK-NEXT: [[TMP47:%.*]] = shufflevector <16 x i8> [[TMP45]], <16 x i8> [[TMP46]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 18, i32 19>73; CHECK-NEXT: [[TMP48:%.*]] = zext <16 x i8> [[TMP47]] to <16 x i32>74; CHECK-NEXT: [[TMP49:%.*]] = sub nsw <16 x i32> [[TMP39]], [[TMP48]]75; CHECK-NEXT: [[TMP50:%.*]] = shl nsw <16 x i32> [[TMP49]], splat (i32 16)76; CHECK-NEXT: [[TMP51:%.*]] = add nsw <16 x i32> [[TMP50]], [[TMP30]]77; CHECK-NEXT: [[TMP52:%.*]] = shufflevector <16 x i32> [[TMP51]], <16 x i32> poison, <16 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 13, i32 12, i32 15, i32 14>78; CHECK-NEXT: [[TMP53:%.*]] = add nsw <16 x i32> [[TMP52]], [[TMP51]]79; CHECK-NEXT: [[TMP54:%.*]] = sub nsw <16 x i32> [[TMP52]], [[TMP51]]80; CHECK-NEXT: [[TMP55:%.*]] = shufflevector <16 x i32> [[TMP53]], <16 x i32> [[TMP54]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>81; CHECK-NEXT: [[TMP56:%.*]] = shufflevector <16 x i32> [[TMP55]], <16 x i32> poison, <16 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 5, i32 10, i32 11, i32 8, i32 9, i32 14, i32 15, i32 12, i32 13>82; CHECK-NEXT: [[TMP57:%.*]] = add nsw <16 x i32> [[TMP55]], [[TMP56]]83; CHECK-NEXT: [[TMP58:%.*]] = sub nsw <16 x i32> [[TMP55]], [[TMP56]]84; CHECK-NEXT: [[TMP59:%.*]] = shufflevector <16 x i32> [[TMP57]], <16 x i32> [[TMP58]], <16 x i32> <i32 16, i32 17, i32 2, i32 3, i32 20, i32 21, i32 6, i32 7, i32 24, i32 25, i32 10, i32 11, i32 28, i32 29, i32 14, i32 15>85; CHECK-NEXT: [[TMP60:%.*]] = shufflevector <16 x i32> [[TMP59]], <16 x i32> poison, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11>86; CHECK-NEXT: [[TMP61:%.*]] = sub nsw <16 x i32> [[TMP59]], [[TMP60]]87; CHECK-NEXT: [[TMP62:%.*]] = add nsw <16 x i32> [[TMP59]], [[TMP60]]88; CHECK-NEXT: [[TMP63:%.*]] = shufflevector <16 x i32> [[TMP61]], <16 x i32> [[TMP62]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 20, i32 21, i32 22, i32 23, i32 8, i32 9, i32 10, i32 11, i32 28, i32 29, i32 30, i32 31>89; CHECK-NEXT: [[TMP64:%.*]] = shufflevector <16 x i32> [[TMP63]], <16 x i32> poison, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>90; CHECK-NEXT: [[TMP65:%.*]] = add nsw <16 x i32> [[TMP63]], [[TMP64]]91; CHECK-NEXT: [[TMP66:%.*]] = sub nsw <16 x i32> [[TMP63]], [[TMP64]]92; CHECK-NEXT: [[TMP67:%.*]] = shufflevector <16 x i32> [[TMP65]], <16 x i32> [[TMP66]], <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>93; CHECK-NEXT: [[TMP68:%.*]] = lshr <16 x i32> [[TMP67]], splat (i32 15)94; CHECK-NEXT: [[TMP69:%.*]] = and <16 x i32> [[TMP68]], splat (i32 65537)95; CHECK-NEXT: [[TMP70:%.*]] = mul nuw <16 x i32> [[TMP69]], splat (i32 65535)96; CHECK-NEXT: [[TMP71:%.*]] = add <16 x i32> [[TMP70]], [[TMP67]]97; CHECK-NEXT: [[TMP72:%.*]] = xor <16 x i32> [[TMP71]], [[TMP70]]98; CHECK-NEXT: [[TMP73:%.*]] = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> [[TMP72]])99; CHECK-NEXT: [[CONV118:%.*]] = and i32 [[TMP73]], 65535100; CHECK-NEXT: [[SHR:%.*]] = lshr i32 [[TMP73]], 16101; CHECK-NEXT: [[ADD119:%.*]] = add nuw nsw i32 [[CONV118]], [[SHR]]102; CHECK-NEXT: [[SHR120:%.*]] = lshr i32 [[ADD119]], 1103; CHECK-NEXT: ret i32 [[SHR120]]104;105entry:106 %idx.ext = sext i32 %i_pix1 to i64107 %idx.ext63 = sext i32 %i_pix2 to i64108 %0 = load i8, ptr %pix1, align 1109 %conv = zext i8 %0 to i32110 %1 = load i8, ptr %pix2, align 1111 %conv2 = zext i8 %1 to i32112 %sub = sub nsw i32 %conv, %conv2113 %arrayidx3 = getelementptr inbounds nuw i8, ptr %pix1, i64 4114 %2 = load i8, ptr %arrayidx3, align 1115 %conv4 = zext i8 %2 to i32116 %arrayidx5 = getelementptr inbounds nuw i8, ptr %pix2, i64 4117 %3 = load i8, ptr %arrayidx5, align 1118 %conv6 = zext i8 %3 to i32119 %sub7 = sub nsw i32 %conv4, %conv6120 %shl = shl nsw i32 %sub7, 16121 %add = add nsw i32 %shl, %sub122 %arrayidx8 = getelementptr inbounds nuw i8, ptr %pix1, i64 1123 %4 = load i8, ptr %arrayidx8, align 1124 %conv9 = zext i8 %4 to i32125 %arrayidx10 = getelementptr inbounds nuw i8, ptr %pix2, i64 1126 %5 = load i8, ptr %arrayidx10, align 1127 %conv11 = zext i8 %5 to i32128 %sub12 = sub nsw i32 %conv9, %conv11129 %arrayidx13 = getelementptr inbounds nuw i8, ptr %pix1, i64 5130 %6 = load i8, ptr %arrayidx13, align 1131 %conv14 = zext i8 %6 to i32132 %arrayidx15 = getelementptr inbounds nuw i8, ptr %pix2, i64 5133 %7 = load i8, ptr %arrayidx15, align 1134 %conv16 = zext i8 %7 to i32135 %sub17 = sub nsw i32 %conv14, %conv16136 %shl18 = shl nsw i32 %sub17, 16137 %add19 = add nsw i32 %shl18, %sub12138 %arrayidx20 = getelementptr inbounds nuw i8, ptr %pix1, i64 2139 %8 = load i8, ptr %arrayidx20, align 1140 %conv21 = zext i8 %8 to i32141 %arrayidx22 = getelementptr inbounds nuw i8, ptr %pix2, i64 2142 %9 = load i8, ptr %arrayidx22, align 1143 %conv23 = zext i8 %9 to i32144 %sub24 = sub nsw i32 %conv21, %conv23145 %arrayidx25 = getelementptr inbounds nuw i8, ptr %pix1, i64 6146 %10 = load i8, ptr %arrayidx25, align 1147 %conv26 = zext i8 %10 to i32148 %arrayidx27 = getelementptr inbounds nuw i8, ptr %pix2, i64 6149 %11 = load i8, ptr %arrayidx27, align 1150 %conv28 = zext i8 %11 to i32151 %sub29 = sub nsw i32 %conv26, %conv28152 %shl30 = shl nsw i32 %sub29, 16153 %add31 = add nsw i32 %shl30, %sub24154 %arrayidx32 = getelementptr inbounds nuw i8, ptr %pix1, i64 3155 %12 = load i8, ptr %arrayidx32, align 1156 %conv33 = zext i8 %12 to i32157 %arrayidx34 = getelementptr inbounds nuw i8, ptr %pix2, i64 3158 %13 = load i8, ptr %arrayidx34, align 1159 %conv35 = zext i8 %13 to i32160 %sub36 = sub nsw i32 %conv33, %conv35161 %arrayidx37 = getelementptr inbounds nuw i8, ptr %pix1, i64 7162 %14 = load i8, ptr %arrayidx37, align 1163 %conv38 = zext i8 %14 to i32164 %arrayidx39 = getelementptr inbounds nuw i8, ptr %pix2, i64 7165 %15 = load i8, ptr %arrayidx39, align 1166 %conv40 = zext i8 %15 to i32167 %sub41 = sub nsw i32 %conv38, %conv40168 %shl42 = shl nsw i32 %sub41, 16169 %add43 = add nsw i32 %shl42, %sub36170 %add44 = add nsw i32 %add19, %add171 %sub45 = sub nsw i32 %add, %add19172 %add46 = add nsw i32 %add43, %add31173 %sub47 = sub nsw i32 %add31, %add43174 %add48 = add nsw i32 %add46, %add44175 %sub51 = sub nsw i32 %add44, %add46176 %add55 = add nsw i32 %sub47, %sub45177 %sub59 = sub nsw i32 %sub45, %sub47178 %add.ptr = getelementptr inbounds i8, ptr %pix1, i64 %idx.ext179 %add.ptr64 = getelementptr inbounds i8, ptr %pix2, i64 %idx.ext63180 %16 = load i8, ptr %add.ptr, align 1181 %conv.1 = zext i8 %16 to i32182 %17 = load i8, ptr %add.ptr64, align 1183 %conv2.1 = zext i8 %17 to i32184 %sub.1 = sub nsw i32 %conv.1, %conv2.1185 %arrayidx3.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 4186 %18 = load i8, ptr %arrayidx3.1, align 1187 %conv4.1 = zext i8 %18 to i32188 %arrayidx5.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 4189 %19 = load i8, ptr %arrayidx5.1, align 1190 %conv6.1 = zext i8 %19 to i32191 %sub7.1 = sub nsw i32 %conv4.1, %conv6.1192 %shl.1 = shl nsw i32 %sub7.1, 16193 %add.1 = add nsw i32 %shl.1, %sub.1194 %arrayidx8.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 1195 %20 = load i8, ptr %arrayidx8.1, align 1196 %conv9.1 = zext i8 %20 to i32197 %arrayidx10.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 1198 %21 = load i8, ptr %arrayidx10.1, align 1199 %conv11.1 = zext i8 %21 to i32200 %sub12.1 = sub nsw i32 %conv9.1, %conv11.1201 %arrayidx13.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 5202 %22 = load i8, ptr %arrayidx13.1, align 1203 %conv14.1 = zext i8 %22 to i32204 %arrayidx15.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 5205 %23 = load i8, ptr %arrayidx15.1, align 1206 %conv16.1 = zext i8 %23 to i32207 %sub17.1 = sub nsw i32 %conv14.1, %conv16.1208 %shl18.1 = shl nsw i32 %sub17.1, 16209 %add19.1 = add nsw i32 %shl18.1, %sub12.1210 %arrayidx20.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 2211 %24 = load i8, ptr %arrayidx20.1, align 1212 %conv21.1 = zext i8 %24 to i32213 %arrayidx22.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 2214 %25 = load i8, ptr %arrayidx22.1, align 1215 %conv23.1 = zext i8 %25 to i32216 %sub24.1 = sub nsw i32 %conv21.1, %conv23.1217 %arrayidx25.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 6218 %26 = load i8, ptr %arrayidx25.1, align 1219 %conv26.1 = zext i8 %26 to i32220 %arrayidx27.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 6221 %27 = load i8, ptr %arrayidx27.1, align 1222 %conv28.1 = zext i8 %27 to i32223 %sub29.1 = sub nsw i32 %conv26.1, %conv28.1224 %shl30.1 = shl nsw i32 %sub29.1, 16225 %add31.1 = add nsw i32 %shl30.1, %sub24.1226 %arrayidx32.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 3227 %28 = load i8, ptr %arrayidx32.1, align 1228 %conv33.1 = zext i8 %28 to i32229 %arrayidx34.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 3230 %29 = load i8, ptr %arrayidx34.1, align 1231 %conv35.1 = zext i8 %29 to i32232 %sub36.1 = sub nsw i32 %conv33.1, %conv35.1233 %arrayidx37.1 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 7234 %30 = load i8, ptr %arrayidx37.1, align 1235 %conv38.1 = zext i8 %30 to i32236 %arrayidx39.1 = getelementptr inbounds nuw i8, ptr %add.ptr64, i64 7237 %31 = load i8, ptr %arrayidx39.1, align 1238 %conv40.1 = zext i8 %31 to i32239 %sub41.1 = sub nsw i32 %conv38.1, %conv40.1240 %shl42.1 = shl nsw i32 %sub41.1, 16241 %add43.1 = add nsw i32 %shl42.1, %sub36.1242 %add44.1 = add nsw i32 %add19.1, %add.1243 %sub45.1 = sub nsw i32 %add.1, %add19.1244 %add46.1 = add nsw i32 %add43.1, %add31.1245 %sub47.1 = sub nsw i32 %add31.1, %add43.1246 %add48.1 = add nsw i32 %add46.1, %add44.1247 %sub51.1 = sub nsw i32 %add44.1, %add46.1248 %add55.1 = add nsw i32 %sub47.1, %sub45.1249 %sub59.1 = sub nsw i32 %sub45.1, %sub47.1250 %add.ptr.1 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.ext251 %add.ptr64.1 = getelementptr inbounds i8, ptr %add.ptr64, i64 %idx.ext63252 %32 = load i8, ptr %add.ptr.1, align 1253 %conv.2 = zext i8 %32 to i32254 %33 = load i8, ptr %add.ptr64.1, align 1255 %conv2.2 = zext i8 %33 to i32256 %sub.2 = sub nsw i32 %conv.2, %conv2.2257 %arrayidx3.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 4258 %34 = load i8, ptr %arrayidx3.2, align 1259 %conv4.2 = zext i8 %34 to i32260 %arrayidx5.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 4261 %35 = load i8, ptr %arrayidx5.2, align 1262 %conv6.2 = zext i8 %35 to i32263 %sub7.2 = sub nsw i32 %conv4.2, %conv6.2264 %shl.2 = shl nsw i32 %sub7.2, 16265 %add.2 = add nsw i32 %shl.2, %sub.2266 %arrayidx8.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 1267 %36 = load i8, ptr %arrayidx8.2, align 1268 %conv9.2 = zext i8 %36 to i32269 %arrayidx10.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 1270 %37 = load i8, ptr %arrayidx10.2, align 1271 %conv11.2 = zext i8 %37 to i32272 %sub12.2 = sub nsw i32 %conv9.2, %conv11.2273 %arrayidx13.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 5274 %38 = load i8, ptr %arrayidx13.2, align 1275 %conv14.2 = zext i8 %38 to i32276 %arrayidx15.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 5277 %39 = load i8, ptr %arrayidx15.2, align 1278 %conv16.2 = zext i8 %39 to i32279 %sub17.2 = sub nsw i32 %conv14.2, %conv16.2280 %shl18.2 = shl nsw i32 %sub17.2, 16281 %add19.2 = add nsw i32 %shl18.2, %sub12.2282 %arrayidx20.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 2283 %40 = load i8, ptr %arrayidx20.2, align 1284 %conv21.2 = zext i8 %40 to i32285 %arrayidx22.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 2286 %41 = load i8, ptr %arrayidx22.2, align 1287 %conv23.2 = zext i8 %41 to i32288 %sub24.2 = sub nsw i32 %conv21.2, %conv23.2289 %arrayidx25.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 6290 %42 = load i8, ptr %arrayidx25.2, align 1291 %conv26.2 = zext i8 %42 to i32292 %arrayidx27.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 6293 %43 = load i8, ptr %arrayidx27.2, align 1294 %conv28.2 = zext i8 %43 to i32295 %sub29.2 = sub nsw i32 %conv26.2, %conv28.2296 %shl30.2 = shl nsw i32 %sub29.2, 16297 %add31.2 = add nsw i32 %shl30.2, %sub24.2298 %arrayidx32.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 3299 %44 = load i8, ptr %arrayidx32.2, align 1300 %conv33.2 = zext i8 %44 to i32301 %arrayidx34.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 3302 %45 = load i8, ptr %arrayidx34.2, align 1303 %conv35.2 = zext i8 %45 to i32304 %sub36.2 = sub nsw i32 %conv33.2, %conv35.2305 %arrayidx37.2 = getelementptr inbounds nuw i8, ptr %add.ptr.1, i64 7306 %46 = load i8, ptr %arrayidx37.2, align 1307 %conv38.2 = zext i8 %46 to i32308 %arrayidx39.2 = getelementptr inbounds nuw i8, ptr %add.ptr64.1, i64 7309 %47 = load i8, ptr %arrayidx39.2, align 1310 %conv40.2 = zext i8 %47 to i32311 %sub41.2 = sub nsw i32 %conv38.2, %conv40.2312 %shl42.2 = shl nsw i32 %sub41.2, 16313 %add43.2 = add nsw i32 %shl42.2, %sub36.2314 %add44.2 = add nsw i32 %add19.2, %add.2315 %sub45.2 = sub nsw i32 %add.2, %add19.2316 %add46.2 = add nsw i32 %add43.2, %add31.2317 %sub47.2 = sub nsw i32 %add31.2, %add43.2318 %add48.2 = add nsw i32 %add46.2, %add44.2319 %sub51.2 = sub nsw i32 %add44.2, %add46.2320 %add55.2 = add nsw i32 %sub47.2, %sub45.2321 %sub59.2 = sub nsw i32 %sub45.2, %sub47.2322 %add.ptr.2 = getelementptr inbounds i8, ptr %add.ptr.1, i64 %idx.ext323 %add.ptr64.2 = getelementptr inbounds i8, ptr %add.ptr64.1, i64 %idx.ext63324 %48 = load i8, ptr %add.ptr.2, align 1325 %conv.3 = zext i8 %48 to i32326 %49 = load i8, ptr %add.ptr64.2, align 1327 %conv2.3 = zext i8 %49 to i32328 %sub.3 = sub nsw i32 %conv.3, %conv2.3329 %arrayidx3.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 4330 %50 = load i8, ptr %arrayidx3.3, align 1331 %conv4.3 = zext i8 %50 to i32332 %arrayidx5.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 4333 %51 = load i8, ptr %arrayidx5.3, align 1334 %conv6.3 = zext i8 %51 to i32335 %sub7.3 = sub nsw i32 %conv4.3, %conv6.3336 %shl.3 = shl nsw i32 %sub7.3, 16337 %add.3 = add nsw i32 %shl.3, %sub.3338 %arrayidx8.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 1339 %52 = load i8, ptr %arrayidx8.3, align 1340 %conv9.3 = zext i8 %52 to i32341 %arrayidx10.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 1342 %53 = load i8, ptr %arrayidx10.3, align 1343 %conv11.3 = zext i8 %53 to i32344 %sub12.3 = sub nsw i32 %conv9.3, %conv11.3345 %arrayidx13.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 5346 %54 = load i8, ptr %arrayidx13.3, align 1347 %conv14.3 = zext i8 %54 to i32348 %arrayidx15.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 5349 %55 = load i8, ptr %arrayidx15.3, align 1350 %conv16.3 = zext i8 %55 to i32351 %sub17.3 = sub nsw i32 %conv14.3, %conv16.3352 %shl18.3 = shl nsw i32 %sub17.3, 16353 %add19.3 = add nsw i32 %shl18.3, %sub12.3354 %arrayidx20.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 2355 %56 = load i8, ptr %arrayidx20.3, align 1356 %conv21.3 = zext i8 %56 to i32357 %arrayidx22.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 2358 %57 = load i8, ptr %arrayidx22.3, align 1359 %conv23.3 = zext i8 %57 to i32360 %sub24.3 = sub nsw i32 %conv21.3, %conv23.3361 %arrayidx25.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 6362 %58 = load i8, ptr %arrayidx25.3, align 1363 %conv26.3 = zext i8 %58 to i32364 %arrayidx27.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 6365 %59 = load i8, ptr %arrayidx27.3, align 1366 %conv28.3 = zext i8 %59 to i32367 %sub29.3 = sub nsw i32 %conv26.3, %conv28.3368 %shl30.3 = shl nsw i32 %sub29.3, 16369 %add31.3 = add nsw i32 %shl30.3, %sub24.3370 %arrayidx32.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 3371 %60 = load i8, ptr %arrayidx32.3, align 1372 %conv33.3 = zext i8 %60 to i32373 %arrayidx34.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 3374 %61 = load i8, ptr %arrayidx34.3, align 1375 %conv35.3 = zext i8 %61 to i32376 %sub36.3 = sub nsw i32 %conv33.3, %conv35.3377 %arrayidx37.3 = getelementptr inbounds nuw i8, ptr %add.ptr.2, i64 7378 %62 = load i8, ptr %arrayidx37.3, align 1379 %conv38.3 = zext i8 %62 to i32380 %arrayidx39.3 = getelementptr inbounds nuw i8, ptr %add.ptr64.2, i64 7381 %63 = load i8, ptr %arrayidx39.3, align 1382 %conv40.3 = zext i8 %63 to i32383 %sub41.3 = sub nsw i32 %conv38.3, %conv40.3384 %shl42.3 = shl nsw i32 %sub41.3, 16385 %add43.3 = add nsw i32 %shl42.3, %sub36.3386 %add44.3 = add nsw i32 %add19.3, %add.3387 %sub45.3 = sub nsw i32 %add.3, %add19.3388 %add46.3 = add nsw i32 %add43.3, %add31.3389 %sub47.3 = sub nsw i32 %add31.3, %add43.3390 %add48.3 = add nsw i32 %add46.3, %add44.3391 %sub51.3 = sub nsw i32 %add44.3, %add46.3392 %add55.3 = add nsw i32 %sub47.3, %sub45.3393 %sub59.3 = sub nsw i32 %sub45.3, %sub47.3394 %add78 = add nsw i32 %add48.1, %add48395 %sub86 = sub nsw i32 %add48, %add48.1396 %add94 = add nsw i32 %add48.3, %add48.2397 %sub102 = sub nsw i32 %add48.2, %add48.3398 %add103 = add nsw i32 %add94, %add78399 %sub104 = sub nsw i32 %add78, %add94400 %add105 = add nsw i32 %sub102, %sub86401 %sub106 = sub nsw i32 %sub86, %sub102402 %shr.i = lshr i32 %add103, 15403 %and.i = and i32 %shr.i, 65537404 %mul.i = mul nuw i32 %and.i, 65535405 %add.i = add i32 %mul.i, %add103406 %xor.i = xor i32 %add.i, %mul.i407 %shr.i169 = lshr i32 %add105, 15408 %and.i170 = and i32 %shr.i169, 65537409 %mul.i171 = mul nuw i32 %and.i170, 65535410 %add.i172 = add i32 %mul.i171, %add105411 %xor.i173 = xor i32 %add.i172, %mul.i171412 %shr.i174 = lshr i32 %sub104, 15413 %and.i175 = and i32 %shr.i174, 65537414 %mul.i176 = mul nuw i32 %and.i175, 65535415 %add.i177 = add i32 %mul.i176, %sub104416 %xor.i178 = xor i32 %add.i177, %mul.i176417 %shr.i179 = lshr i32 %sub106, 15418 %and.i180 = and i32 %shr.i179, 65537419 %mul.i181 = mul nuw i32 %and.i180, 65535420 %add.i182 = add i32 %mul.i181, %sub106421 %xor.i183 = xor i32 %add.i182, %mul.i181422 %add110 = add i32 %xor.i173, %xor.i423 %add112 = add i32 %add110, %xor.i178424 %add113 = add i32 %add112, %xor.i183425 %add78.1 = add nsw i32 %add55.1, %add55426 %sub86.1 = sub nsw i32 %add55, %add55.1427 %add94.1 = add nsw i32 %add55.3, %add55.2428 %sub102.1 = sub nsw i32 %add55.2, %add55.3429 %add103.1 = add nsw i32 %add94.1, %add78.1430 %sub104.1 = sub nsw i32 %add78.1, %add94.1431 %add105.1 = add nsw i32 %sub102.1, %sub86.1432 %sub106.1 = sub nsw i32 %sub86.1, %sub102.1433 %shr.i.1 = lshr i32 %add103.1, 15434 %and.i.1 = and i32 %shr.i.1, 65537435 %mul.i.1 = mul nuw i32 %and.i.1, 65535436 %add.i.1 = add i32 %mul.i.1, %add103.1437 %xor.i.1 = xor i32 %add.i.1, %mul.i.1438 %shr.i169.1 = lshr i32 %add105.1, 15439 %and.i170.1 = and i32 %shr.i169.1, 65537440 %mul.i171.1 = mul nuw i32 %and.i170.1, 65535441 %add.i172.1 = add i32 %mul.i171.1, %add105.1442 %xor.i173.1 = xor i32 %add.i172.1, %mul.i171.1443 %shr.i174.1 = lshr i32 %sub104.1, 15444 %and.i175.1 = and i32 %shr.i174.1, 65537445 %mul.i176.1 = mul nuw i32 %and.i175.1, 65535446 %add.i177.1 = add i32 %mul.i176.1, %sub104.1447 %xor.i178.1 = xor i32 %add.i177.1, %mul.i176.1448 %shr.i179.1 = lshr i32 %sub106.1, 15449 %and.i180.1 = and i32 %shr.i179.1, 65537450 %mul.i181.1 = mul nuw i32 %and.i180.1, 65535451 %add.i182.1 = add i32 %mul.i181.1, %sub106.1452 %xor.i183.1 = xor i32 %add.i182.1, %mul.i181.1453 %add108.1 = add i32 %xor.i173.1, %add113454 %add110.1 = add i32 %add108.1, %xor.i.1455 %add112.1 = add i32 %add110.1, %xor.i178.1456 %add113.1 = add i32 %add112.1, %xor.i183.1457 %add78.2 = add nsw i32 %sub51.1, %sub51458 %sub86.2 = sub nsw i32 %sub51, %sub51.1459 %add94.2 = add nsw i32 %sub51.3, %sub51.2460 %sub102.2 = sub nsw i32 %sub51.2, %sub51.3461 %add103.2 = add nsw i32 %add94.2, %add78.2462 %sub104.2 = sub nsw i32 %add78.2, %add94.2463 %add105.2 = add nsw i32 %sub102.2, %sub86.2464 %sub106.2 = sub nsw i32 %sub86.2, %sub102.2465 %shr.i.2 = lshr i32 %add103.2, 15466 %and.i.2 = and i32 %shr.i.2, 65537467 %mul.i.2 = mul nuw i32 %and.i.2, 65535468 %add.i.2 = add i32 %mul.i.2, %add103.2469 %xor.i.2 = xor i32 %add.i.2, %mul.i.2470 %shr.i169.2 = lshr i32 %add105.2, 15471 %and.i170.2 = and i32 %shr.i169.2, 65537472 %mul.i171.2 = mul nuw i32 %and.i170.2, 65535473 %add.i172.2 = add i32 %mul.i171.2, %add105.2474 %xor.i173.2 = xor i32 %add.i172.2, %mul.i171.2475 %shr.i174.2 = lshr i32 %sub104.2, 15476 %and.i175.2 = and i32 %shr.i174.2, 65537477 %mul.i176.2 = mul nuw i32 %and.i175.2, 65535478 %add.i177.2 = add i32 %mul.i176.2, %sub104.2479 %xor.i178.2 = xor i32 %add.i177.2, %mul.i176.2480 %shr.i179.2 = lshr i32 %sub106.2, 15481 %and.i180.2 = and i32 %shr.i179.2, 65537482 %mul.i181.2 = mul nuw i32 %and.i180.2, 65535483 %add.i182.2 = add i32 %mul.i181.2, %sub106.2484 %xor.i183.2 = xor i32 %add.i182.2, %mul.i181.2485 %add108.2 = add i32 %xor.i173.2, %add113.1486 %add110.2 = add i32 %add108.2, %xor.i.2487 %add112.2 = add i32 %add110.2, %xor.i178.2488 %add113.2 = add i32 %add112.2, %xor.i183.2489 %add78.3 = add nsw i32 %sub59.1, %sub59490 %sub86.3 = sub nsw i32 %sub59, %sub59.1491 %add94.3 = add nsw i32 %sub59.3, %sub59.2492 %sub102.3 = sub nsw i32 %sub59.2, %sub59.3493 %add103.3 = add nsw i32 %add94.3, %add78.3494 %sub104.3 = sub nsw i32 %add78.3, %add94.3495 %add105.3 = add nsw i32 %sub102.3, %sub86.3496 %sub106.3 = sub nsw i32 %sub86.3, %sub102.3497 %shr.i.3 = lshr i32 %add103.3, 15498 %and.i.3 = and i32 %shr.i.3, 65537499 %mul.i.3 = mul nuw i32 %and.i.3, 65535500 %add.i.3 = add i32 %mul.i.3, %add103.3501 %xor.i.3 = xor i32 %add.i.3, %mul.i.3502 %shr.i169.3 = lshr i32 %add105.3, 15503 %and.i170.3 = and i32 %shr.i169.3, 65537504 %mul.i171.3 = mul nuw i32 %and.i170.3, 65535505 %add.i172.3 = add i32 %mul.i171.3, %add105.3506 %xor.i173.3 = xor i32 %add.i172.3, %mul.i171.3507 %shr.i174.3 = lshr i32 %sub104.3, 15508 %and.i175.3 = and i32 %shr.i174.3, 65537509 %mul.i176.3 = mul nuw i32 %and.i175.3, 65535510 %add.i177.3 = add i32 %mul.i176.3, %sub104.3511 %xor.i178.3 = xor i32 %add.i177.3, %mul.i176.3512 %shr.i179.3 = lshr i32 %sub106.3, 15513 %and.i180.3 = and i32 %shr.i179.3, 65537514 %mul.i181.3 = mul nuw i32 %and.i180.3, 65535515 %add.i182.3 = add i32 %mul.i181.3, %sub106.3516 %xor.i183.3 = xor i32 %add.i182.3, %mul.i181.3517 %add108.3 = add i32 %xor.i173.3, %add113.2518 %add110.3 = add i32 %add108.3, %xor.i.3519 %add112.3 = add i32 %add110.3, %xor.i178.3520 %add113.3 = add i32 %add112.3, %xor.i183.3521 %conv118 = and i32 %add113.3, 65535522 %shr = lshr i32 %add113.3, 16523 %add119 = add nuw nsw i32 %conv118, %shr524 %shr120 = lshr i32 %add119, 1525 ret i32 %shr120526}527