http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968
--- Comment #15 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Uroš Bizjak from comment #14) > From i386.md: > > ;; %%% bts, btr, btc, bt. > ;; In general these instructions are *slow* when applied to memory, > ;; since they enforce atomic operation. When applied to registers, > ;; it depends on the cpu implementation. They're never faster than > ;; the corresponding and/ior/xor operations, so with 32-bit there's > ;; no point. But in 64-bit, we can't hold the relevant immediates > ;; within the instruction itself, so operating on bits in the high > ;; 32-bits of a register becomes easier. > ;; BTx with memory operand are slow, but they have smaller code sizes. We can optimize well for register operand as the first step.