Right now, BT isntruction are inly generated when the constant cannot be materialized for a test instruction, and when the source is a (srl (and X, 1), N). This is fragile as any transform that get rid of the srl cause bt to not be materialized anymore. For instance anything (and X, 1 << N) will nto see the bt instruction used.
Because there are numerous pattern that match (and X, 1), bt is only generated when the bit position is greater than 0.
I will say this is kinda stupid that we forced a copy just so we could do a high register trick.