diff options
| author | Wouter van Oortmerssen <aardappel@gmail.com> | 2019-06-28 22:20:33 +0000 | 
|---|---|---|
| committer | Wouter van Oortmerssen <aardappel@gmail.com> | 2019-06-28 22:20:33 +0000 | 
| commit | 319c87d94fd5529406adf004bc0d98ecab991fa4 (patch) | |
| tree | acb670ec0559d75c20a2c7800f0f888a21801c4c /llvm/lib | |
| parent | 35bcba4fae8ae2637589772c3cd7e132de2caee6 (diff) | |
| download | bcm5719-llvm-319c87d94fd5529406adf004bc0d98ecab991fa4.tar.gz bcm5719-llvm-319c87d94fd5529406adf004bc0d98ecab991fa4.zip | |
[WebAssembly] Assembler: support .int16/32/64 directives.
Reviewers: sbc100
Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63959
llvm-svn: 364689
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp | 17 | 
1 files changed, 11 insertions, 6 deletions
| diff --git a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp index c0abd11a504..e22ed8e4764 100644 --- a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp +++ b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp @@ -665,13 +665,18 @@ public:        return expect(AsmToken::EndOfStatement, "EOL");      } -    if (DirectiveID.getString() == ".int8") { +    if (DirectiveID.getString() == ".int8" || +        DirectiveID.getString() == ".int16" || +        DirectiveID.getString() == ".int32" || +        DirectiveID.getString() == ".int64") {        if (CheckDataSection()) return true; -      int64_t V; -      if (Parser.parseAbsoluteExpression(V)) -        return error("Cannot parse int8 constant: ", Lexer.getTok()); -      // TODO: error if value doesn't fit? -      Out.EmitIntValue(static_cast<uint64_t>(V), 1); +      const MCExpr *Val; +      SMLoc End; +      if (Parser.parseExpression(Val, End)) +        return error("Cannot parse .int expression: ", Lexer.getTok()); +      size_t NumBits = 0; +      DirectiveID.getString().drop_front(4).getAsInteger(10, NumBits); +      Out.EmitValue(Val, NumBits / 8, End);        return expect(AsmToken::EndOfStatement, "EOL");      } | 

