Machine-level primops; ones which we can reasonably delegate to the native code generators to handle.
Most operations are parameterised by the Width that they operate on. Some operations have separate signed and unsigned versions, and float and integer versions.
Note that there are variety of places in the native code generator where we assume that the code produced for a MachOp does not introduce new blocks.
Constructors
MO_Add WidthMO_Sub WidthMO_Eq WidthMO_Ne WidthMO_Mul WidthMO_S_MulMayOflo WidthMO_S_Quot WidthMO_S_Rem WidthMO_S_Neg WidthMO_U_Quot WidthMO_U_Rem WidthMO_S_Ge WidthMO_S_Le WidthMO_S_Gt WidthMO_S_Lt WidthMO_U_Ge WidthMO_U_Le WidthMO_U_Gt WidthMO_U_Lt WidthMO_F_Add WidthMO_F_Sub WidthMO_F_Neg WidthMO_F_Mul WidthMO_F_Quot WidthMO_FMA FMASign WidthFused multiply-add, see FMASign.
MO_F_Eq WidthMO_F_Ne WidthMO_F_Ge WidthMO_F_Le WidthMO_F_Gt WidthMO_F_Lt WidthMO_And WidthMO_Or WidthMO_Xor WidthMO_Not WidthMO_Shl WidthMO_U_Shr WidthMO_S_Shr WidthMO_SF_Conv Width WidthMO_FS_Conv Width WidthMO_SS_Conv Width WidthMO_UU_Conv Width WidthMO_XX_Conv Width WidthMO_FF_Conv Width WidthMO_V_Insert Length WidthMO_V_Extract Length WidthMO_V_Add Length WidthMO_V_Sub Length WidthMO_V_Mul Length WidthMO_VS_Quot Length WidthMO_VS_Rem Length WidthMO_VS_Neg Length WidthMO_VU_Quot Length WidthMO_VU_Rem Length WidthMO_VF_Insert Length WidthMO_VF_Extract Length WidthMO_VF_Add Length WidthMO_VF_Sub Length WidthMO_VF_Neg Length WidthMO_VF_Mul Length WidthMO_VF_Quot Length WidthMO_RelaxedRead WidthAn atomic read with no memory ordering. Address msut be naturally aligned.
MO_AlignmentCheck Int Width