@@ -1421,7 +1421,6 @@ def PMULUDQrr : PDI<0xF4, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1421
1421
[(set VR128:$dst, (int_x86_sse2_pmulu_dq VR128:$src1,
1422
1422
VR128:$src2))]>;
1423
1423
}
1424
-
1425
1424
def PMULHUWrm : PDI<0xE4 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1426
1425
" pmulhuw {$src2, $dst|$dst, $src2}" ,
1427
1426
[(set VR128:$dst, (int_x86_sse2_pmulhu_w VR128:$src1,
@@ -1440,16 +1439,19 @@ def PMULUDQrm : PDI<0xF4, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2
1440
1439
[(set VR128:$dst, (int_x86_sse2_pmulu_dq VR128:$src1,
1441
1440
(bc_v4i32 (loadv2i64 addr:$src2))))]>;
1442
1441
1442
+ let isCommutable = 1 in {
1443
1443
def PMADDWDrr : PDI<0xF5 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1444
1444
" pmaddwd {$src2, $dst|$dst, $src2}" ,
1445
1445
[(set VR128:$dst, (int_x86_sse2_pmadd_wd VR128:$src1,
1446
1446
VR128:$src2))]>;
1447
+ }
1447
1448
def PMADDWDrm : PDI<0xF5 , MRMSrcMem,
1448
1449
(ops VR128:$dst, VR128:$src1, i128mem:$src2),
1449
1450
" pmaddwd {$src2, $dst|$dst, $src2}" ,
1450
1451
[(set VR128:$dst, (int_x86_sse2_pmadd_wd VR128:$src1,
1451
1452
(bc_v8i16 (loadv2i64 addr:$src2))))]>;
1452
1453
1454
+ let isCommutable = 1 in {
1453
1455
def PAVGBrr : PDI<0xE0 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1454
1456
" pavgb {$src2, $dst|$dst, $src2}" ,
1455
1457
[(set VR128:$dst, (int_x86_sse2_pavg_b VR128:$src1,
@@ -1458,6 +1460,7 @@ def PAVGWrr : PDI<0xE3, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1458
1460
" pavgw {$src2, $dst|$dst, $src2}" ,
1459
1461
[(set VR128:$dst, (int_x86_sse2_pavg_w VR128:$src1,
1460
1462
VR128:$src2))]>;
1463
+ }
1461
1464
def PAVGBrm : PDI<0xE0 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1462
1465
" pavgb {$src2, $dst|$dst, $src2}" ,
1463
1466
[(set VR128:$dst, (int_x86_sse2_pavg_b VR128:$src1,
@@ -1466,6 +1469,56 @@ def PAVGWrm : PDI<0xE3, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1466
1469
" pavgw {$src2, $dst|$dst, $src2}" ,
1467
1470
[(set VR128:$dst, (int_x86_sse2_pavg_w VR128:$src1,
1468
1471
(bc_v8i16 (loadv2i64 addr:$src2))))]>;
1472
+
1473
+ let isCommutable = 1 in {
1474
+ def PMAXUBrr : PDI<0xDE , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1475
+ " pmaxub {$src2, $dst|$dst, $src2}" ,
1476
+ [(set VR128:$dst, (int_x86_sse2_pmaxu_b VR128:$src1,
1477
+ VR128:$src2))]>;
1478
+ def PMAXSWrr : PDI<0xEE , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1479
+ " pmaxsw {$src2, $dst|$dst, $src2}" ,
1480
+ [(set VR128:$dst, (int_x86_sse2_pmaxs_w VR128:$src1,
1481
+ VR128:$src2))]>;
1482
+ }
1483
+ def PMAXUBrm : PDI<0xDE , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1484
+ " pmaxub {$src2, $dst|$dst, $src2}" ,
1485
+ [(set VR128:$dst, (int_x86_sse2_pmaxu_b VR128:$src1,
1486
+ (bc_v16i8 (loadv2i64 addr:$src2))))]>;
1487
+ def PMAXSWrm : PDI<0xEE , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1488
+ " pmaxsw {$src2, $dst|$dst, $src2}" ,
1489
+ [(set VR128:$dst, (int_x86_sse2_pmaxs_w VR128:$src1,
1490
+ (bc_v8i16 (loadv2i64 addr:$src2))))]>;
1491
+
1492
+ let isCommutable = 1 in {
1493
+ def PMINUBrr : PDI<0xDA , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1494
+ " pminub {$src2, $dst|$dst, $src2}" ,
1495
+ [(set VR128:$dst, (int_x86_sse2_pminu_b VR128:$src1,
1496
+ VR128:$src2))]>;
1497
+ def PMINSWrr : PDI<0xEA , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1498
+ " pminsw {$src2, $dst|$dst, $src2}" ,
1499
+ [(set VR128:$dst, (int_x86_sse2_pmins_w VR128:$src1,
1500
+ VR128:$src2))]>;
1501
+ }
1502
+ def PMINUBrm : PDI<0xDA , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1503
+ " pminub {$src2, $dst|$dst, $src2}" ,
1504
+ [(set VR128:$dst, (int_x86_sse2_pminu_b VR128:$src1,
1505
+ (bc_v16i8 (loadv2i64 addr:$src2))))]>;
1506
+ def PMINSWrm : PDI<0xEA , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1507
+ " pminsw {$src2, $dst|$dst, $src2}" ,
1508
+ [(set VR128:$dst, (int_x86_sse2_pmins_w VR128:$src1,
1509
+ (bc_v8i16 (loadv2i64 addr:$src2))))]>;
1510
+
1511
+
1512
+ let isCommutable = 1 in {
1513
+ def PSADBWrr : PDI<0xE0 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1514
+ " psadbw {$src2, $dst|$dst, $src2}" ,
1515
+ [(set VR128:$dst, (int_x86_sse2_psad_bw VR128:$src1,
1516
+ VR128:$src2))]>;
1517
+ }
1518
+ def PSADBWrm : PDI<0xE0 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1519
+ " psadbw {$src2, $dst|$dst, $src2}" ,
1520
+ [(set VR128:$dst, (int_x86_sse2_psad_bw VR128:$src1,
1521
+ (bc_v16i8 (loadv2i64 addr:$src2))))]>;
1469
1522
}
1470
1523
1471
1524
let isTwoAddress = 1 in {
0 commit comments