Issue 12051 - Wrong code with ?: resulting in char on x86-64

Another one like [bug 11565](https://d.puremagic.com/issues/show_bug.cgi?id=11565)

The optimizer turns
`c ? a : b`
into
`(0 - cast(bool)c) & (a - b) + b`
but forgets to put the correct prefix on the `and` instruction, leading to it accessing the wrong register sometimes, depending on which register is allocated.

https://d.puremagic.com/issues/show_bug.cgi?id=12051