Remove ASM_BACKEND_CLASS macro
Fix unnecessary and potentially unsafe .data() on StringRef
Don't use ternary operator for side effects
Remove HSAILDeviceInfo.

Next, HSAILDevice needs to be removed and merged into HSAILSubtarget
Work on cleaning up HSAILSubtarget
Mostly remove HSAILDevice
Remove HSAILgetTypeSize.

This might break things slightly, but I don't think
the result of what was using it is used for anything
that should be there. The size calculations for argument
size is also clearly another copied from AMDIL bug that was
fixed a while ago.
Remove HSAILgetNumElements
Remove HSAILDevice
Remove some junk from HSAILSubtarget
Correct extra _s emitted before width in load / store
Don't emit _width(1)
Remove hasAddress / addressOpNum
Rename TypeLength operand to match spec
Use getNamedOperandIdx for width and type.
Rename $m operand to $mask.

This doesn't quite match the spec, but there seems to be a
terminology inconsistency between the existing code and the spec.
The spec for ld mentions a _const modifier and _width(n) modifiers,
but the code seems to look for "mask" which only means const.
Use getNamedOperandIdx for load modifier mask operand
Fix ubsan error in ValueMap
Copy getNamedOperand from R600
Add HSAILInstrInfo to BRIGAsmPrinter