Reland "[WebAssembly] More uses of uint8_t for single byte values"

Summary:
Original change was D43991 (rL326541) and was reverted by rL326571 and
rL326572. This adds also the necessary MCCodeEmitter patch.

Reviewers: sbc100

Subscribers: jfb, dschuff, sbc100, jgravelle-google, sunfish, llvm-commits, ncw

Differential Revision: https://reviews.llvm.org/D44034

llvm-svn: 326614
This commit is contained in:
Heejin Ahn 2018-03-02 20:52:59 +00:00
parent db16beed8a
commit 0c69a3e3d9
2 changed files with 14 additions and 14 deletions

View File

@ -93,7 +93,7 @@ void WebAssemblyMCCodeEmitter::encodeInstruction(
} else if (Info.OperandType == WebAssembly::OPERAND_GLOBAL) {
llvm_unreachable("wasm globals should only be accessed symbolicly");
} else if (Info.OperandType == WebAssembly::OPERAND_SIGNATURE) {
encodeSLEB128(int64_t(MO.getImm()), OS);
OS << uint8_t(MO.getImm());
} else {
encodeULEB128(uint64_t(MO.getImm()), OS);
}

View File

@ -158,19 +158,19 @@ static const unsigned LoadP2AlignOperandNo = 1;
static const unsigned StoreP2AlignOperandNo = 0;
/// This is used to indicate block signatures.
enum class ExprType {
Void = -0x40,
I32 = -0x01,
I64 = -0x02,
F32 = -0x03,
F64 = -0x04,
I8x16 = -0x05,
I16x8 = -0x06,
I32x4 = -0x07,
F32x4 = -0x08,
B8x16 = -0x09,
B16x8 = -0x0a,
B32x4 = -0x0b
enum class ExprType : unsigned {
Void = 0x40,
I32 = 0x7F,
I64 = 0x7E,
F32 = 0x7D,
F64 = 0x7C,
I8x16 = 0x7B,
I16x8 = 0x7A,
I32x4 = 0x79,
F32x4 = 0x78,
B8x16 = 0x77,
B16x8 = 0x76,
B32x4 = 0x75
};
/// Instruction opcodes emitted via means other than CodeGen.