@@ -1071,6 +1071,7 @@ define <4 x i16> @dont_fold_srem_one(<4 x i16> %x) {
10711071; P9LE-NEXT: extsw r4, r4
10721072; P9LE-NEXT: mulld r5, r4, r5
10731073; P9LE-NEXT: rldicl r5, r5, 32, 32
1074+ ; P9LE-NEXT: xxlxor v4, v4, v4
10741075; P9LE-NEXT: add r4, r5, r4
10751076; P9LE-NEXT: srwi r5, r4, 31
10761077; P9LE-NEXT: srawi r4, r4, 9
@@ -1079,9 +1080,6 @@ define <4 x i16> @dont_fold_srem_one(<4 x i16> %x) {
10791080; P9LE-NEXT: mulli r4, r4, 654
10801081; P9LE-NEXT: subf r3, r4, r3
10811082; P9LE-NEXT: mtvsrd f0, r3
1082- ; P9LE-NEXT: li r3, 0
1083- ; P9LE-NEXT: xxswapd v3, vs0
1084- ; P9LE-NEXT: mtvsrd f0, r3
10851083; P9LE-NEXT: li r3, 4
10861084; P9LE-NEXT: vextuhrx r3, r3, v2
10871085; P9LE-NEXT: extsh r4, r3
@@ -1096,7 +1094,7 @@ define <4 x i16> @dont_fold_srem_one(<4 x i16> %x) {
10961094; P9LE-NEXT: lis r5, 24749
10971095; P9LE-NEXT: mulli r4, r4, 23
10981096; P9LE-NEXT: subf r3, r4, r3
1099- ; P9LE-NEXT: xxswapd v4 , vs0
1097+ ; P9LE-NEXT: xxswapd v3 , vs0
11001098; P9LE-NEXT: mtvsrd f0, r3
11011099; P9LE-NEXT: li r3, 6
11021100; P9LE-NEXT: vextuhrx r3, r3, v2
@@ -1181,6 +1179,7 @@ define <4 x i16> @dont_fold_srem_one(<4 x i16> %x) {
11811179; P8LE-NEXT: lis r3, 24749
11821180; P8LE-NEXT: lis r8, -19946
11831181; P8LE-NEXT: lis r10, -14230
1182+ ; P8LE-NEXT: xxlxor v5, v5, v5
11841183; P8LE-NEXT: ori r3, r3, 47143
11851184; P8LE-NEXT: ori r8, r8, 17097
11861185; P8LE-NEXT: mfvsrd r4, f0
@@ -1213,21 +1212,18 @@ define <4 x i16> @dont_fold_srem_one(<4 x i16> %x) {
12131212; P8LE-NEXT: mulli r3, r3, 5423
12141213; P8LE-NEXT: add r7, r7, r9
12151214; P8LE-NEXT: mulli r8, r8, 23
1216- ; P8LE-NEXT: li r9, 0
12171215; P8LE-NEXT: mulli r7, r7, 654
1218- ; P8LE-NEXT: mtvsrd f0, r9
12191216; P8LE-NEXT: subf r3, r3, r5
1220- ; P8LE-NEXT: xxswapd v4, vs0
1221- ; P8LE-NEXT: subf r5, r8, r6
1217+ ; P8LE-NEXT: mtvsrd f0, r3
1218+ ; P8LE-NEXT: subf r3, r8, r6
1219+ ; P8LE-NEXT: subf r4, r7, r4
12221220; P8LE-NEXT: mtvsrd f1, r3
1223- ; P8LE-NEXT: subf r3, r7, r4
1224- ; P8LE-NEXT: mtvsrd f2, r5
1225- ; P8LE-NEXT: mtvsrd f3, r3
1226- ; P8LE-NEXT: xxswapd v2, vs1
1227- ; P8LE-NEXT: xxswapd v3, vs2
1228- ; P8LE-NEXT: xxswapd v5, vs3
1221+ ; P8LE-NEXT: mtvsrd f2, r4
1222+ ; P8LE-NEXT: xxswapd v2, vs0
1223+ ; P8LE-NEXT: xxswapd v3, vs1
1224+ ; P8LE-NEXT: xxswapd v4, vs2
12291225; P8LE-NEXT: vmrglh v2, v2, v3
1230- ; P8LE-NEXT: vmrglh v3, v5, v4
1226+ ; P8LE-NEXT: vmrglh v3, v4, v5
12311227; P8LE-NEXT: vmrglw v2, v2, v3
12321228; P8LE-NEXT: blr
12331229;
@@ -1332,11 +1328,9 @@ define <4 x i16> @dont_fold_urem_i16_smax(<4 x i16> %x) {
13321328; P9LE-NEXT: subf r3, r4, r3
13331329; P9LE-NEXT: xxswapd v4, vs0
13341330; P9LE-NEXT: mtvsrd f0, r3
1335- ; P9LE-NEXT: li r3, 0
13361331; P9LE-NEXT: xxswapd v2, vs0
1337- ; P9LE-NEXT: mtvsrd f0, r3
13381332; P9LE-NEXT: vmrglh v3, v4, v3
1339- ; P9LE-NEXT: xxswapd v4, vs0
1333+ ; P9LE-NEXT: xxlxor v4, v4, v4
13401334; P9LE-NEXT: vmrglh v2, v2, v4
13411335; P9LE-NEXT: vmrglw v2, v3, v2
13421336; P9LE-NEXT: blr
@@ -1394,49 +1388,47 @@ define <4 x i16> @dont_fold_urem_i16_smax(<4 x i16> %x) {
13941388; P8LE-LABEL: dont_fold_urem_i16_smax:
13951389; P8LE: # %bb.0:
13961390; P8LE-NEXT: xxswapd vs0, v2
1397- ; P8LE-NEXT: lis r3, 24749
1398- ; P8LE-NEXT: lis r8, -19946
1399- ; P8LE-NEXT: ori r3, r3, 47143
1400- ; P8LE-NEXT: ori r8, r8, 17097
1401- ; P8LE-NEXT: mfvsrd r4, f0
1402- ; P8LE-NEXT: rldicl r5, r4, 16, 48
1403- ; P8LE-NEXT: rldicl r6, r4, 32, 48
1404- ; P8LE-NEXT: extsh r7, r5
1405- ; P8LE-NEXT: extsh r9, r6
1406- ; P8LE-NEXT: extsw r7, r7
1391+ ; P8LE-NEXT: lis r6, 24749
1392+ ; P8LE-NEXT: lis r7, -19946
1393+ ; P8LE-NEXT: xxlxor v5, v5, v5
1394+ ; P8LE-NEXT: ori r6, r6, 47143
1395+ ; P8LE-NEXT: ori r7, r7, 17097
1396+ ; P8LE-NEXT: mfvsrd r3, f0
1397+ ; P8LE-NEXT: rldicl r4, r3, 16, 48
1398+ ; P8LE-NEXT: rldicl r5, r3, 32, 48
1399+ ; P8LE-NEXT: extsh r8, r4
1400+ ; P8LE-NEXT: extsh r9, r5
1401+ ; P8LE-NEXT: extsw r8, r8
14071402; P8LE-NEXT: extsw r9, r9
1408- ; P8LE-NEXT: mulld r3, r7, r3
1409- ; P8LE-NEXT: mulld r7, r9, r8
1410- ; P8LE-NEXT: rldicl r4, r4, 48, 48
1411- ; P8LE-NEXT: rldicl r8, r3, 1, 63
1412- ; P8LE-NEXT: rldicl r3, r3, 32, 32
1403+ ; P8LE-NEXT: mulld r6, r8, r6
1404+ ; P8LE-NEXT: mulld r7, r9, r7
1405+ ; P8LE-NEXT: rldicl r3, r3, 48, 48
1406+ ; P8LE-NEXT: rldicl r8, r6, 32, 32
14131407; P8LE-NEXT: rldicl r7, r7, 32, 32
1414- ; P8LE-NEXT: srawi r3, r3, 11
1408+ ; P8LE-NEXT: rldicl r6, r6, 1, 63
1409+ ; P8LE-NEXT: srawi r8, r8, 11
14151410; P8LE-NEXT: add r7, r7, r9
1416- ; P8LE-NEXT: add r3, r3, r8
1417- ; P8LE-NEXT: li r9, 0
1411+ ; P8LE-NEXT: add r6, r8, r6
14181412; P8LE-NEXT: srwi r8, r7, 31
14191413; P8LE-NEXT: srawi r7, r7, 4
1420- ; P8LE-NEXT: mtvsrd f0, r9
1421- ; P8LE-NEXT: mulli r3, r3, 5423
1414+ ; P8LE-NEXT: mulli r6, r6, 5423
14221415; P8LE-NEXT: add r7, r7, r8
1423- ; P8LE-NEXT: extsh r8, r4
1416+ ; P8LE-NEXT: extsh r8, r3
14241417; P8LE-NEXT: mulli r7, r7, 23
14251418; P8LE-NEXT: srawi r8, r8, 15
1426- ; P8LE-NEXT: xxswapd v4, vs0
1427- ; P8LE-NEXT: subf r3, r3, r5
1428- ; P8LE-NEXT: addze r5, r8
1429- ; P8LE-NEXT: slwi r5, r5, 15
1430- ; P8LE-NEXT: subf r6, r7, r6
1431- ; P8LE-NEXT: mtvsrd f1, r3
1432- ; P8LE-NEXT: subf r3, r5, r4
1433- ; P8LE-NEXT: mtvsrd f2, r6
1434- ; P8LE-NEXT: mtvsrd f3, r3
1435- ; P8LE-NEXT: xxswapd v2, vs1
1436- ; P8LE-NEXT: xxswapd v3, vs2
1437- ; P8LE-NEXT: xxswapd v5, vs3
1419+ ; P8LE-NEXT: subf r4, r6, r4
1420+ ; P8LE-NEXT: addze r6, r8
1421+ ; P8LE-NEXT: mtvsrd f0, r4
1422+ ; P8LE-NEXT: slwi r4, r6, 15
1423+ ; P8LE-NEXT: subf r5, r7, r5
1424+ ; P8LE-NEXT: subf r3, r4, r3
1425+ ; P8LE-NEXT: mtvsrd f1, r5
1426+ ; P8LE-NEXT: xxswapd v2, vs0
1427+ ; P8LE-NEXT: mtvsrd f2, r3
1428+ ; P8LE-NEXT: xxswapd v3, vs1
1429+ ; P8LE-NEXT: xxswapd v4, vs2
14381430; P8LE-NEXT: vmrglh v2, v2, v3
1439- ; P8LE-NEXT: vmrglh v3, v5, v4
1431+ ; P8LE-NEXT: vmrglh v3, v4, v5
14401432; P8LE-NEXT: vmrglw v2, v2, v3
14411433; P8LE-NEXT: blr
14421434;
0 commit comments