@@ -1383,22 +1383,89 @@ def PSUBUSWrr : PDI<0xD9, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1383
1383
[(set VR128:$dst, (int_x86_sse2_psubus_w VR128:$src1,
1384
1384
VR128:$src2))]>;
1385
1385
1386
- def PSUBSBrm : PDI<0xE8 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1386
+ def PSUBSBrm : PDI<0xE8 , MRMSrcMem,
1387
+ (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1387
1388
" psubsb {$src2, $dst|$dst, $src2}" ,
1388
1389
[(set VR128:$dst, (int_x86_sse2_psubs_b VR128:$src1,
1389
1390
(bc_v16i8 (loadv2i64 addr:$src2))))]>;
1390
- def PSUBSWrm : PDI<0xE9 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1391
+ def PSUBSWrm : PDI<0xE9 , MRMSrcMem,
1392
+ (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1391
1393
" psubsw {$src2, $dst|$dst, $src2}" ,
1392
1394
[(set VR128:$dst, (int_x86_sse2_psubs_w VR128:$src1,
1393
1395
(bc_v8i16 (loadv2i64 addr:$src2))))]>;
1394
- def PSUBUSBrm : PDI<0xD8 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1396
+ def PSUBUSBrm : PDI<0xD8 , MRMSrcMem,
1397
+ (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1395
1398
" psubusb {$src2, $dst|$dst, $src2}" ,
1396
1399
[(set VR128:$dst, (int_x86_sse2_psubus_b VR128:$src1,
1397
1400
(bc_v16i8 (loadv2i64 addr:$src2))))]>;
1398
- def PSUBUSWrm : PDI<0xD9 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1401
+ def PSUBUSWrm : PDI<0xD9 , MRMSrcMem,
1402
+ (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1399
1403
" psubusw {$src2, $dst|$dst, $src2}" ,
1400
1404
[(set VR128:$dst, (int_x86_sse2_psubus_w VR128:$src1,
1401
1405
(bc_v8i16 (loadv2i64 addr:$src2))))]>;
1406
+
1407
+ let isCommutable = 1 in {
1408
+ def PMULHUWrr : PDI<0xE4 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1409
+ " pmulhuw {$src2, $dst|$dst, $src2}" ,
1410
+ [(set VR128:$dst, (int_x86_sse2_pmulhu_w VR128:$src1,
1411
+ VR128:$src2))]>;
1412
+ def PMULHWrr : PDI<0xE5 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1413
+ " pmulhw {$src2, $dst|$dst, $src2}" ,
1414
+ [(set VR128:$dst, (int_x86_sse2_pmulh_w VR128:$src1,
1415
+ VR128:$src2))]>;
1416
+ def PMULLWrr : PDI<0xD5 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1417
+ " pmullw {$src2, $dst|$dst, $src2}" ,
1418
+ [(set VR128:$dst, (v8i16 (mul VR128:$src1, VR128:$src2)))]>;
1419
+ def PMULUDQrr : PDI<0xF4 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1420
+ " pmuludq {$src2, $dst|$dst, $src2}" ,
1421
+ [(set VR128:$dst, (int_x86_sse2_pmulu_dq VR128:$src1,
1422
+ VR128:$src2))]>;
1423
+ }
1424
+
1425
+ def PMULHUWrm : PDI<0xE4 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1426
+ " pmulhuw {$src2, $dst|$dst, $src2}" ,
1427
+ [(set VR128:$dst, (int_x86_sse2_pmulhu_w VR128:$src1,
1428
+ (bc_v8i16 (loadv2i64 addr:$src2))))]>;
1429
+ def PMULHWrm : PDI<0xE5 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1430
+ " pmulhw {$src2, $dst|$dst, $src2}" ,
1431
+ [(set VR128:$dst, (int_x86_sse2_pmulh_w VR128:$src1,
1432
+ (bc_v8i16 (loadv2i64 addr:$src2))))]>;
1433
+ def PMULLWrm : PDI<0xD5 , MRMSrcMem,
1434
+ (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1435
+ " pmullw {$src2, $dst|$dst, $src2}" ,
1436
+ [(set VR128:$dst, (v8i16 (mul VR128:$src1,
1437
+ (bc_v8i16 (loadv2i64 addr:$src2)))))]>;
1438
+ def PMULUDQrm : PDI<0xF4 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1439
+ " pmuludq {$src2, $dst|$dst, $src2}" ,
1440
+ [(set VR128:$dst, (int_x86_sse2_pmulu_dq VR128:$src1,
1441
+ (bc_v4i32 (loadv2i64 addr:$src2))))]>;
1442
+
1443
+ def PMADDWDrr : PDI<0xF5 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1444
+ " pmaddwd {$src2, $dst|$dst, $src2}" ,
1445
+ [(set VR128:$dst, (int_x86_sse2_pmadd_wd VR128:$src1,
1446
+ VR128:$src2))]>;
1447
+ def PMADDWDrm : PDI<0xF5 , MRMSrcMem,
1448
+ (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1449
+ " pmaddwd {$src2, $dst|$dst, $src2}" ,
1450
+ [(set VR128:$dst, (int_x86_sse2_pmadd_wd VR128:$src1,
1451
+ (bc_v8i16 (loadv2i64 addr:$src2))))]>;
1452
+
1453
+ def PAVGBrr : PDI<0xE0 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1454
+ " pavgb {$src2, $dst|$dst, $src2}" ,
1455
+ [(set VR128:$dst, (int_x86_sse2_pavg_b VR128:$src1,
1456
+ VR128:$src2))]>;
1457
+ def PAVGWrr : PDI<0xE3 , MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
1458
+ " pavgw {$src2, $dst|$dst, $src2}" ,
1459
+ [(set VR128:$dst, (int_x86_sse2_pavg_w VR128:$src1,
1460
+ VR128:$src2))]>;
1461
+ def PAVGBrm : PDI<0xE0 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1462
+ " pavgb {$src2, $dst|$dst, $src2}" ,
1463
+ [(set VR128:$dst, (int_x86_sse2_pavg_b VR128:$src1,
1464
+ (bc_v16i8 (loadv2i64 addr:$src2))))]>;
1465
+ def PAVGWrm : PDI<0xE3 , MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
1466
+ " pavgw {$src2, $dst|$dst, $src2}" ,
1467
+ [(set VR128:$dst, (int_x86_sse2_pavg_w VR128:$src1,
1468
+ (bc_v8i16 (loadv2i64 addr:$src2))))]>;
1402
1469
}
1403
1470
1404
1471
let isTwoAddress = 1 in {
0 commit comments