The Sparc V9 membar instruction can enforce different types of memory orderings depending on the value in its immediate field. In the architectural manual the type is selected by combining different assembler tags into a mask. This patch adds support for these tags.
Probably worth adding a range check on the membar operand when it's specified as an integer that it's actually in the range 0 <= val <= 127.
And perhaps something on the printing side too. GNU as just reports it as an unknown instruction in that case, but printing the raw integer would be fine too I think.
Added a check to make sure that the integer mask is between 0 and 127 when parsing. The immediate is now printed as an integer when outside the valid range. Also fixed a disassembly issue and added some more tests.