@@ -1149,3 +1149,264 @@ entry:
11491149 %add.15 = add nsw i32 %mul.15 , %add.14
11501150 ret i32 %add.15
11511151}
1152+
1153+ ; COST-LABEL: Function: mla_v16i8_i32_sub
1154+ ; COST: Cost: '-2'
1155+ define i32 @mla_v16i8_i32_sub (ptr %x , ptr %y ) "target-features" ="+dotprod" {
1156+ ; CHECK-LABEL: @mla_v16i8_i32_sub(
1157+ ; CHECK-NEXT: entry:
1158+ ; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[X:%.*]], align 1
1159+ ; CHECK-NEXT: [[CONV:%.*]] = sext i8 [[TMP0]] to i32
1160+ ; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr [[Y:%.*]], align 1
1161+ ; CHECK-NEXT: [[CONV3:%.*]] = sext i8 [[TMP1]] to i32
1162+ ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i32 [[CONV3]], [[CONV]]
1163+ ; CHECK-NEXT: [[ARRAYIDX_1:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 1
1164+ ; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr [[ARRAYIDX_1]], align 1
1165+ ; CHECK-NEXT: [[CONV_1:%.*]] = sext i8 [[TMP2]] to i32
1166+ ; CHECK-NEXT: [[ARRAYIDX2_1:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 1
1167+ ; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr [[ARRAYIDX2_1]], align 1
1168+ ; CHECK-NEXT: [[CONV3_1:%.*]] = sext i8 [[TMP3]] to i32
1169+ ; CHECK-NEXT: [[MUL_1:%.*]] = mul nsw i32 [[CONV3_1]], [[CONV_1]]
1170+ ; CHECK-NEXT: [[SUB_1:%.*]] = sub nsw i32 [[MUL_1]], [[MUL]]
1171+ ; CHECK-NEXT: [[ARRAYIDX_2:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 2
1172+ ; CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr [[ARRAYIDX_2]], align 1
1173+ ; CHECK-NEXT: [[CONV_2:%.*]] = sext i8 [[TMP4]] to i32
1174+ ; CHECK-NEXT: [[ARRAYIDX2_2:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 2
1175+ ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[ARRAYIDX2_2]], align 1
1176+ ; CHECK-NEXT: [[CONV3_2:%.*]] = sext i8 [[TMP5]] to i32
1177+ ; CHECK-NEXT: [[MUL_2:%.*]] = mul nsw i32 [[CONV3_2]], [[CONV_2]]
1178+ ; CHECK-NEXT: [[SUB_2:%.*]] = sub nsw i32 [[MUL_2]], [[SUB_1]]
1179+ ; CHECK-NEXT: [[ARRAYIDX_3:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 3
1180+ ; CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr [[ARRAYIDX_3]], align 1
1181+ ; CHECK-NEXT: [[CONV_3:%.*]] = sext i8 [[TMP6]] to i32
1182+ ; CHECK-NEXT: [[ARRAYIDX2_3:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 3
1183+ ; CHECK-NEXT: [[TMP7:%.*]] = load i8, ptr [[ARRAYIDX2_3]], align 1
1184+ ; CHECK-NEXT: [[CONV3_3:%.*]] = sext i8 [[TMP7]] to i32
1185+ ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i32 [[CONV3_3]], [[CONV_3]]
1186+ ; CHECK-NEXT: [[SUB_3:%.*]] = sub nsw i32 [[MUL_3]], [[SUB_2]]
1187+ ; CHECK-NEXT: [[ARRAYIDX_4:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 4
1188+ ; CHECK-NEXT: [[TMP8:%.*]] = load i8, ptr [[ARRAYIDX_4]], align 1
1189+ ; CHECK-NEXT: [[CONV_4:%.*]] = sext i8 [[TMP8]] to i32
1190+ ; CHECK-NEXT: [[ARRAYIDX2_4:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 4
1191+ ; CHECK-NEXT: [[TMP9:%.*]] = load i8, ptr [[ARRAYIDX2_4]], align 1
1192+ ; CHECK-NEXT: [[CONV3_4:%.*]] = sext i8 [[TMP9]] to i32
1193+ ; CHECK-NEXT: [[MUL_4:%.*]] = mul nsw i32 [[CONV3_4]], [[CONV_4]]
1194+ ; CHECK-NEXT: [[SUB_4:%.*]] = sub nsw i32 [[MUL_4]], [[SUB_3]]
1195+ ; CHECK-NEXT: [[ARRAYIDX_5:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 5
1196+ ; CHECK-NEXT: [[TMP10:%.*]] = load i8, ptr [[ARRAYIDX_5]], align 1
1197+ ; CHECK-NEXT: [[CONV_5:%.*]] = sext i8 [[TMP10]] to i32
1198+ ; CHECK-NEXT: [[ARRAYIDX2_5:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 5
1199+ ; CHECK-NEXT: [[TMP11:%.*]] = load i8, ptr [[ARRAYIDX2_5]], align 1
1200+ ; CHECK-NEXT: [[CONV3_5:%.*]] = sext i8 [[TMP11]] to i32
1201+ ; CHECK-NEXT: [[MUL_5:%.*]] = mul nsw i32 [[CONV3_5]], [[CONV_5]]
1202+ ; CHECK-NEXT: [[SUB_5:%.*]] = sub nsw i32 [[MUL_5]], [[SUB_4]]
1203+ ; CHECK-NEXT: [[ARRAYIDX_6:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 6
1204+ ; CHECK-NEXT: [[TMP12:%.*]] = load i8, ptr [[ARRAYIDX_6]], align 1
1205+ ; CHECK-NEXT: [[CONV_6:%.*]] = sext i8 [[TMP12]] to i32
1206+ ; CHECK-NEXT: [[ARRAYIDX2_6:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 6
1207+ ; CHECK-NEXT: [[TMP13:%.*]] = load i8, ptr [[ARRAYIDX2_6]], align 1
1208+ ; CHECK-NEXT: [[CONV3_6:%.*]] = sext i8 [[TMP13]] to i32
1209+ ; CHECK-NEXT: [[MUL_6:%.*]] = mul nsw i32 [[CONV3_6]], [[CONV_6]]
1210+ ; CHECK-NEXT: [[SUB_6:%.*]] = sub nsw i32 [[MUL_6]], [[SUB_5]]
1211+ ; CHECK-NEXT: [[ARRAYIDX_7:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 7
1212+ ; CHECK-NEXT: [[TMP14:%.*]] = load i8, ptr [[ARRAYIDX_7]], align 1
1213+ ; CHECK-NEXT: [[CONV_7:%.*]] = sext i8 [[TMP14]] to i32
1214+ ; CHECK-NEXT: [[ARRAYIDX2_7:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 7
1215+ ; CHECK-NEXT: [[TMP15:%.*]] = load i8, ptr [[ARRAYIDX2_7]], align 1
1216+ ; CHECK-NEXT: [[CONV3_7:%.*]] = sext i8 [[TMP15]] to i32
1217+ ; CHECK-NEXT: [[MUL_7:%.*]] = mul nsw i32 [[CONV3_7]], [[CONV_7]]
1218+ ; CHECK-NEXT: [[SUB_7:%.*]] = sub nsw i32 [[MUL_7]], [[SUB_6]]
1219+ ; CHECK-NEXT: [[ARRAYIDX_8:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 8
1220+ ; CHECK-NEXT: [[TMP16:%.*]] = load i8, ptr [[ARRAYIDX_8]], align 1
1221+ ; CHECK-NEXT: [[CONV_8:%.*]] = sext i8 [[TMP16]] to i32
1222+ ; CHECK-NEXT: [[ARRAYIDX2_8:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 8
1223+ ; CHECK-NEXT: [[TMP17:%.*]] = load i8, ptr [[ARRAYIDX2_8]], align 1
1224+ ; CHECK-NEXT: [[CONV3_8:%.*]] = sext i8 [[TMP17]] to i32
1225+ ; CHECK-NEXT: [[MUL_8:%.*]] = mul nsw i32 [[CONV3_8]], [[CONV_8]]
1226+ ; CHECK-NEXT: [[SUB_8:%.*]] = sub nsw i32 [[MUL_8]], [[SUB_7]]
1227+ ; CHECK-NEXT: [[ARRAYIDX_9:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 9
1228+ ; CHECK-NEXT: [[TMP18:%.*]] = load i8, ptr [[ARRAYIDX_9]], align 1
1229+ ; CHECK-NEXT: [[CONV_9:%.*]] = sext i8 [[TMP18]] to i32
1230+ ; CHECK-NEXT: [[ARRAYIDX2_9:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 9
1231+ ; CHECK-NEXT: [[TMP19:%.*]] = load i8, ptr [[ARRAYIDX2_9]], align 1
1232+ ; CHECK-NEXT: [[CONV3_9:%.*]] = sext i8 [[TMP19]] to i32
1233+ ; CHECK-NEXT: [[MUL_9:%.*]] = mul nsw i32 [[CONV3_9]], [[CONV_9]]
1234+ ; CHECK-NEXT: [[SUB_9:%.*]] = sub nsw i32 [[MUL_9]], [[SUB_8]]
1235+ ; CHECK-NEXT: [[ARRAYIDX_10:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 10
1236+ ; CHECK-NEXT: [[TMP20:%.*]] = load i8, ptr [[ARRAYIDX_10]], align 1
1237+ ; CHECK-NEXT: [[CONV_10:%.*]] = sext i8 [[TMP20]] to i32
1238+ ; CHECK-NEXT: [[ARRAYIDX2_10:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 10
1239+ ; CHECK-NEXT: [[TMP21:%.*]] = load i8, ptr [[ARRAYIDX2_10]], align 1
1240+ ; CHECK-NEXT: [[CONV3_10:%.*]] = sext i8 [[TMP21]] to i32
1241+ ; CHECK-NEXT: [[MUL_10:%.*]] = mul nsw i32 [[CONV3_10]], [[CONV_10]]
1242+ ; CHECK-NEXT: [[SUB_10:%.*]] = sub nsw i32 [[MUL_10]], [[SUB_9]]
1243+ ; CHECK-NEXT: [[ARRAYIDX_11:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 11
1244+ ; CHECK-NEXT: [[TMP22:%.*]] = load i8, ptr [[ARRAYIDX_11]], align 1
1245+ ; CHECK-NEXT: [[CONV_11:%.*]] = sext i8 [[TMP22]] to i32
1246+ ; CHECK-NEXT: [[ARRAYIDX2_11:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 11
1247+ ; CHECK-NEXT: [[TMP23:%.*]] = load i8, ptr [[ARRAYIDX2_11]], align 1
1248+ ; CHECK-NEXT: [[CONV3_11:%.*]] = sext i8 [[TMP23]] to i32
1249+ ; CHECK-NEXT: [[MUL_11:%.*]] = mul nsw i32 [[CONV3_11]], [[CONV_11]]
1250+ ; CHECK-NEXT: [[SUB_11:%.*]] = sub nsw i32 [[MUL_11]], [[SUB_10]]
1251+ ; CHECK-NEXT: [[ARRAYIDX_12:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 12
1252+ ; CHECK-NEXT: [[TMP24:%.*]] = load i8, ptr [[ARRAYIDX_12]], align 1
1253+ ; CHECK-NEXT: [[CONV_12:%.*]] = sext i8 [[TMP24]] to i32
1254+ ; CHECK-NEXT: [[ARRAYIDX2_12:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 12
1255+ ; CHECK-NEXT: [[TMP25:%.*]] = load i8, ptr [[ARRAYIDX2_12]], align 1
1256+ ; CHECK-NEXT: [[CONV3_12:%.*]] = sext i8 [[TMP25]] to i32
1257+ ; CHECK-NEXT: [[MUL_12:%.*]] = mul nsw i32 [[CONV3_12]], [[CONV_12]]
1258+ ; CHECK-NEXT: [[SUB_12:%.*]] = sub nsw i32 [[MUL_12]], [[SUB_11]]
1259+ ; CHECK-NEXT: [[ARRAYIDX_13:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 13
1260+ ; CHECK-NEXT: [[TMP26:%.*]] = load i8, ptr [[ARRAYIDX_13]], align 1
1261+ ; CHECK-NEXT: [[CONV_13:%.*]] = sext i8 [[TMP26]] to i32
1262+ ; CHECK-NEXT: [[ARRAYIDX2_13:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 13
1263+ ; CHECK-NEXT: [[TMP27:%.*]] = load i8, ptr [[ARRAYIDX2_13]], align 1
1264+ ; CHECK-NEXT: [[CONV3_13:%.*]] = sext i8 [[TMP27]] to i32
1265+ ; CHECK-NEXT: [[MUL_13:%.*]] = mul nsw i32 [[CONV3_13]], [[CONV_13]]
1266+ ; CHECK-NEXT: [[SUB_13:%.*]] = sub nsw i32 [[MUL_13]], [[SUB_12]]
1267+ ; CHECK-NEXT: [[ARRAYIDX_14:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 14
1268+ ; CHECK-NEXT: [[TMP28:%.*]] = load i8, ptr [[ARRAYIDX_14]], align 1
1269+ ; CHECK-NEXT: [[CONV_14:%.*]] = sext i8 [[TMP28]] to i32
1270+ ; CHECK-NEXT: [[ARRAYIDX2_14:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 14
1271+ ; CHECK-NEXT: [[TMP29:%.*]] = load i8, ptr [[ARRAYIDX2_14]], align 1
1272+ ; CHECK-NEXT: [[CONV3_14:%.*]] = sext i8 [[TMP29]] to i32
1273+ ; CHECK-NEXT: [[MUL_14:%.*]] = mul nsw i32 [[CONV3_14]], [[CONV_14]]
1274+ ; CHECK-NEXT: [[SUB_14:%.*]] = sub nsw i32 [[MUL_14]], [[SUB_13]]
1275+ ; CHECK-NEXT: [[ARRAYIDX_15:%.*]] = getelementptr inbounds nuw i8, ptr [[X]], i64 15
1276+ ; CHECK-NEXT: [[TMP30:%.*]] = load i8, ptr [[ARRAYIDX_15]], align 1
1277+ ; CHECK-NEXT: [[CONV_15:%.*]] = sext i8 [[TMP30]] to i32
1278+ ; CHECK-NEXT: [[ARRAYIDX2_15:%.*]] = getelementptr inbounds nuw i8, ptr [[Y]], i64 15
1279+ ; CHECK-NEXT: [[TMP31:%.*]] = load i8, ptr [[ARRAYIDX2_15]], align 1
1280+ ; CHECK-NEXT: [[CONV3_15:%.*]] = sext i8 [[TMP31]] to i32
1281+ ; CHECK-NEXT: [[MUL_15:%.*]] = mul nsw i32 [[CONV3_15]], [[CONV_15]]
1282+ ; CHECK-NEXT: [[SUB_15:%.*]] = sub nsw i32 [[MUL_15]], [[SUB_14]]
1283+ ; CHECK-NEXT: ret i32 [[SUB_15]]
1284+ ;
1285+ entry:
1286+ %0 = load i8 , ptr %x
1287+ %conv = sext i8 %0 to i32
1288+ %1 = load i8 , ptr %y
1289+ %conv3 = sext i8 %1 to i32
1290+ %mul = mul nsw i32 %conv3 , %conv
1291+ %arrayidx.1 = getelementptr inbounds nuw i8 , ptr %x , i64 1
1292+ %2 = load i8 , ptr %arrayidx.1
1293+ %conv.1 = sext i8 %2 to i32
1294+ %arrayidx2.1 = getelementptr inbounds nuw i8 , ptr %y , i64 1
1295+ %3 = load i8 , ptr %arrayidx2.1
1296+ %conv3.1 = sext i8 %3 to i32
1297+ %mul.1 = mul nsw i32 %conv3.1 , %conv.1
1298+ %sub.1 = sub nsw i32 %mul.1 , %mul
1299+ %arrayidx.2 = getelementptr inbounds nuw i8 , ptr %x , i64 2
1300+ %4 = load i8 , ptr %arrayidx.2
1301+ %conv.2 = sext i8 %4 to i32
1302+ %arrayidx2.2 = getelementptr inbounds nuw i8 , ptr %y , i64 2
1303+ %5 = load i8 , ptr %arrayidx2.2
1304+ %conv3.2 = sext i8 %5 to i32
1305+ %mul.2 = mul nsw i32 %conv3.2 , %conv.2
1306+ %sub.2 = sub nsw i32 %mul.2 , %sub.1
1307+ %arrayidx.3 = getelementptr inbounds nuw i8 , ptr %x , i64 3
1308+ %6 = load i8 , ptr %arrayidx.3
1309+ %conv.3 = sext i8 %6 to i32
1310+ %arrayidx2.3 = getelementptr inbounds nuw i8 , ptr %y , i64 3
1311+ %7 = load i8 , ptr %arrayidx2.3
1312+ %conv3.3 = sext i8 %7 to i32
1313+ %mul.3 = mul nsw i32 %conv3.3 , %conv.3
1314+ %sub.3 = sub nsw i32 %mul.3 , %sub.2
1315+ %arrayidx.4 = getelementptr inbounds nuw i8 , ptr %x , i64 4
1316+ %8 = load i8 , ptr %arrayidx.4
1317+ %conv.4 = sext i8 %8 to i32
1318+ %arrayidx2.4 = getelementptr inbounds nuw i8 , ptr %y , i64 4
1319+ %9 = load i8 , ptr %arrayidx2.4
1320+ %conv3.4 = sext i8 %9 to i32
1321+ %mul.4 = mul nsw i32 %conv3.4 , %conv.4
1322+ %sub.4 = sub nsw i32 %mul.4 , %sub.3
1323+ %arrayidx.5 = getelementptr inbounds nuw i8 , ptr %x , i64 5
1324+ %10 = load i8 , ptr %arrayidx.5
1325+ %conv.5 = sext i8 %10 to i32
1326+ %arrayidx2.5 = getelementptr inbounds nuw i8 , ptr %y , i64 5
1327+ %11 = load i8 , ptr %arrayidx2.5
1328+ %conv3.5 = sext i8 %11 to i32
1329+ %mul.5 = mul nsw i32 %conv3.5 , %conv.5
1330+ %sub.5 = sub nsw i32 %mul.5 , %sub.4
1331+ %arrayidx.6 = getelementptr inbounds nuw i8 , ptr %x , i64 6
1332+ %12 = load i8 , ptr %arrayidx.6
1333+ %conv.6 = sext i8 %12 to i32
1334+ %arrayidx2.6 = getelementptr inbounds nuw i8 , ptr %y , i64 6
1335+ %13 = load i8 , ptr %arrayidx2.6
1336+ %conv3.6 = sext i8 %13 to i32
1337+ %mul.6 = mul nsw i32 %conv3.6 , %conv.6
1338+ %sub.6 = sub nsw i32 %mul.6 , %sub.5
1339+ %arrayidx.7 = getelementptr inbounds nuw i8 , ptr %x , i64 7
1340+ %14 = load i8 , ptr %arrayidx.7
1341+ %conv.7 = sext i8 %14 to i32
1342+ %arrayidx2.7 = getelementptr inbounds nuw i8 , ptr %y , i64 7
1343+ %15 = load i8 , ptr %arrayidx2.7
1344+ %conv3.7 = sext i8 %15 to i32
1345+ %mul.7 = mul nsw i32 %conv3.7 , %conv.7
1346+ %sub.7 = sub nsw i32 %mul.7 , %sub.6
1347+ %arrayidx.8 = getelementptr inbounds nuw i8 , ptr %x , i64 8
1348+ %16 = load i8 , ptr %arrayidx.8
1349+ %conv.8 = sext i8 %16 to i32
1350+ %arrayidx2.8 = getelementptr inbounds nuw i8 , ptr %y , i64 8
1351+ %17 = load i8 , ptr %arrayidx2.8
1352+ %conv3.8 = sext i8 %17 to i32
1353+ %mul.8 = mul nsw i32 %conv3.8 , %conv.8
1354+ %sub.8 = sub nsw i32 %mul.8 , %sub.7
1355+ %arrayidx.9 = getelementptr inbounds nuw i8 , ptr %x , i64 9
1356+ %18 = load i8 , ptr %arrayidx.9
1357+ %conv.9 = sext i8 %18 to i32
1358+ %arrayidx2.9 = getelementptr inbounds nuw i8 , ptr %y , i64 9
1359+ %19 = load i8 , ptr %arrayidx2.9
1360+ %conv3.9 = sext i8 %19 to i32
1361+ %mul.9 = mul nsw i32 %conv3.9 , %conv.9
1362+ %sub.9 = sub nsw i32 %mul.9 , %sub.8
1363+ %arrayidx.10 = getelementptr inbounds nuw i8 , ptr %x , i64 10
1364+ %20 = load i8 , ptr %arrayidx.10
1365+ %conv.10 = sext i8 %20 to i32
1366+ %arrayidx2.10 = getelementptr inbounds nuw i8 , ptr %y , i64 10
1367+ %21 = load i8 , ptr %arrayidx2.10
1368+ %conv3.10 = sext i8 %21 to i32
1369+ %mul.10 = mul nsw i32 %conv3.10 , %conv.10
1370+ %sub.10 = sub nsw i32 %mul.10 , %sub.9
1371+ %arrayidx.11 = getelementptr inbounds nuw i8 , ptr %x , i64 11
1372+ %22 = load i8 , ptr %arrayidx.11
1373+ %conv.11 = sext i8 %22 to i32
1374+ %arrayidx2.11 = getelementptr inbounds nuw i8 , ptr %y , i64 11
1375+ %23 = load i8 , ptr %arrayidx2.11
1376+ %conv3.11 = sext i8 %23 to i32
1377+ %mul.11 = mul nsw i32 %conv3.11 , %conv.11
1378+ %sub.11 = sub nsw i32 %mul.11 , %sub.10
1379+ %arrayidx.12 = getelementptr inbounds nuw i8 , ptr %x , i64 12
1380+ %24 = load i8 , ptr %arrayidx.12
1381+ %conv.12 = sext i8 %24 to i32
1382+ %arrayidx2.12 = getelementptr inbounds nuw i8 , ptr %y , i64 12
1383+ %25 = load i8 , ptr %arrayidx2.12
1384+ %conv3.12 = sext i8 %25 to i32
1385+ %mul.12 = mul nsw i32 %conv3.12 , %conv.12
1386+ %sub.12 = sub nsw i32 %mul.12 , %sub.11
1387+ %arrayidx.13 = getelementptr inbounds nuw i8 , ptr %x , i64 13
1388+ %26 = load i8 , ptr %arrayidx.13
1389+ %conv.13 = sext i8 %26 to i32
1390+ %arrayidx2.13 = getelementptr inbounds nuw i8 , ptr %y , i64 13
1391+ %27 = load i8 , ptr %arrayidx2.13
1392+ %conv3.13 = sext i8 %27 to i32
1393+ %mul.13 = mul nsw i32 %conv3.13 , %conv.13
1394+ %sub.13 = sub nsw i32 %mul.13 , %sub.12
1395+ %arrayidx.14 = getelementptr inbounds nuw i8 , ptr %x , i64 14
1396+ %28 = load i8 , ptr %arrayidx.14
1397+ %conv.14 = sext i8 %28 to i32
1398+ %arrayidx2.14 = getelementptr inbounds nuw i8 , ptr %y , i64 14
1399+ %29 = load i8 , ptr %arrayidx2.14
1400+ %conv3.14 = sext i8 %29 to i32
1401+ %mul.14 = mul nsw i32 %conv3.14 , %conv.14
1402+ %sub.14 = sub nsw i32 %mul.14 , %sub.13
1403+ %arrayidx.15 = getelementptr inbounds nuw i8 , ptr %x , i64 15
1404+ %30 = load i8 , ptr %arrayidx.15
1405+ %conv.15 = sext i8 %30 to i32
1406+ %arrayidx2.15 = getelementptr inbounds nuw i8 , ptr %y , i64 15
1407+ %31 = load i8 , ptr %arrayidx2.15
1408+ %conv3.15 = sext i8 %31 to i32
1409+ %mul.15 = mul nsw i32 %conv3.15 , %conv.15
1410+ %sub.15 = sub nsw i32 %mul.15 , %sub.14
1411+ ret i32 %sub.15
1412+ }
0 commit comments