brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.8 KiB · dd0471b Raw
431 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64 -passes=slp-vectorizer -S | FileCheck %s --check-prefixes=CHECK,SSE3; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64-v2 -passes=slp-vectorizer -S | FileCheck %s --check-prefixes=CHECK,SSE4; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64-v3 -passes=slp-vectorizer -S | FileCheck %s --check-prefixes=CHECK,AVX5; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64-v4 -passes=slp-vectorizer -S | FileCheck %s --check-prefixes=CHECK,AVX6 7; // PR474918; void pr(char* r, char* a){9;   for (int i = 0; i < 8; i++){10;       r[i] += a[i];11;   }12; }13 14define void @add4(ptr noalias nocapture noundef %r, ptr noalias nocapture noundef readonly %a) {15; CHECK-LABEL: @add4(16; CHECK-NEXT:  entry:17; CHECK-NEXT:    [[TMP0:%.*]] = load <4 x i8>, ptr [[A:%.*]], align 118; CHECK-NEXT:    [[TMP1:%.*]] = load <4 x i8>, ptr [[R:%.*]], align 119; CHECK-NEXT:    [[TMP2:%.*]] = add <4 x i8> [[TMP1]], [[TMP0]]20; CHECK-NEXT:    store <4 x i8> [[TMP2]], ptr [[R]], align 121; CHECK-NEXT:    ret void22;23entry:24  %0 = load i8, ptr %a, align 125  %1 = load i8, ptr %r, align 126  %add = add i8 %1, %027  store i8 %add, ptr %r, align 128  %arrayidx.1 = getelementptr inbounds i8, ptr %a, i64 129  %2 = load i8, ptr %arrayidx.1, align 130  %arrayidx2.1 = getelementptr inbounds i8, ptr %r, i64 131  %3 = load i8, ptr %arrayidx2.1, align 132  %add.1 = add i8 %3, %233  store i8 %add.1, ptr %arrayidx2.1, align 134  %arrayidx.2 = getelementptr inbounds i8, ptr %a, i64 235  %4 = load i8, ptr %arrayidx.2, align 136  %arrayidx2.2 = getelementptr inbounds i8, ptr %r, i64 237  %5 = load i8, ptr %arrayidx2.2, align 138  %add.2 = add i8 %5, %439  store i8 %add.2, ptr %arrayidx2.2, align 140  %arrayidx.3 = getelementptr inbounds i8, ptr %a, i64 341  %6 = load i8, ptr %arrayidx.3, align 142  %arrayidx2.3 = getelementptr inbounds i8, ptr %r, i64 343  %7 = load i8, ptr %arrayidx2.3, align 144  %add.3 = add i8 %7, %645  store i8 %add.3, ptr %arrayidx2.3, align 146  ret void47}48 49define void @add8(ptr noalias nocapture noundef %r, ptr noalias nocapture noundef readonly %a) {50; CHECK-LABEL: @add8(51; CHECK-NEXT:  entry:52; CHECK-NEXT:    [[TMP0:%.*]] = load <8 x i8>, ptr [[A:%.*]], align 153; CHECK-NEXT:    [[TMP1:%.*]] = load <8 x i8>, ptr [[R:%.*]], align 154; CHECK-NEXT:    [[TMP2:%.*]] = add <8 x i8> [[TMP1]], [[TMP0]]55; CHECK-NEXT:    store <8 x i8> [[TMP2]], ptr [[R]], align 156; CHECK-NEXT:    ret void57;58entry:59  %0 = load i8, ptr %a, align 160  %1 = load i8, ptr %r, align 161  %add = add i8 %1, %062  store i8 %add, ptr %r, align 163  %arrayidx.1 = getelementptr inbounds i8, ptr %a, i64 164  %2 = load i8, ptr %arrayidx.1, align 165  %arrayidx2.1 = getelementptr inbounds i8, ptr %r, i64 166  %3 = load i8, ptr %arrayidx2.1, align 167  %add.1 = add i8 %3, %268  store i8 %add.1, ptr %arrayidx2.1, align 169  %arrayidx.2 = getelementptr inbounds i8, ptr %a, i64 270  %4 = load i8, ptr %arrayidx.2, align 171  %arrayidx2.2 = getelementptr inbounds i8, ptr %r, i64 272  %5 = load i8, ptr %arrayidx2.2, align 173  %add.2 = add i8 %5, %474  store i8 %add.2, ptr %arrayidx2.2, align 175  %arrayidx.3 = getelementptr inbounds i8, ptr %a, i64 376  %6 = load i8, ptr %arrayidx.3, align 177  %arrayidx2.3 = getelementptr inbounds i8, ptr %r, i64 378  %7 = load i8, ptr %arrayidx2.3, align 179  %add.3 = add i8 %7, %680  store i8 %add.3, ptr %arrayidx2.3, align 181  %arrayidx.4 = getelementptr inbounds i8, ptr %a, i64 482  %8 = load i8, ptr %arrayidx.4, align 183  %arrayidx2.4 = getelementptr inbounds i8, ptr %r, i64 484  %9 = load i8, ptr %arrayidx2.4, align 185  %add.4 = add i8 %9, %886  store i8 %add.4, ptr %arrayidx2.4, align 187  %arrayidx.5 = getelementptr inbounds i8, ptr %a, i64 588  %10 = load i8, ptr %arrayidx.5, align 189  %arrayidx2.5 = getelementptr inbounds i8, ptr %r, i64 590  %11 = load i8, ptr %arrayidx2.5, align 191  %add.5 = add i8 %11, %1092  store i8 %add.5, ptr %arrayidx2.5, align 193  %arrayidx.6 = getelementptr inbounds i8, ptr %a, i64 694  %12 = load i8, ptr %arrayidx.6, align 195  %arrayidx2.6 = getelementptr inbounds i8, ptr %r, i64 696  %13 = load i8, ptr %arrayidx2.6, align 197  %add.6 = add i8 %13, %1298  store i8 %add.6, ptr %arrayidx2.6, align 199  %arrayidx.7 = getelementptr inbounds i8, ptr %a, i64 7100  %14 = load i8, ptr %arrayidx.7, align 1101  %arrayidx2.7 = getelementptr inbounds i8, ptr %r, i64 7102  %15 = load i8, ptr %arrayidx2.7, align 1103  %add.7 = add i8 %15, %14104  store i8 %add.7, ptr %arrayidx2.7, align 1105  ret void106}107 108define void @add16(ptr noalias nocapture noundef %r, ptr noalias nocapture noundef readonly %a) {109; CHECK-LABEL: @add16(110; CHECK-NEXT:  entry:111; CHECK-NEXT:    [[TMP0:%.*]] = load <16 x i8>, ptr [[A:%.*]], align 1112; CHECK-NEXT:    [[TMP1:%.*]] = load <16 x i8>, ptr [[R:%.*]], align 1113; CHECK-NEXT:    [[TMP2:%.*]] = add <16 x i8> [[TMP1]], [[TMP0]]114; CHECK-NEXT:    store <16 x i8> [[TMP2]], ptr [[R]], align 1115; CHECK-NEXT:    ret void116;117entry:118  %0 = load i8, ptr %a, align 1119  %1 = load i8, ptr %r, align 1120  %add = add i8 %1, %0121  store i8 %add, ptr %r, align 1122  %arrayidx.1 = getelementptr inbounds i8, ptr %a, i64 1123  %2 = load i8, ptr %arrayidx.1, align 1124  %arrayidx2.1 = getelementptr inbounds i8, ptr %r, i64 1125  %3 = load i8, ptr %arrayidx2.1, align 1126  %add.1 = add i8 %3, %2127  store i8 %add.1, ptr %arrayidx2.1, align 1128  %arrayidx.2 = getelementptr inbounds i8, ptr %a, i64 2129  %4 = load i8, ptr %arrayidx.2, align 1130  %arrayidx2.2 = getelementptr inbounds i8, ptr %r, i64 2131  %5 = load i8, ptr %arrayidx2.2, align 1132  %add.2 = add i8 %5, %4133  store i8 %add.2, ptr %arrayidx2.2, align 1134  %arrayidx.3 = getelementptr inbounds i8, ptr %a, i64 3135  %6 = load i8, ptr %arrayidx.3, align 1136  %arrayidx2.3 = getelementptr inbounds i8, ptr %r, i64 3137  %7 = load i8, ptr %arrayidx2.3, align 1138  %add.3 = add i8 %7, %6139  store i8 %add.3, ptr %arrayidx2.3, align 1140  %arrayidx.4 = getelementptr inbounds i8, ptr %a, i64 4141  %8 = load i8, ptr %arrayidx.4, align 1142  %arrayidx2.4 = getelementptr inbounds i8, ptr %r, i64 4143  %9 = load i8, ptr %arrayidx2.4, align 1144  %add.4 = add i8 %9, %8145  store i8 %add.4, ptr %arrayidx2.4, align 1146  %arrayidx.5 = getelementptr inbounds i8, ptr %a, i64 5147  %10 = load i8, ptr %arrayidx.5, align 1148  %arrayidx2.5 = getelementptr inbounds i8, ptr %r, i64 5149  %11 = load i8, ptr %arrayidx2.5, align 1150  %add.5 = add i8 %11, %10151  store i8 %add.5, ptr %arrayidx2.5, align 1152  %arrayidx.6 = getelementptr inbounds i8, ptr %a, i64 6153  %12 = load i8, ptr %arrayidx.6, align 1154  %arrayidx2.6 = getelementptr inbounds i8, ptr %r, i64 6155  %13 = load i8, ptr %arrayidx2.6, align 1156  %add.6 = add i8 %13, %12157  store i8 %add.6, ptr %arrayidx2.6, align 1158  %arrayidx.7 = getelementptr inbounds i8, ptr %a, i64 7159  %14 = load i8, ptr %arrayidx.7, align 1160  %arrayidx2.7 = getelementptr inbounds i8, ptr %r, i64 7161  %15 = load i8, ptr %arrayidx2.7, align 1162  %add.7 = add i8 %15, %14163  store i8 %add.7, ptr %arrayidx2.7, align 1164  %arrayidx.8 = getelementptr inbounds i8, ptr %a, i64 8165  %16 = load i8, ptr %arrayidx.8, align 1166  %arrayidx2.8 = getelementptr inbounds i8, ptr %r, i64 8167  %17 = load i8, ptr %arrayidx2.8, align 1168  %add.8 = add i8 %17, %16169  store i8 %add.8, ptr %arrayidx2.8, align 1170  %arrayidx.9 = getelementptr inbounds i8, ptr %a, i64 9171  %18 = load i8, ptr %arrayidx.9, align 1172  %arrayidx2.9 = getelementptr inbounds i8, ptr %r, i64 9173  %19 = load i8, ptr %arrayidx2.9, align 1174  %add.9 = add i8 %19, %18175  store i8 %add.9, ptr %arrayidx2.9, align 1176  %arrayidx.10 = getelementptr inbounds i8, ptr %a, i64 10177  %20 = load i8, ptr %arrayidx.10, align 1178  %arrayidx2.10 = getelementptr inbounds i8, ptr %r, i64 10179  %21 = load i8, ptr %arrayidx2.10, align 1180  %add.10 = add i8 %21, %20181  store i8 %add.10, ptr %arrayidx2.10, align 1182  %arrayidx.11 = getelementptr inbounds i8, ptr %a, i64 11183  %22 = load i8, ptr %arrayidx.11, align 1184  %arrayidx2.11 = getelementptr inbounds i8, ptr %r, i64 11185  %23 = load i8, ptr %arrayidx2.11, align 1186  %add.11 = add i8 %23, %22187  store i8 %add.11, ptr %arrayidx2.11, align 1188  %arrayidx.12 = getelementptr inbounds i8, ptr %a, i64 12189  %24 = load i8, ptr %arrayidx.12, align 1190  %arrayidx2.12 = getelementptr inbounds i8, ptr %r, i64 12191  %25 = load i8, ptr %arrayidx2.12, align 1192  %add.12 = add i8 %25, %24193  store i8 %add.12, ptr %arrayidx2.12, align 1194  %arrayidx.13 = getelementptr inbounds i8, ptr %a, i64 13195  %26 = load i8, ptr %arrayidx.13, align 1196  %arrayidx2.13 = getelementptr inbounds i8, ptr %r, i64 13197  %27 = load i8, ptr %arrayidx2.13, align 1198  %add.13 = add i8 %27, %26199  store i8 %add.13, ptr %arrayidx2.13, align 1200  %arrayidx.14 = getelementptr inbounds i8, ptr %a, i64 14201  %28 = load i8, ptr %arrayidx.14, align 1202  %arrayidx2.14 = getelementptr inbounds i8, ptr %r, i64 14203  %29 = load i8, ptr %arrayidx2.14, align 1204  %add.14 = add i8 %29, %28205  store i8 %add.14, ptr %arrayidx2.14, align 1206  %arrayidx.15 = getelementptr inbounds i8, ptr %a, i64 15207  %30 = load i8, ptr %arrayidx.15, align 1208  %arrayidx2.15 = getelementptr inbounds i8, ptr %r, i64 15209  %31 = load i8, ptr %arrayidx2.15, align 1210  %add.15 = add i8 %31, %30211  store i8 %add.15, ptr %arrayidx2.15, align 1212  ret void213}214 215define void @add32(ptr noalias nocapture noundef %r, ptr noalias nocapture noundef readonly %a) {216; SSE-LABEL: @add32(217; SSE-NEXT:  entry:218; SSE-NEXT:    [[TMP0:%.*]] = load <16 x i8>, ptr [[A:%.*]], align 1219; SSE-NEXT:    [[TMP1:%.*]] = load <16 x i8>, ptr [[R:%.*]], align 1220; SSE-NEXT:    [[TMP2:%.*]] = add <16 x i8> [[TMP1]], [[TMP0]]221; SSE-NEXT:    store <16 x i8> [[TMP2]], ptr [[R]], align 1222; SSE-NEXT:    [[ARRAYIDX_16:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 16223; SSE-NEXT:    [[ARRAYIDX2_16:%.*]] = getelementptr inbounds i8, ptr [[R]], i64 16224; SSE-NEXT:    [[TMP3:%.*]] = load <16 x i8>, ptr [[ARRAYIDX_16]], align 1225; SSE-NEXT:    [[TMP4:%.*]] = load <16 x i8>, ptr [[ARRAYIDX2_16]], align 1226; SSE-NEXT:    [[TMP5:%.*]] = add <16 x i8> [[TMP4]], [[TMP3]]227; SSE-NEXT:    store <16 x i8> [[TMP5]], ptr [[ARRAYIDX2_16]], align 1228; SSE-NEXT:    ret void229;230; AVX-LABEL: @add32(231; AVX-NEXT:  entry:232; AVX-NEXT:    [[TMP0:%.*]] = load <32 x i8>, ptr [[A:%.*]], align 1233; AVX-NEXT:    [[TMP1:%.*]] = load <32 x i8>, ptr [[R:%.*]], align 1234; AVX-NEXT:    [[TMP2:%.*]] = add <32 x i8> [[TMP1]], [[TMP0]]235; AVX-NEXT:    store <32 x i8> [[TMP2]], ptr [[R]], align 1236; AVX-NEXT:    ret void237;238entry:239  %0 = load i8, ptr %a, align 1240  %1 = load i8, ptr %r, align 1241  %add = add i8 %1, %0242  store i8 %add, ptr %r, align 1243  %arrayidx.1 = getelementptr inbounds i8, ptr %a, i64 1244  %2 = load i8, ptr %arrayidx.1, align 1245  %arrayidx2.1 = getelementptr inbounds i8, ptr %r, i64 1246  %3 = load i8, ptr %arrayidx2.1, align 1247  %add.1 = add i8 %3, %2248  store i8 %add.1, ptr %arrayidx2.1, align 1249  %arrayidx.2 = getelementptr inbounds i8, ptr %a, i64 2250  %4 = load i8, ptr %arrayidx.2, align 1251  %arrayidx2.2 = getelementptr inbounds i8, ptr %r, i64 2252  %5 = load i8, ptr %arrayidx2.2, align 1253  %add.2 = add i8 %5, %4254  store i8 %add.2, ptr %arrayidx2.2, align 1255  %arrayidx.3 = getelementptr inbounds i8, ptr %a, i64 3256  %6 = load i8, ptr %arrayidx.3, align 1257  %arrayidx2.3 = getelementptr inbounds i8, ptr %r, i64 3258  %7 = load i8, ptr %arrayidx2.3, align 1259  %add.3 = add i8 %7, %6260  store i8 %add.3, ptr %arrayidx2.3, align 1261  %arrayidx.4 = getelementptr inbounds i8, ptr %a, i64 4262  %8 = load i8, ptr %arrayidx.4, align 1263  %arrayidx2.4 = getelementptr inbounds i8, ptr %r, i64 4264  %9 = load i8, ptr %arrayidx2.4, align 1265  %add.4 = add i8 %9, %8266  store i8 %add.4, ptr %arrayidx2.4, align 1267  %arrayidx.5 = getelementptr inbounds i8, ptr %a, i64 5268  %10 = load i8, ptr %arrayidx.5, align 1269  %arrayidx2.5 = getelementptr inbounds i8, ptr %r, i64 5270  %11 = load i8, ptr %arrayidx2.5, align 1271  %add.5 = add i8 %11, %10272  store i8 %add.5, ptr %arrayidx2.5, align 1273  %arrayidx.6 = getelementptr inbounds i8, ptr %a, i64 6274  %12 = load i8, ptr %arrayidx.6, align 1275  %arrayidx2.6 = getelementptr inbounds i8, ptr %r, i64 6276  %13 = load i8, ptr %arrayidx2.6, align 1277  %add.6 = add i8 %13, %12278  store i8 %add.6, ptr %arrayidx2.6, align 1279  %arrayidx.7 = getelementptr inbounds i8, ptr %a, i64 7280  %14 = load i8, ptr %arrayidx.7, align 1281  %arrayidx2.7 = getelementptr inbounds i8, ptr %r, i64 7282  %15 = load i8, ptr %arrayidx2.7, align 1283  %add.7 = add i8 %15, %14284  store i8 %add.7, ptr %arrayidx2.7, align 1285  %arrayidx.8 = getelementptr inbounds i8, ptr %a, i64 8286  %16 = load i8, ptr %arrayidx.8, align 1287  %arrayidx2.8 = getelementptr inbounds i8, ptr %r, i64 8288  %17 = load i8, ptr %arrayidx2.8, align 1289  %add.8 = add i8 %17, %16290  store i8 %add.8, ptr %arrayidx2.8, align 1291  %arrayidx.9 = getelementptr inbounds i8, ptr %a, i64 9292  %18 = load i8, ptr %arrayidx.9, align 1293  %arrayidx2.9 = getelementptr inbounds i8, ptr %r, i64 9294  %19 = load i8, ptr %arrayidx2.9, align 1295  %add.9 = add i8 %19, %18296  store i8 %add.9, ptr %arrayidx2.9, align 1297  %arrayidx.10 = getelementptr inbounds i8, ptr %a, i64 10298  %20 = load i8, ptr %arrayidx.10, align 1299  %arrayidx2.10 = getelementptr inbounds i8, ptr %r, i64 10300  %21 = load i8, ptr %arrayidx2.10, align 1301  %add.10 = add i8 %21, %20302  store i8 %add.10, ptr %arrayidx2.10, align 1303  %arrayidx.11 = getelementptr inbounds i8, ptr %a, i64 11304  %22 = load i8, ptr %arrayidx.11, align 1305  %arrayidx2.11 = getelementptr inbounds i8, ptr %r, i64 11306  %23 = load i8, ptr %arrayidx2.11, align 1307  %add.11 = add i8 %23, %22308  store i8 %add.11, ptr %arrayidx2.11, align 1309  %arrayidx.12 = getelementptr inbounds i8, ptr %a, i64 12310  %24 = load i8, ptr %arrayidx.12, align 1311  %arrayidx2.12 = getelementptr inbounds i8, ptr %r, i64 12312  %25 = load i8, ptr %arrayidx2.12, align 1313  %add.12 = add i8 %25, %24314  store i8 %add.12, ptr %arrayidx2.12, align 1315  %arrayidx.13 = getelementptr inbounds i8, ptr %a, i64 13316  %26 = load i8, ptr %arrayidx.13, align 1317  %arrayidx2.13 = getelementptr inbounds i8, ptr %r, i64 13318  %27 = load i8, ptr %arrayidx2.13, align 1319  %add.13 = add i8 %27, %26320  store i8 %add.13, ptr %arrayidx2.13, align 1321  %arrayidx.14 = getelementptr inbounds i8, ptr %a, i64 14322  %28 = load i8, ptr %arrayidx.14, align 1323  %arrayidx2.14 = getelementptr inbounds i8, ptr %r, i64 14324  %29 = load i8, ptr %arrayidx2.14, align 1325  %add.14 = add i8 %29, %28326  store i8 %add.14, ptr %arrayidx2.14, align 1327  %arrayidx.15 = getelementptr inbounds i8, ptr %a, i64 15328  %30 = load i8, ptr %arrayidx.15, align 1329  %arrayidx2.15 = getelementptr inbounds i8, ptr %r, i64 15330  %31 = load i8, ptr %arrayidx2.15, align 1331  %add.15 = add i8 %31, %30332  store i8 %add.15, ptr %arrayidx2.15, align 1333  %arrayidx.16 = getelementptr inbounds i8, ptr %a, i64 16334  %32 = load i8, ptr %arrayidx.16, align 1335  %arrayidx2.16 = getelementptr inbounds i8, ptr %r, i64 16336  %33 = load i8, ptr %arrayidx2.16, align 1337  %add.16 = add i8 %33, %32338  store i8 %add.16, ptr %arrayidx2.16, align 1339  %arrayidx.17 = getelementptr inbounds i8, ptr %a, i64 17340  %34 = load i8, ptr %arrayidx.17, align 1341  %arrayidx2.17 = getelementptr inbounds i8, ptr %r, i64 17342  %35 = load i8, ptr %arrayidx2.17, align 1343  %add.17 = add i8 %35, %34344  store i8 %add.17, ptr %arrayidx2.17, align 1345  %arrayidx.18 = getelementptr inbounds i8, ptr %a, i64 18346  %36 = load i8, ptr %arrayidx.18, align 1347  %arrayidx2.18 = getelementptr inbounds i8, ptr %r, i64 18348  %37 = load i8, ptr %arrayidx2.18, align 1349  %add.18 = add i8 %37, %36350  store i8 %add.18, ptr %arrayidx2.18, align 1351  %arrayidx.19 = getelementptr inbounds i8, ptr %a, i64 19352  %38 = load i8, ptr %arrayidx.19, align 1353  %arrayidx2.19 = getelementptr inbounds i8, ptr %r, i64 19354  %39 = load i8, ptr %arrayidx2.19, align 1355  %add.19 = add i8 %39, %38356  store i8 %add.19, ptr %arrayidx2.19, align 1357  %arrayidx.20 = getelementptr inbounds i8, ptr %a, i64 20358  %40 = load i8, ptr %arrayidx.20, align 1359  %arrayidx2.20 = getelementptr inbounds i8, ptr %r, i64 20360  %41 = load i8, ptr %arrayidx2.20, align 1361  %add.20 = add i8 %41, %40362  store i8 %add.20, ptr %arrayidx2.20, align 1363  %arrayidx.21 = getelementptr inbounds i8, ptr %a, i64 21364  %42 = load i8, ptr %arrayidx.21, align 1365  %arrayidx2.21 = getelementptr inbounds i8, ptr %r, i64 21366  %43 = load i8, ptr %arrayidx2.21, align 1367  %add.21 = add i8 %43, %42368  store i8 %add.21, ptr %arrayidx2.21, align 1369  %arrayidx.22 = getelementptr inbounds i8, ptr %a, i64 22370  %44 = load i8, ptr %arrayidx.22, align 1371  %arrayidx2.22 = getelementptr inbounds i8, ptr %r, i64 22372  %45 = load i8, ptr %arrayidx2.22, align 1373  %add.22 = add i8 %45, %44374  store i8 %add.22, ptr %arrayidx2.22, align 1375  %arrayidx.23 = getelementptr inbounds i8, ptr %a, i64 23376  %46 = load i8, ptr %arrayidx.23, align 1377  %arrayidx2.23 = getelementptr inbounds i8, ptr %r, i64 23378  %47 = load i8, ptr %arrayidx2.23, align 1379  %add.23 = add i8 %47, %46380  store i8 %add.23, ptr %arrayidx2.23, align 1381  %arrayidx.24 = getelementptr inbounds i8, ptr %a, i64 24382  %48 = load i8, ptr %arrayidx.24, align 1383  %arrayidx2.24 = getelementptr inbounds i8, ptr %r, i64 24384  %49 = load i8, ptr %arrayidx2.24, align 1385  %add.24 = add i8 %49, %48386  store i8 %add.24, ptr %arrayidx2.24, align 1387  %arrayidx.25 = getelementptr inbounds i8, ptr %a, i64 25388  %50 = load i8, ptr %arrayidx.25, align 1389  %arrayidx2.25 = getelementptr inbounds i8, ptr %r, i64 25390  %51 = load i8, ptr %arrayidx2.25, align 1391  %add.25 = add i8 %51, %50392  store i8 %add.25, ptr %arrayidx2.25, align 1393  %arrayidx.26 = getelementptr inbounds i8, ptr %a, i64 26394  %52 = load i8, ptr %arrayidx.26, align 1395  %arrayidx2.26 = getelementptr inbounds i8, ptr %r, i64 26396  %53 = load i8, ptr %arrayidx2.26, align 1397  %add.26 = add i8 %53, %52398  store i8 %add.26, ptr %arrayidx2.26, align 1399  %arrayidx.27 = getelementptr inbounds i8, ptr %a, i64 27400  %54 = load i8, ptr %arrayidx.27, align 1401  %arrayidx2.27 = getelementptr inbounds i8, ptr %r, i64 27402  %55 = load i8, ptr %arrayidx2.27, align 1403  %add.27 = add i8 %55, %54404  store i8 %add.27, ptr %arrayidx2.27, align 1405  %arrayidx.28 = getelementptr inbounds i8, ptr %a, i64 28406  %56 = load i8, ptr %arrayidx.28, align 1407  %arrayidx2.28 = getelementptr inbounds i8, ptr %r, i64 28408  %57 = load i8, ptr %arrayidx2.28, align 1409  %add.28 = add i8 %57, %56410  store i8 %add.28, ptr %arrayidx2.28, align 1411  %arrayidx.29 = getelementptr inbounds i8, ptr %a, i64 29412  %58 = load i8, ptr %arrayidx.29, align 1413  %arrayidx2.29 = getelementptr inbounds i8, ptr %r, i64 29414  %59 = load i8, ptr %arrayidx2.29, align 1415  %add.29 = add i8 %59, %58416  store i8 %add.29, ptr %arrayidx2.29, align 1417  %arrayidx.30 = getelementptr inbounds i8, ptr %a, i64 30418  %60 = load i8, ptr %arrayidx.30, align 1419  %arrayidx2.30 = getelementptr inbounds i8, ptr %r, i64 30420  %61 = load i8, ptr %arrayidx2.30, align 1421  %add.30 = add i8 %61, %60422  store i8 %add.30, ptr %arrayidx2.30, align 1423  %arrayidx.31 = getelementptr inbounds i8, ptr %a, i64 31424  %62 = load i8, ptr %arrayidx.31, align 1425  %arrayidx2.31 = getelementptr inbounds i8, ptr %r, i64 31426  %63 = load i8, ptr %arrayidx2.31, align 1427  %add.31 = add i8 %63, %62428  store i8 %add.31, ptr %arrayidx2.31, align 1429  ret void430}431