diff options
author | JF Bastien <jfb@google.com> | 2015-10-29 04:10:52 +0000 |
---|---|---|
committer | JF Bastien <jfb@google.com> | 2015-10-29 04:10:52 +0000 |
commit | 7b452e2c6363ed7a929ce3ba1285f75e74d83423 (patch) | |
tree | 8661781b614b58a35be0318d96b8bcb3e9f7c302 /llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp | |
parent | 7a88ad647636cb9580787db5f6e7e3b8f155127c (diff) | |
download | bcm5719-llvm-7b452e2c6363ed7a929ce3ba1285f75e74d83423.tar.gz bcm5719-llvm-7b452e2c6363ed7a929ce3ba1285f75e74d83423.zip |
[WebAssembly] Update opcode name format for conversions
Summary:
Conversion opcode name format should be f64.convert_u/i64 not f64_convert_u
Author: s3ththompson
Reviewers: jfb
Subscribers: sunfish, jfb, llvm-commits, dschuff
Differential Revision: http://reviews.llvm.org/D14160
llvm-svn: 251613
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index 6b5f653f3b9..7ee452efe1d 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -96,7 +96,8 @@ private: // Operand type (if any), followed by the lower-case version of the opcode's // name matching the names WebAssembly opcodes are expected to have. The // tablegen names are uppercase and suffixed with their type (after an -// underscore). +// underscore). Conversions are additionally prefixed with their input type +// (before a double underscore). static std::string OpcodeName(const WebAssemblyInstrInfo *TII, const MachineInstr *MI) { std::string N(StringRef(TII->getName(MI->getOpcode())).lower()); @@ -110,7 +111,14 @@ static std::string OpcodeName(const WebAssemblyInstrInfo *TII, for (const char *typelessOpcode : { "return", "call", "br_if" }) if (Name == typelessOpcode) return Name; - return std::string(&N[NameEnd + 1], &N[Len]) + '.' + Name; + std::string Type(&N[NameEnd + 1], &N[Len]); + std::string::size_type DoubleUnder = Name.find("__"); + bool IsConv = std::string::npos != DoubleUnder; + if (!IsConv) + return Type + '.' + Name; + std::string InType(&Name[0], &Name[DoubleUnder]); + return Type + '.' + std::string(&Name[DoubleUnder + 2], &Name[NameEnd]) + + '/' + InType; } static std::string toSymbol(StringRef S) { return ("$" + S).str(); } |