Lines Matching refs:xchg
705 // xchg: We accept "xchgX <reg>, <mem>" and "xchgX <mem>, <reg>" as synonyms.
706 def : InstAlias<"xchg{b}\t{$mem, $val|$val, $mem}",
708 def : InstAlias<"xchg{w}\t{$mem, $val|$val, $mem}",
710 def : InstAlias<"xchg{l}\t{$mem, $val|$val, $mem}",
712 def : InstAlias<"xchg{q}\t{$mem, $val|$val, $mem}",
715 // xchg: We accept "xchgX <reg>, %eax" and "xchgX %eax, <reg>" as synonyms.
716 def : InstAlias<"xchg{w}\t{%ax, $src|$src, ax}", (XCHG16ar GR16:$src), 0>;
717 def : InstAlias<"xchg{l}\t{%eax, $src|$src, eax}", (XCHG32ar GR32:$src), 0>;
718 def : InstAlias<"xchg{q}\t{%rax, $src|$src, rax}", (XCHG64ar GR64:$src), 0>;
720 // In 64-bit mode, xchg %eax, %eax can't be encoded with the 0x90 opcode we
721 // would get by default because it's defined as NOP. But xchg %eax, %eax implies
723 def : InstAlias<"xchg{l}\t{%eax, %eax|eax, eax}",
726 // xchg %rax, %rax is a nop in x86-64 and can be encoded as such. Without this
728 def : InstAlias<"xchg{q}\t{%rax, %rax|rax, rax}", (NOOP), 0>;