Lines Matching refs:Pat
11 // as well as Pat patterns used during instruction selection.
55 def : Pat<(X86callseq_start timm:$amt1),
74 def : Pat<(X86callseq_start timm:$amt1),
268 def : Pat<(i8 0), (EXTRACT_SUBREG (MOV32r0), sub_8bit)>;
269 def : Pat<(i16 0), (EXTRACT_SUBREG (MOV32r0), sub_16bit)>;
270 def : Pat<(i64 0), (SUBREG_TO_REG (i64 0), (MOV32r0), sub_32bit)> {
286 def : Pat<(i16 1), (EXTRACT_SUBREG (MOV32r1), sub_16bit)>;
287 def : Pat<(i16 -1), (EXTRACT_SUBREG (MOV32r_1), sub_16bit)>;
314 def : Pat<(i64 mov64imm32:$src),
319 // FIXME: These are pseudo ops that should be replaced with Pat<> patterns.
320 // However, Pat<> can't replicate the destination reg into the inputs of the
333 def : Pat<(i16 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
335 def : Pat<(i32 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
337 def : Pat<(i64 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
340 def : Pat<(i16 (sext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
342 def : Pat<(i32 (sext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
344 def : Pat<(i64 (sext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
351 def : Pat<(and (i8 (X86setcc_c X86_COND_B, EFLAGS)), 1),
355 def : Pat<(add (and (i8 (X86setcc_c X86_COND_B, EFLAGS)), 1), GR8:$op),
357 def : Pat<(add (and (i32 (X86setcc_c X86_COND_B, EFLAGS)), 1), GR32:$op),
359 def : Pat<(add (and (i64 (X86setcc_c X86_COND_B, EFLAGS)), 1), GR64:$op),
363 def : Pat<(sub GR8:$op, (and (i8 (X86setcc_c X86_COND_B, EFLAGS)), 1)),
365 def : Pat<(sub GR32:$op, (and (i32 (X86setcc_c X86_COND_B, EFLAGS)), 1)),
367 def : Pat<(sub GR64:$op, (and (i64 (X86setcc_c X86_COND_B, EFLAGS)), 1)),
371 def : Pat<(sub GR8:$op, (i8 (X86setcc_c X86_COND_B, EFLAGS))),
373 def : Pat<(sub GR32:$op, (i32 (X86setcc_c X86_COND_B, EFLAGS))),
375 def : Pat<(sub GR64:$op, (i64 (X86setcc_c X86_COND_B, EFLAGS))),
1020 def : Pat<(store (i16 0), addr:$dst), (AND16mi8 addr:$dst, 0)>;
1021 def : Pat<(store (i32 0), addr:$dst), (AND32mi8 addr:$dst, 0)>;
1022 def : Pat<(store (i64 0), addr:$dst), (AND64mi8 addr:$dst, 0)>;
1023 def : Pat<(store (i16 -1), addr:$dst), (OR16mi8 addr:$dst, -1)>;
1024 def : Pat<(store (i32 -1), addr:$dst), (OR32mi8 addr:$dst, -1)>;
1025 def : Pat<(store (i64 -1), addr:$dst), (OR64mi8 addr:$dst, -1)>;
1029 def : Pat<(i32 (X86Wrapper tconstpool :$dst)), (MOV32ri tconstpool :$dst)>;
1030 def : Pat<(i32 (X86Wrapper tjumptable :$dst)), (MOV32ri tjumptable :$dst)>;
1031 def : Pat<(i32 (X86Wrapper tglobaltlsaddr:$dst)),(MOV32ri tglobaltlsaddr:$dst)>;
1032 def : Pat<(i32 (X86Wrapper tglobaladdr :$dst)), (MOV32ri tglobaladdr :$dst)>;
1033 def : Pat<(i32 (X86Wrapper texternalsym:$dst)), (MOV32ri texternalsym:$dst)>;
1034 def : Pat<(i32 (X86Wrapper mcsym:$dst)), (MOV32ri mcsym:$dst)>;
1035 def : Pat<(i32 (X86Wrapper tblockaddress:$dst)), (MOV32ri tblockaddress:$dst)>;
1037 def : Pat<(add GR32:$src1, (X86Wrapper tconstpool:$src2)),
1039 def : Pat<(add GR32:$src1, (X86Wrapper tjumptable:$src2)),
1041 def : Pat<(add GR32:$src1, (X86Wrapper tglobaladdr :$src2)),
1043 def : Pat<(add GR32:$src1, (X86Wrapper texternalsym:$src2)),
1045 def : Pat<(add GR32:$src1, (X86Wrapper mcsym:$src2)),
1047 def : Pat<(add GR32:$src1, (X86Wrapper tblockaddress:$src2)),
1050 def : Pat<(store (i32 (X86Wrapper tglobaladdr:$src)), addr:$dst),
1052 def : Pat<(store (i32 (X86Wrapper texternalsym:$src)), addr:$dst),
1054 def : Pat<(store (i32 (X86Wrapper mcsym:$src)), addr:$dst),
1056 def : Pat<(store (i32 (X86Wrapper tblockaddress:$src)), addr:$dst),
1062 def : Pat<(i64 (X86Wrapper tconstpool :$dst)),
1064 def : Pat<(i64 (X86Wrapper tjumptable :$dst)),
1066 def : Pat<(i64 (X86Wrapper tglobaladdr :$dst)),
1068 def : Pat<(i64 (X86Wrapper texternalsym:$dst)),
1070 def : Pat<(i64 (X86Wrapper mcsym:$dst)),
1072 def : Pat<(i64 (X86Wrapper tblockaddress:$dst)),
1078 def : Pat<(i64 (X86Wrapper tconstpool :$dst)),
1080 def : Pat<(i64 (X86Wrapper tjumptable :$dst)),
1082 def : Pat<(i64 (X86Wrapper tglobaladdr :$dst)),
1084 def : Pat<(i64 (X86Wrapper texternalsym:$dst)),
1086 def : Pat<(i64 (X86Wrapper mcsym:$dst)),
1088 def : Pat<(i64 (X86Wrapper tblockaddress:$dst)),
1094 def : Pat<(store (i64 (X86Wrapper tconstpool:$src)), addr:$dst),
1097 def : Pat<(store (i64 (X86Wrapper tjumptable:$src)), addr:$dst),
1100 def : Pat<(store (i64 (X86Wrapper tglobaladdr:$src)), addr:$dst),
1103 def : Pat<(store (i64 (X86Wrapper texternalsym:$src)), addr:$dst),
1106 def : Pat<(store (i64 (X86Wrapper mcsym:$src)), addr:$dst),
1109 def : Pat<(store (i64 (X86Wrapper tblockaddress:$src)), addr:$dst),
1113 def : Pat<(i32 (X86RecoverFrameAlloc mcsym:$dst)), (MOV32ri mcsym:$dst)>;
1114 def : Pat<(i64 (X86RecoverFrameAlloc mcsym:$dst)), (MOV64ri mcsym:$dst)>;
1120 def : Pat<(i64 (X86Wrapper tglobaltlsaddr :$dst)),
1123 def : Pat<(add GR64:$src1, (X86Wrapper tglobaltlsaddr :$dst)),
1129 def : Pat<(X86call (i64 tglobaladdr:$dst)),
1131 def : Pat<(X86call (i64 texternalsym:$dst)),
1152 def : Pat<(X86tcret ptr_rc_tailcall:$dst, imm:$off),
1159 def : Pat<(X86tcret (load addr:$dst), imm:$off),
1163 def : Pat<(X86tcret (i32 tglobaladdr:$dst), imm:$off),
1167 def : Pat<(X86tcret (i32 texternalsym:$dst), imm:$off),
1171 def : Pat<(X86tcret ptr_rc_tailcall:$dst, imm:$off),
1177 def : Pat<(X86tcret_6regs (load addr:$dst), imm:$off),
1181 def : Pat<(X86tcret (i64 tglobaladdr:$dst), imm:$off),
1185 def : Pat<(X86tcret (i64 texternalsym:$dst), imm:$off),
1190 def : Pat<(X86call (i32 tglobaladdr:$dst)),
1192 def : Pat<(X86call (i32 texternalsym:$dst)),
1194 def : Pat<(X86call (i32 imm:$dst)),
1200 def : Pat<(X86cmp GR8:$src1, 0),
1202 def : Pat<(X86cmp GR16:$src1, 0),
1204 def : Pat<(X86cmp GR32:$src1, 0),
1206 def : Pat<(X86cmp GR64:$src1, 0),
1214 def : Pat<(X86cmov (loadi16 addr:$src1), GR16:$src2, InvertedCond, EFLAGS),
1216 def : Pat<(X86cmov (loadi32 addr:$src1), GR32:$src2, InvertedCond, EFLAGS),
1218 def : Pat<(X86cmov (loadi64 addr:$src1), GR64:$src2, InvertedCond, EFLAGS),
1243 def : Pat<(zextloadi8i1 addr:$src), (MOV8rm addr:$src)>;
1244 def : Pat<(zextloadi16i1 addr:$src), (MOVZX16rm8 addr:$src)>;
1245 def : Pat<(zextloadi32i1 addr:$src), (MOVZX32rm8 addr:$src)>;
1246 def : Pat<(zextloadi64i1 addr:$src),
1254 def : Pat<(extloadi8i1 addr:$src), (MOV8rm addr:$src)>;
1255 def : Pat<(extloadi16i1 addr:$src), (MOVZX16rm8 addr:$src)>;
1256 def : Pat<(extloadi32i1 addr:$src), (MOVZX32rm8 addr:$src)>;
1257 def : Pat<(extloadi16i8 addr:$src), (MOVZX16rm8 addr:$src)>;
1258 def : Pat<(extloadi32i8 addr:$src), (MOVZX32rm8 addr:$src)>;
1259 def : Pat<(extloadi32i16 addr:$src), (MOVZX32rm16 addr:$src)>;
1263 def : Pat<(extloadi64i1 addr:$src),
1265 def : Pat<(extloadi64i8 addr:$src),
1267 def : Pat<(extloadi64i16 addr:$src),
1269 def : Pat<(extloadi64i32 addr:$src),
1274 def : Pat<(i16 (anyext GR8 :$src)), (EXTRACT_SUBREG
1276 def : Pat<(i32 (anyext GR8 :$src)), (MOVZX32rr8 GR8 :$src)>;
1279 def : Pat<(i32 (anyext GR16:$src)),
1282 def : Pat<(i64 (anyext GR8 :$src)),
1284 def : Pat<(i64 (anyext GR16:$src)),
1286 def : Pat<(i64 (anyext GR32:$src)),
1305 def : Pat<(i64 (zext def32:$src)),
1389 def : Pat<(add GR16:$src1, 128),
1391 def : Pat<(store (add (loadi16 addr:$dst), 128), addr:$dst),
1394 def : Pat<(add GR32:$src1, 128),
1396 def : Pat<(store (add (loadi32 addr:$dst), 128), addr:$dst),
1399 def : Pat<(add GR64:$src1, 128),
1401 def : Pat<(store (add (loadi64 addr:$dst), 128), addr:$dst),
1406 def : Pat<(add GR64:$src1, 0x0000000080000000),
1408 def : Pat<(store (add (loadi64 addr:$dst), 0x0000000080000000), addr:$dst),
1420 def : Pat<(and GR64:$src, i64immZExt32SExt8:$imm),
1428 def : Pat<(and GR64:$src, i64immZExt32:$imm),
1443 def : Pat<(and GR32:$src1, 0xffff),
1446 def : Pat<(and GR32:$src1, 0xff),
1452 def : Pat<(and GR16:$src1, 0xff),
1459 def : Pat<(and GR64:$src, 0x00000000FFFFFFFF),
1464 def : Pat<(and GR64:$src, 0xffff),
1469 def : Pat<(and GR64:$src, 0xff),
1474 def : Pat<(and GR32:$src1, 0xff),
1478 def : Pat<(and GR16:$src1, 0xff),
1486 def : Pat<(sext_inreg GR32:$src, i16),
1488 def : Pat<(sext_inreg GR32:$src, i8),
1494 def : Pat<(sext_inreg GR16:$src, i8),
1500 def : Pat<(sext_inreg GR64:$src, i32),
1502 def : Pat<(sext_inreg GR64:$src, i16),
1504 def : Pat<(sext_inreg GR64:$src, i8),
1506 def : Pat<(sext_inreg GR32:$src, i8),
1509 def : Pat<(sext_inreg GR16:$src, i8),
1515 def: Pat<(i16 (sext GR8:$src)),
1517 def: Pat<(sextloadi16i8 addr:$src),
1519 def: Pat<(i16 (zext GR8:$src)),
1521 def: Pat<(zextloadi16i8 addr:$src),
1525 def : Pat<(i16 (trunc GR32:$src)),
1527 def : Pat<(i8 (trunc GR32:$src)),
1531 def : Pat<(i8 (trunc GR16:$src)),
1535 def : Pat<(i32 (trunc GR64:$src)),
1537 def : Pat<(i16 (trunc GR64:$src)),
1539 def : Pat<(i8 (trunc GR64:$src)),
1541 def : Pat<(i8 (trunc GR32:$src)),
1544 def : Pat<(i8 (trunc GR16:$src)),
1549 def : Pat<(i8 (trunc (srl_su GR16:$src, (i8 8)))),
1553 def : Pat<(i8 (trunc (srl_su (i32 (anyext GR16:$src)), (i8 8)))),
1557 def : Pat<(i8 (trunc (srl_su GR32:$src, (i8 8)))),
1561 def : Pat<(srl GR16:$src, (i8 8)),
1568 def : Pat<(i32 (zext (srl_su GR16:$src, (i8 8)))),
1573 def : Pat<(i32 (anyext (srl_su GR16:$src, (i8 8)))),
1578 def : Pat<(and (srl_su GR32:$src, (i8 8)), (i32 255)),
1583 def : Pat<(srl (and_su GR32:$src, 0xff00), (i8 8)),
1597 def : Pat<(and (srl_su GR64:$src, (i8 8)), (i64 255)),
1604 def : Pat<(and (srl_su GR32:$src, (i8 8)), (i32 255)),
1609 def : Pat<(srl (and_su GR32:$src, 0xff00), (i8 8)),
1614 def : Pat<(srl GR16:$src, (i8 8)),
1621 def : Pat<(i32 (zext (srl_su GR16:$src, (i8 8)))),
1626 def : Pat<(i32 (anyext (srl_su GR16:$src, (i8 8)))),
1631 def : Pat<(i64 (zext (srl_su GR16:$src, (i8 8)))),
1638 def : Pat<(i64 (anyext (srl_su GR16:$src, (i8 8)))),
1647 def : Pat<(store (i8 (trunc_su (srl_su GR64:$src, (i8 8)))), addr:$dst),
1652 def : Pat<(store (i8 (trunc_su (srl_su GR32:$src, (i8 8)))), addr:$dst),
1658 def : Pat<(store (i8 (trunc_su (srl_su GR16:$src, (i8 8)))), addr:$dst),
1672 def : Pat<(shl GR8 :$src1, (i8 1)), (ADD8rr GR8 :$src1, GR8 :$src1)>;
1673 def : Pat<(shl GR16:$src1, (i8 1)), (ADD16rr GR16:$src1, GR16:$src1)>;
1674 def : Pat<(shl GR32:$src1, (i8 1)), (ADD32rr GR32:$src1, GR32:$src1)>;
1675 def : Pat<(shl GR64:$src1, (i8 1)), (ADD64rr GR64:$src1, GR64:$src1)>;
1688 def : Pat<(frag GR8:$src1, (and CL, immShift32)),
1690 def : Pat<(frag GR16:$src1, (and CL, immShift32)),
1692 def : Pat<(frag GR32:$src1, (and CL, immShift32)),
1694 def : Pat<(store (frag (loadi8 addr:$dst), (and CL, immShift32)), addr:$dst),
1696 def : Pat<(store (frag (loadi16 addr:$dst), (and CL, immShift32)), addr:$dst),
1698 def : Pat<(store (frag (loadi32 addr:$dst), (and CL, immShift32)), addr:$dst),
1702 def : Pat<(frag GR64:$src1, (and CL, immShift64)),
1704 def : Pat<(store (frag (loadi64 addr:$dst), (and CL, 63)), addr:$dst),
1715 def : Pat<(i16 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
1717 def : Pat<(i32 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
1719 def : Pat<(i32 (anyext (i16 (X86setcc_c X86_COND_B, EFLAGS)))),
1730 def : Pat<(add GR8 :$src1, GR8 :$src2), (ADD8rr GR8 :$src1, GR8 :$src2)>;
1731 def : Pat<(add GR16:$src1, GR16:$src2), (ADD16rr GR16:$src1, GR16:$src2)>;
1732 def : Pat<(add GR32:$src1, GR32:$src2), (ADD32rr GR32:$src1, GR32:$src2)>;
1735 def : Pat<(add GR8:$src1, (loadi8 addr:$src2)),
1737 def : Pat<(add GR16:$src1, (loadi16 addr:$src2)),
1739 def : Pat<(add GR32:$src1, (loadi32 addr:$src2)),
1743 def : Pat<(add GR8 :$src1, imm:$src2), (ADD8ri GR8:$src1 , imm:$src2)>;
1744 def : Pat<(add GR16:$src1, imm:$src2), (ADD16ri GR16:$src1, imm:$src2)>;
1745 def : Pat<(add GR32:$src1, imm:$src2), (ADD32ri GR32:$src1, imm:$src2)>;
1746 def : Pat<(add GR16:$src1, i16immSExt8:$src2),
1748 def : Pat<(add GR32:$src1, i32immSExt8:$src2),
1752 def : Pat<(sub GR8 :$src1, GR8 :$src2), (SUB8rr GR8 :$src1, GR8 :$src2)>;
1753 def : Pat<(sub GR16:$src1, GR16:$src2), (SUB16rr GR16:$src1, GR16:$src2)>;
1754 def : Pat<(sub GR32:$src1, GR32:$src2), (SUB32rr GR32:$src1, GR32:$src2)>;
1757 def : Pat<(sub GR8:$src1, (loadi8 addr:$src2)),
1759 def : Pat<(sub GR16:$src1, (loadi16 addr:$src2)),
1761 def : Pat<(sub GR32:$src1, (loadi32 addr:$src2)),
1765 def : Pat<(sub GR8:$src1, imm:$src2),
1767 def : Pat<(sub GR16:$src1, imm:$src2),
1769 def : Pat<(sub GR32:$src1, imm:$src2),
1771 def : Pat<(sub GR16:$src1, i16immSExt8:$src2),
1773 def : Pat<(sub GR32:$src1, i32immSExt8:$src2),
1777 def : Pat<(X86sub_flag 0, GR8 :$src), (NEG8r GR8 :$src)>;
1778 def : Pat<(X86sub_flag 0, GR16:$src), (NEG16r GR16:$src)>;
1779 def : Pat<(X86sub_flag 0, GR32:$src), (NEG32r GR32:$src)>;
1780 def : Pat<(X86sub_flag 0, GR64:$src), (NEG64r GR64:$src)>;
1783 def : Pat<(mul GR16:$src1, GR16:$src2),
1785 def : Pat<(mul GR32:$src1, GR32:$src2),
1789 def : Pat<(mul GR16:$src1, (loadi16 addr:$src2)),
1791 def : Pat<(mul GR32:$src1, (loadi32 addr:$src2)),
1795 def : Pat<(mul GR16:$src1, imm:$src2),
1797 def : Pat<(mul GR32:$src1, imm:$src2),
1799 def : Pat<(mul GR16:$src1, i16immSExt8:$src2),
1801 def : Pat<(mul GR32:$src1, i32immSExt8:$src2),
1805 def : Pat<(mul (loadi16 addr:$src1), imm:$src2),
1807 def : Pat<(mul (loadi32 addr:$src1), imm:$src2),
1809 def : Pat<(mul (loadi16 addr:$src1), i16immSExt8:$src2),
1811 def : Pat<(mul (loadi32 addr:$src1), i32immSExt8:$src2),
1817 def : Pat<(add GR64:$src1, GR64:$src2),
1819 def : Pat<(add GR64:$src1, i64immSExt8:$src2),
1821 def : Pat<(add GR64:$src1, i64immSExt32:$src2),
1823 def : Pat<(add GR64:$src1, (loadi64 addr:$src2)),
1827 def : Pat<(sub GR64:$src1, GR64:$src2),
1829 def : Pat<(sub GR64:$src1, (loadi64 addr:$src2)),
1831 def : Pat<(sub GR64:$src1, i64immSExt8:$src2),
1833 def : Pat<(sub GR64:$src1, i64immSExt32:$src2),
1837 def : Pat<(mul GR64:$src1, GR64:$src2),
1839 def : Pat<(mul GR64:$src1, (loadi64 addr:$src2)),
1841 def : Pat<(mul GR64:$src1, i64immSExt8:$src2),
1843 def : Pat<(mul GR64:$src1, i64immSExt32:$src2),
1845 def : Pat<(mul (loadi64 addr:$src1), i64immSExt8:$src2),
1847 def : Pat<(mul (loadi64 addr:$src1), i64immSExt32:$src2),
1853 def : Pat<(add GR8:$src, 1), (INC8r GR8:$src)>;
1854 def : Pat<(add GR16:$src, 1), (INC16r GR16:$src)>;
1855 def : Pat<(add GR32:$src, 1), (INC32r GR32:$src)>;
1856 def : Pat<(add GR64:$src, 1), (INC64r GR64:$src)>;
1857 def : Pat<(add GR8:$src, -1), (DEC8r GR8:$src)>;
1858 def : Pat<(add GR16:$src, -1), (DEC16r GR16:$src)>;
1859 def : Pat<(add GR32:$src, -1), (DEC32r GR32:$src)>;
1860 def : Pat<(add GR64:$src, -1), (DEC64r GR64:$src)>;
1864 def : Pat<(or GR8 :$src1, GR8 :$src2), (OR8rr GR8 :$src1, GR8 :$src2)>;
1865 def : Pat<(or GR16:$src1, GR16:$src2), (OR16rr GR16:$src1, GR16:$src2)>;
1866 def : Pat<(or GR32:$src1, GR32:$src2), (OR32rr GR32:$src1, GR32:$src2)>;
1867 def : Pat<(or GR64:$src1, GR64:$src2), (OR64rr GR64:$src1, GR64:$src2)>;
1870 def : Pat<(or GR8:$src1, (loadi8 addr:$src2)),
1872 def : Pat<(or GR16:$src1, (loadi16 addr:$src2)),
1874 def : Pat<(or GR32:$src1, (loadi32 addr:$src2)),
1876 def : Pat<(or GR64:$src1, (loadi64 addr:$src2)),
1880 def : Pat<(or GR8:$src1 , imm:$src2), (OR8ri GR8 :$src1, imm:$src2)>;
1881 def : Pat<(or GR16:$src1, imm:$src2), (OR16ri GR16:$src1, imm:$src2)>;
1882 def : Pat<(or GR32:$src1, imm:$src2), (OR32ri GR32:$src1, imm:$src2)>;
1883 def : Pat<(or GR16:$src1, i16immSExt8:$src2),
1885 def : Pat<(or GR32:$src1, i32immSExt8:$src2),
1887 def : Pat<(or GR64:$src1, i64immSExt8:$src2),
1889 def : Pat<(or GR64:$src1, i64immSExt32:$src2),
1893 def : Pat<(xor GR8 :$src1, GR8 :$src2), (XOR8rr GR8 :$src1, GR8 :$src2)>;
1894 def : Pat<(xor GR16:$src1, GR16:$src2), (XOR16rr GR16:$src1, GR16:$src2)>;
1895 def : Pat<(xor GR32:$src1, GR32:$src2), (XOR32rr GR32:$src1, GR32:$src2)>;
1896 def : Pat<(xor GR64:$src1, GR64:$src2), (XOR64rr GR64:$src1, GR64:$src2)>;
1899 def : Pat<(xor GR8:$src1, (loadi8 addr:$src2)),
1901 def : Pat<(xor GR16:$src1, (loadi16 addr:$src2)),
1903 def : Pat<(xor GR32:$src1, (loadi32 addr:$src2)),
1905 def : Pat<(xor GR64:$src1, (loadi64 addr:$src2)),
1909 def : Pat<(xor GR8:$src1, imm:$src2),
1911 def : Pat<(xor GR16:$src1, imm:$src2),
1913 def : Pat<(xor GR32:$src1, imm:$src2),
1915 def : Pat<(xor GR16:$src1, i16immSExt8:$src2),
1917 def : Pat<(xor GR32:$src1, i32immSExt8:$src2),
1919 def : Pat<(xor GR64:$src1, i64immSExt8:$src2),
1921 def : Pat<(xor GR64:$src1, i64immSExt32:$src2),
1925 def : Pat<(and GR8 :$src1, GR8 :$src2), (AND8rr GR8 :$src1, GR8 :$src2)>;
1926 def : Pat<(and GR16:$src1, GR16:$src2), (AND16rr GR16:$src1, GR16:$src2)>;
1927 def : Pat<(and GR32:$src1, GR32:$src2), (AND32rr GR32:$src1, GR32:$src2)>;
1928 def : Pat<(and GR64:$src1, GR64:$src2), (AND64rr GR64:$src1, GR64:$src2)>;
1931 def : Pat<(and GR8:$src1, (loadi8 addr:$src2)),
1933 def : Pat<(and GR16:$src1, (loadi16 addr:$src2)),
1935 def : Pat<(and GR32:$src1, (loadi32 addr:$src2)),
1937 def : Pat<(and GR64:$src1, (loadi64 addr:$src2)),
1941 def : Pat<(and GR8:$src1, imm:$src2),
1943 def : Pat<(and GR16:$src1, imm:$src2),
1945 def : Pat<(and GR32:$src1, imm:$src2),
1947 def : Pat<(and GR16:$src1, i16immSExt8:$src2),
1949 def : Pat<(and GR32:$src1, i32immSExt8:$src2),
1951 def : Pat<(and GR64:$src1, i64immSExt8:$src2),
1953 def : Pat<(and GR64:$src1, i64immSExt32:$src2),
1957 def : Pat<(cttz_zero_undef GR16:$src), (BSF16rr GR16:$src)>;
1958 def : Pat<(cttz_zero_undef GR32:$src), (BSF32rr GR32:$src)>;
1959 def : Pat<(cttz_zero_undef GR64:$src), (BSF64rr GR64:$src)>;
1960 def : Pat<(cttz_zero_undef (loadi16 addr:$src)), (BSF16rm addr:$src)>;
1961 def : Pat<(cttz_zero_undef (loadi32 addr:$src)), (BSF32rm addr:$src)>;
1962 def : Pat<(cttz_zero_undef (loadi64 addr:$src)), (BSF64rm addr:$src)>;
1967 def : Pat<(bswap GR16:$src), (ROL16ri GR16:$src, (i8 8))>;