Add bitwise ops that invert the second operand.

ARM has all of these as scalar integer instructions. Intel has band_not
in SSE and as a scalar in BMI1.

Add the trivial legalization patterns that use a bnot instruction.
This commit is contained in:
Jakob Stoklund Olesen
2017-07-20 11:14:11 -07:00
parent 43e190ad20
commit a42eaa77b4
4 changed files with 48 additions and 5 deletions

View File

@@ -667,11 +667,9 @@ operating on boolean values, the bitwise operations work as logical operators.
.. autoinst:: bxor
.. autoinst:: bxor_imm
.. autoinst:: bnot
.. todo:: Redundant bitwise operators.
ARM has instructions like ``bic(x,y) = x & ~y``, ``orn(x,y) = x | ~y``, and
``eon(x,y) = x ^ ~y``.
.. autoinst:: band_not
.. autoinst:: bor_not
.. autoinst:: bxor_not
The shift and rotate operations only work on integer types (scalar and vector).
The shift amount does not have to be the same type as the value being shifted.