Inspired by discussion on D71238. Please direct all discussion there until direction is agreed on. This isn't worthy of review until we settle on direction and syntax, it's just posted for context.
In particular, this patch is: a) using unsettled syntax which will likely change, b) hasn't merged changes in the alignment logic previously suggested, and c) is missing a whole bunch of tests.
The strawman syntax used in this patch is:
testq %rax, %rax
I picked this mostly for ease of implementation, nothing more.