On 07/14/2013 12:30 PM, Tim Northover wrote: >> And that is why I think you should just consider "bt $x,y" to be >> trivially the same thing and not at all ambiguous. Because there is >> ABSOLUTELY ZERO ambiguity when people write >> >> bt $63, mem >> >> Zero. Nada. None. The semantics are *exactly* the same for btl and btq >> in this case, so why would you want the user to specify one or the >> other? > I don't think you've actually tested that, have you? (x86-64) > > int main() { > long val = 0xffffffff; > char res; > > asm("btl $63, %1\n\tsetc %0" : "=r"(res) : "m"(val)); > printf("%d\n", res); > > asm("btq $63, %1\n\tsetc %0" : "=r"(res) : "m"(val)); > printf("%d\n", res); > }
Blerk. It doesn't undermine the original point - that gas can unambiguously choose the right operation size for a constant bit offset - but yes, the operation size is meaningful in the case of a immediate bit offset. Its pretty nasty of Intel to hide that detail in Table 3-2, far from the instructions which use it... J > > Tim. > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/