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),
259 def : Pat<(i8 0), (EXTRACT_SUBREG (MOV32r0), sub_8bit)>;
260 def : Pat<(i16 0), (EXTRACT_SUBREG (MOV32r0), sub_16bit)>;
261 def : Pat<(i64 0), (SUBREG_TO_REG (i64 0), (MOV32r0), sub_32bit)> {
277 def : Pat<(i16 1), (EXTRACT_SUBREG (MOV32r1), sub_16bit)>;
278 def : Pat<(i16 -1), (EXTRACT_SUBREG (MOV32r_1), sub_16bit)>;
306 def : Pat<(i64 mov64imm32:$src),
311 // FIXME: These are pseudo ops that should be replaced with Pat<> patterns.
312 // However, Pat<> can't replicate the destination reg into the inputs of the
325 def : Pat<(i16 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
327 def : Pat<(i32 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
329 def : Pat<(i64 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
332 def : Pat<(i16 (sext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
334 def : Pat<(i32 (sext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
336 def : Pat<(i64 (sext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
343 def : Pat<(and (i8 (X86setcc_c X86_COND_B, EFLAGS)), 1),
347 def : Pat<(add (and (i8 (X86setcc_c X86_COND_B, EFLAGS)), 1), GR8:$op),
349 def : Pat<(add (and (i32 (X86setcc_c X86_COND_B, EFLAGS)), 1), GR32:$op),
351 def : Pat<(add (and (i64 (X86setcc_c X86_COND_B, EFLAGS)), 1), GR64:$op),
355 def : Pat<(sub GR8:$op, (and (i8 (X86setcc_c X86_COND_B, EFLAGS)), 1)),
357 def : Pat<(sub GR32:$op, (and (i32 (X86setcc_c X86_COND_B, EFLAGS)), 1)),
359 def : Pat<(sub GR64:$op, (and (i64 (X86setcc_c X86_COND_B, EFLAGS)), 1)),
363 def : Pat<(sub GR8:$op, (i8 (X86setcc_c X86_COND_B, EFLAGS))),
365 def : Pat<(sub GR32:$op, (i32 (X86setcc_c X86_COND_B, EFLAGS))),
367 def : Pat<(sub GR64:$op, (i64 (X86setcc_c X86_COND_B, EFLAGS))),
942 def : Pat<(i32 (X86Wrapper tconstpool :$dst)), (MOV32ri tconstpool :$dst)>;
943 def : Pat<(i32 (X86Wrapper tjumptable :$dst)), (MOV32ri tjumptable :$dst)>;
944 def : Pat<(i32 (X86Wrapper tglobaltlsaddr:$dst)),(MOV32ri tglobaltlsaddr:$dst)>;
945 def : Pat<(i32 (X86Wrapper tglobaladdr :$dst)), (MOV32ri tglobaladdr :$dst)>;
946 def : Pat<(i32 (X86Wrapper texternalsym:$dst)), (MOV32ri texternalsym:$dst)>;
947 def : Pat<(i32 (X86Wrapper mcsym:$dst)), (MOV32ri mcsym:$dst)>;
948 def : Pat<(i32 (X86Wrapper tblockaddress:$dst)), (MOV32ri tblockaddress:$dst)>;
950 def : Pat<(add GR32:$src1, (X86Wrapper tconstpool:$src2)),
952 def : Pat<(add GR32:$src1, (X86Wrapper tjumptable:$src2)),
954 def : Pat<(add GR32:$src1, (X86Wrapper tglobaladdr :$src2)),
956 def : Pat<(add GR32:$src1, (X86Wrapper texternalsym:$src2)),
958 def : Pat<(add GR32:$src1, (X86Wrapper mcsym:$src2)),
960 def : Pat<(add GR32:$src1, (X86Wrapper tblockaddress:$src2)),
963 def : Pat<(store (i32 (X86Wrapper tglobaladdr:$src)), addr:$dst),
965 def : Pat<(store (i32 (X86Wrapper texternalsym:$src)), addr:$dst),
967 def : Pat<(store (i32 (X86Wrapper mcsym:$src)), addr:$dst),
969 def : Pat<(store (i32 (X86Wrapper tblockaddress:$src)), addr:$dst),
975 def : Pat<(i64 (X86Wrapper tconstpool :$dst)),
977 def : Pat<(i64 (X86Wrapper tjumptable :$dst)),
979 def : Pat<(i64 (X86Wrapper tglobaladdr :$dst)),
981 def : Pat<(i64 (X86Wrapper texternalsym:$dst)),
983 def : Pat<(i64 (X86Wrapper mcsym:$dst)),
985 def : Pat<(i64 (X86Wrapper tblockaddress:$dst)),
991 def : Pat<(i64 (X86Wrapper tconstpool :$dst)),
993 def : Pat<(i64 (X86Wrapper tjumptable :$dst)),
995 def : Pat<(i64 (X86Wrapper tglobaladdr :$dst)),
997 def : Pat<(i64 (X86Wrapper texternalsym:$dst)),
999 def : Pat<(i64 (X86Wrapper mcsym:$dst)),
1001 def : Pat<(i64 (X86Wrapper tblockaddress:$dst)),
1007 def : Pat<(store (i64 (X86Wrapper tconstpool:$src)), addr:$dst),
1010 def : Pat<(store (i64 (X86Wrapper tjumptable:$src)), addr:$dst),
1013 def : Pat<(store (i64 (X86Wrapper tglobaladdr:$src)), addr:$dst),
1016 def : Pat<(store (i64 (X86Wrapper texternalsym:$src)), addr:$dst),
1019 def : Pat<(store (i64 (X86Wrapper mcsym:$src)), addr:$dst),
1022 def : Pat<(store (i64 (X86Wrapper tblockaddress:$src)), addr:$dst),
1026 def : Pat<(i32 (X86RecoverFrameAlloc mcsym:$dst)), (MOV32ri mcsym:$dst)>;
1027 def : Pat<(i64 (X86RecoverFrameAlloc mcsym:$dst)), (MOV64ri mcsym:$dst)>;
1033 def : Pat<(i64 (X86Wrapper tglobaltlsaddr :$dst)),
1036 def : Pat<(add GR64:$src1, (X86Wrapper tglobaltlsaddr :$dst)),
1042 def : Pat<(X86call (i64 tglobaladdr:$dst)),
1044 def : Pat<(X86call (i64 texternalsym:$dst)),
1065 def : Pat<(X86tcret ptr_rc_tailcall:$dst, imm:$off),
1072 def : Pat<(X86tcret (load addr:$dst), imm:$off),
1076 def : Pat<(X86tcret (i32 tglobaladdr:$dst), imm:$off),
1080 def : Pat<(X86tcret (i32 texternalsym:$dst), imm:$off),
1084 def : Pat<(X86tcret ptr_rc_tailcall:$dst, imm:$off),
1090 def : Pat<(X86tcret_6regs (load addr:$dst), imm:$off),
1094 def : Pat<(X86tcret (i64 tglobaladdr:$dst), imm:$off),
1098 def : Pat<(X86tcret (i64 texternalsym:$dst), imm:$off),
1103 def : Pat<(X86call (i32 tglobaladdr:$dst)),
1105 def : Pat<(X86call (i32 texternalsym:$dst)),
1107 def : Pat<(X86call (i32 imm:$dst)),
1113 def : Pat<(X86cmp GR8:$src1, 0),
1115 def : Pat<(X86cmp GR16:$src1, 0),
1117 def : Pat<(X86cmp GR32:$src1, 0),
1119 def : Pat<(X86cmp GR64:$src1, 0),
1127 def : Pat<(X86cmov (loadi16 addr:$src1), GR16:$src2, InvertedCond, EFLAGS),
1129 def : Pat<(X86cmov (loadi32 addr:$src1), GR32:$src2, InvertedCond, EFLAGS),
1131 def : Pat<(X86cmov (loadi64 addr:$src1), GR64:$src2, InvertedCond, EFLAGS),
1154 def : Pat<(zextloadi8i1 addr:$src), (AND8ri (MOV8rm addr:$src), (i8 1))>;
1155 def : Pat<(zextloadi16i1 addr:$src), (AND16ri8 (MOVZX16rm8 addr:$src), (i16 1))>;
1156 def : Pat<(zextloadi32i1 addr:$src), (AND32ri8 (MOVZX32rm8 addr:$src), (i32 1))>;
1157 def : Pat<(zextloadi64i1 addr:$src),
1166 def : Pat<(extloadi8i1 addr:$src), (MOV8rm addr:$src)>;
1167 def : Pat<(extloadi16i1 addr:$src), (MOVZX16rm8 addr:$src)>;
1168 def : Pat<(extloadi32i1 addr:$src), (MOVZX32rm8 addr:$src)>;
1169 def : Pat<(extloadi16i8 addr:$src), (MOVZX16rm8 addr:$src)>;
1170 def : Pat<(extloadi32i8 addr:$src), (MOVZX32rm8 addr:$src)>;
1171 def : Pat<(extloadi32i16 addr:$src), (MOVZX32rm16 addr:$src)>;
1175 def : Pat<(extloadi64i1 addr:$src),
1177 def : Pat<(extloadi64i8 addr:$src),
1179 def : Pat<(extloadi64i16 addr:$src),
1181 def : Pat<(extloadi64i32 addr:$src),
1186 def : Pat<(i16 (anyext GR8 :$src)), (EXTRACT_SUBREG
1188 def : Pat<(i32 (anyext GR8 :$src)), (MOVZX32rr8 GR8 :$src)>;
1191 def : Pat<(i32 (anyext GR16:$src)),
1194 def : Pat<(i64 (anyext GR8 :$src)),
1196 def : Pat<(i64 (anyext GR16:$src)),
1198 def : Pat<(i64 (anyext GR32:$src)),
1217 def : Pat<(i64 (zext def32:$src)),
1301 def : Pat<(add GR16:$src1, 128),
1303 def : Pat<(store (add (loadi16 addr:$dst), 128), addr:$dst),
1306 def : Pat<(add GR32:$src1, 128),
1308 def : Pat<(store (add (loadi32 addr:$dst), 128), addr:$dst),
1311 def : Pat<(add GR64:$src1, 128),
1313 def : Pat<(store (add (loadi64 addr:$dst), 128), addr:$dst),
1318 def : Pat<(add GR64:$src1, 0x0000000080000000),
1320 def : Pat<(store (add (loadi64 addr:$dst), 0x00000000800000000), addr:$dst),
1332 def : Pat<(and GR64:$src, i64immZExt32SExt8:$imm),
1340 def : Pat<(and GR64:$src, i64immZExt32:$imm),
1355 def : Pat<(and GR32:$src1, 0xffff),
1358 def : Pat<(and GR32:$src1, 0xff),
1364 def : Pat<(and GR16:$src1, 0xff),
1371 def : Pat<(and GR64:$src, 0x00000000FFFFFFFF),
1376 def : Pat<(and GR64:$src, 0xffff),
1381 def : Pat<(and GR64:$src, 0xff),
1386 def : Pat<(and GR32:$src1, 0xff),
1390 def : Pat<(and GR16:$src1, 0xff),
1398 def : Pat<(sext_inreg GR32:$src, i16),
1400 def : Pat<(sext_inreg GR32:$src, i8),
1406 def : Pat<(sext_inreg GR16:$src, i8),
1412 def : Pat<(sext_inreg GR64:$src, i32),
1414 def : Pat<(sext_inreg GR64:$src, i16),
1416 def : Pat<(sext_inreg GR64:$src, i8),
1418 def : Pat<(sext_inreg GR32:$src, i8),
1421 def : Pat<(sext_inreg GR16:$src, i8),
1427 def: Pat<(i16 (sext GR8:$src)),
1429 def: Pat<(sextloadi16i8 addr:$src),
1431 def: Pat<(i16 (zext GR8:$src)),
1433 def: Pat<(zextloadi16i8 addr:$src),
1437 def : Pat<(i16 (trunc GR32:$src)),
1439 def : Pat<(i8 (trunc GR32:$src)),
1443 def : Pat<(i8 (trunc GR16:$src)),
1447 def : Pat<(i32 (trunc GR64:$src)),
1449 def : Pat<(i16 (trunc GR64:$src)),
1451 def : Pat<(i8 (trunc GR64:$src)),
1453 def : Pat<(i8 (trunc GR32:$src)),
1456 def : Pat<(i8 (trunc GR16:$src)),
1461 def : Pat<(i8 (trunc (srl_su GR16:$src, (i8 8)))),
1465 def : Pat<(i8 (trunc (srl_su GR32:$src, (i8 8)))),
1469 def : Pat<(srl GR16:$src, (i8 8)),
1476 def : Pat<(i32 (zext (srl_su GR16:$src, (i8 8)))),
1481 def : Pat<(i32 (anyext (srl_su GR16:$src, (i8 8)))),
1486 def : Pat<(and (srl_su GR32:$src, (i8 8)), (i32 255)),
1491 def : Pat<(srl (and_su GR32:$src, 0xff00), (i8 8)),
1505 def : Pat<(and (srl_su GR64:$src, (i8 8)), (i64 255)),
1512 def : Pat<(and (srl_su GR32:$src, (i8 8)), (i32 255)),
1517 def : Pat<(srl (and_su GR32:$src, 0xff00), (i8 8)),
1522 def : Pat<(srl GR16:$src, (i8 8)),
1529 def : Pat<(i32 (zext (srl_su GR16:$src, (i8 8)))),
1534 def : Pat<(i32 (anyext (srl_su GR16:$src, (i8 8)))),
1539 def : Pat<(i64 (zext (srl_su GR16:$src, (i8 8)))),
1546 def : Pat<(i64 (anyext (srl_su GR16:$src, (i8 8)))),
1555 def : Pat<(store (i8 (trunc_su (srl_su GR64:$src, (i8 8)))), addr:$dst),
1560 def : Pat<(store (i8 (trunc_su (srl_su GR32:$src, (i8 8)))), addr:$dst),
1566 def : Pat<(store (i8 (trunc_su (srl_su GR16:$src, (i8 8)))), addr:$dst),
1580 def : Pat<(shl GR8 :$src1, (i8 1)), (ADD8rr GR8 :$src1, GR8 :$src1)>;
1581 def : Pat<(shl GR16:$src1, (i8 1)), (ADD16rr GR16:$src1, GR16:$src1)>;
1582 def : Pat<(shl GR32:$src1, (i8 1)), (ADD32rr GR32:$src1, GR32:$src1)>;
1583 def : Pat<(shl GR64:$src1, (i8 1)), (ADD64rr GR64:$src1, GR64:$src1)>;
1596 def : Pat<(frag GR8:$src1, (and CL, immShift32)),
1598 def : Pat<(frag GR16:$src1, (and CL, immShift32)),
1600 def : Pat<(frag GR32:$src1, (and CL, immShift32)),
1602 def : Pat<(store (frag (loadi8 addr:$dst), (and CL, immShift32)), addr:$dst),
1604 def : Pat<(store (frag (loadi16 addr:$dst), (and CL, immShift32)), addr:$dst),
1606 def : Pat<(store (frag (loadi32 addr:$dst), (and CL, immShift32)), addr:$dst),
1610 def : Pat<(frag GR64:$src1, (and CL, immShift64)),
1612 def : Pat<(store (frag (loadi64 addr:$dst), (and CL, 63)), addr:$dst),
1623 def : Pat<(i16 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
1625 def : Pat<(i32 (anyext (i8 (X86setcc_c X86_COND_B, EFLAGS)))),
1627 def : Pat<(i32 (anyext (i16 (X86setcc_c X86_COND_B, EFLAGS)))),
1638 def : Pat<(add GR8 :$src1, GR8 :$src2), (ADD8rr GR8 :$src1, GR8 :$src2)>;
1639 def : Pat<(add GR16:$src1, GR16:$src2), (ADD16rr GR16:$src1, GR16:$src2)>;
1640 def : Pat<(add GR32:$src1, GR32:$src2), (ADD32rr GR32:$src1, GR32:$src2)>;
1643 def : Pat<(add GR8:$src1, (loadi8 addr:$src2)),
1645 def : Pat<(add GR16:$src1, (loadi16 addr:$src2)),
1647 def : Pat<(add GR32:$src1, (loadi32 addr:$src2)),
1651 def : Pat<(add GR8 :$src1, imm:$src2), (ADD8ri GR8:$src1 , imm:$src2)>;
1652 def : Pat<(add GR16:$src1, imm:$src2), (ADD16ri GR16:$src1, imm:$src2)>;
1653 def : Pat<(add GR32:$src1, imm:$src2), (ADD32ri GR32:$src1, imm:$src2)>;
1654 def : Pat<(add GR16:$src1, i16immSExt8:$src2),
1656 def : Pat<(add GR32:$src1, i32immSExt8:$src2),
1660 def : Pat<(sub GR8 :$src1, GR8 :$src2), (SUB8rr GR8 :$src1, GR8 :$src2)>;
1661 def : Pat<(sub GR16:$src1, GR16:$src2), (SUB16rr GR16:$src1, GR16:$src2)>;
1662 def : Pat<(sub GR32:$src1, GR32:$src2), (SUB32rr GR32:$src1, GR32:$src2)>;
1665 def : Pat<(sub GR8:$src1, (loadi8 addr:$src2)),
1667 def : Pat<(sub GR16:$src1, (loadi16 addr:$src2)),
1669 def : Pat<(sub GR32:$src1, (loadi32 addr:$src2)),
1673 def : Pat<(sub GR8:$src1, imm:$src2),
1675 def : Pat<(sub GR16:$src1, imm:$src2),
1677 def : Pat<(sub GR32:$src1, imm:$src2),
1679 def : Pat<(sub GR16:$src1, i16immSExt8:$src2),
1681 def : Pat<(sub GR32:$src1, i32immSExt8:$src2),
1685 def : Pat<(X86sub_flag 0, GR8 :$src), (NEG8r GR8 :$src)>;
1686 def : Pat<(X86sub_flag 0, GR16:$src), (NEG16r GR16:$src)>;
1687 def : Pat<(X86sub_flag 0, GR32:$src), (NEG32r GR32:$src)>;
1688 def : Pat<(X86sub_flag 0, GR64:$src), (NEG64r GR64:$src)>;
1691 def : Pat<(mul GR16:$src1, GR16:$src2),
1693 def : Pat<(mul GR32:$src1, GR32:$src2),
1697 def : Pat<(mul GR16:$src1, (loadi16 addr:$src2)),
1699 def : Pat<(mul GR32:$src1, (loadi32 addr:$src2)),
1703 def : Pat<(mul GR16:$src1, imm:$src2),
1705 def : Pat<(mul GR32:$src1, imm:$src2),
1707 def : Pat<(mul GR16:$src1, i16immSExt8:$src2),
1709 def : Pat<(mul GR32:$src1, i32immSExt8:$src2),
1713 def : Pat<(mul (loadi16 addr:$src1), imm:$src2),
1715 def : Pat<(mul (loadi32 addr:$src1), imm:$src2),
1717 def : Pat<(mul (loadi16 addr:$src1), i16immSExt8:$src2),
1719 def : Pat<(mul (loadi32 addr:$src1), i32immSExt8:$src2),
1725 def : Pat<(add GR64:$src1, GR64:$src2),
1727 def : Pat<(add GR64:$src1, i64immSExt8:$src2),
1729 def : Pat<(add GR64:$src1, i64immSExt32:$src2),
1731 def : Pat<(add GR64:$src1, (loadi64 addr:$src2)),
1735 def : Pat<(sub GR64:$src1, GR64:$src2),
1737 def : Pat<(sub GR64:$src1, (loadi64 addr:$src2)),
1739 def : Pat<(sub GR64:$src1, i64immSExt8:$src2),
1741 def : Pat<(sub GR64:$src1, i64immSExt32:$src2),
1745 def : Pat<(mul GR64:$src1, GR64:$src2),
1747 def : Pat<(mul GR64:$src1, (loadi64 addr:$src2)),
1749 def : Pat<(mul GR64:$src1, i64immSExt8:$src2),
1751 def : Pat<(mul GR64:$src1, i64immSExt32:$src2),
1753 def : Pat<(mul (loadi64 addr:$src1), i64immSExt8:$src2),
1755 def : Pat<(mul (loadi64 addr:$src1), i64immSExt32:$src2),
1761 def : Pat<(add GR8:$src, 1), (INC8r GR8:$src)>;
1762 def : Pat<(add GR16:$src, 1), (INC16r GR16:$src)>;
1763 def : Pat<(add GR32:$src, 1), (INC32r GR32:$src)>;
1764 def : Pat<(add GR64:$src, 1), (INC64r GR64:$src)>;
1765 def : Pat<(add GR8:$src, -1), (DEC8r GR8:$src)>;
1766 def : Pat<(add GR16:$src, -1), (DEC16r GR16:$src)>;
1767 def : Pat<(add GR32:$src, -1), (DEC32r GR32:$src)>;
1768 def : Pat<(add GR64:$src, -1), (DEC64r GR64:$src)>;
1772 def : Pat<(or GR8 :$src1, GR8 :$src2), (OR8rr GR8 :$src1, GR8 :$src2)>;
1773 def : Pat<(or GR16:$src1, GR16:$src2), (OR16rr GR16:$src1, GR16:$src2)>;
1774 def : Pat<(or GR32:$src1, GR32:$src2), (OR32rr GR32:$src1, GR32:$src2)>;
1775 def : Pat<(or GR64:$src1, GR64:$src2), (OR64rr GR64:$src1, GR64:$src2)>;
1778 def : Pat<(or GR8:$src1, (loadi8 addr:$src2)),
1780 def : Pat<(or GR16:$src1, (loadi16 addr:$src2)),
1782 def : Pat<(or GR32:$src1, (loadi32 addr:$src2)),
1784 def : Pat<(or GR64:$src1, (loadi64 addr:$src2)),
1788 def : Pat<(or GR8:$src1 , imm:$src2), (OR8ri GR8 :$src1, imm:$src2)>;
1789 def : Pat<(or GR16:$src1, imm:$src2), (OR16ri GR16:$src1, imm:$src2)>;
1790 def : Pat<(or GR32:$src1, imm:$src2), (OR32ri GR32:$src1, imm:$src2)>;
1791 def : Pat<(or GR16:$src1, i16immSExt8:$src2),
1793 def : Pat<(or GR32:$src1, i32immSExt8:$src2),
1795 def : Pat<(or GR64:$src1, i64immSExt8:$src2),
1797 def : Pat<(or GR64:$src1, i64immSExt32:$src2),
1801 def : Pat<(xor GR8 :$src1, GR8 :$src2), (XOR8rr GR8 :$src1, GR8 :$src2)>;
1802 def : Pat<(xor GR16:$src1, GR16:$src2), (XOR16rr GR16:$src1, GR16:$src2)>;
1803 def : Pat<(xor GR32:$src1, GR32:$src2), (XOR32rr GR32:$src1, GR32:$src2)>;
1804 def : Pat<(xor GR64:$src1, GR64:$src2), (XOR64rr GR64:$src1, GR64:$src2)>;
1807 def : Pat<(xor GR8:$src1, (loadi8 addr:$src2)),
1809 def : Pat<(xor GR16:$src1, (loadi16 addr:$src2)),
1811 def : Pat<(xor GR32:$src1, (loadi32 addr:$src2)),
1813 def : Pat<(xor GR64:$src1, (loadi64 addr:$src2)),
1817 def : Pat<(xor GR8:$src1, imm:$src2),
1819 def : Pat<(xor GR16:$src1, imm:$src2),
1821 def : Pat<(xor GR32:$src1, imm:$src2),
1823 def : Pat<(xor GR16:$src1, i16immSExt8:$src2),
1825 def : Pat<(xor GR32:$src1, i32immSExt8:$src2),
1827 def : Pat<(xor GR64:$src1, i64immSExt8:$src2),
1829 def : Pat<(xor GR64:$src1, i64immSExt32:$src2),
1833 def : Pat<(and GR8 :$src1, GR8 :$src2), (AND8rr GR8 :$src1, GR8 :$src2)>;
1834 def : Pat<(and GR16:$src1, GR16:$src2), (AND16rr GR16:$src1, GR16:$src2)>;
1835 def : Pat<(and GR32:$src1, GR32:$src2), (AND32rr GR32:$src1, GR32:$src2)>;
1836 def : Pat<(and GR64:$src1, GR64:$src2), (AND64rr GR64:$src1, GR64:$src2)>;
1839 def : Pat<(and GR8:$src1, (loadi8 addr:$src2)),
1841 def : Pat<(and GR16:$src1, (loadi16 addr:$src2)),
1843 def : Pat<(and GR32:$src1, (loadi32 addr:$src2)),
1845 def : Pat<(and GR64:$src1, (loadi64 addr:$src2)),
1849 def : Pat<(and GR8:$src1, imm:$src2),
1851 def : Pat<(and GR16:$src1, imm:$src2),
1853 def : Pat<(and GR32:$src1, imm:$src2),
1855 def : Pat<(and GR16:$src1, i16immSExt8:$src2),
1857 def : Pat<(and GR32:$src1, i32immSExt8:$src2),
1859 def : Pat<(and GR64:$src1, i64immSExt8:$src2),
1861 def : Pat<(and GR64:$src1, i64immSExt32:$src2),
1865 def : Pat<(cttz_zero_undef GR16:$src), (BSF16rr GR16:$src)>;
1866 def : Pat<(cttz_zero_undef GR32:$src), (BSF32rr GR32:$src)>;
1867 def : Pat<(cttz_zero_undef GR64:$src), (BSF64rr GR64:$src)>;
1868 def : Pat<(cttz_zero_undef (loadi16 addr:$src)), (BSF16rm addr:$src)>;
1869 def : Pat<(cttz_zero_undef (loadi32 addr:$src)), (BSF32rm addr:$src)>;
1870 def : Pat<(cttz_zero_undef (loadi64 addr:$src)), (BSF64rm addr:$src)>;
1875 def : Pat<(bswap GR16:$src), (ROL16ri GR16:$src, (i8 8))>;