diff options
Diffstat (limited to 'utils/TableGen/NeonEmitter.cpp')
-rw-r--r-- | utils/TableGen/NeonEmitter.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/utils/TableGen/NeonEmitter.cpp b/utils/TableGen/NeonEmitter.cpp index 3516d31885558..0a12f3766699c 100644 --- a/utils/TableGen/NeonEmitter.cpp +++ b/utils/TableGen/NeonEmitter.cpp @@ -145,6 +145,9 @@ static char ModType(const char mod, char type, bool &quad, bool &poly, type = 'f'; usgn = false; break; + case 'g': + quad = false; + break; case 'w': type = Widen(type); quad = true; @@ -686,15 +689,15 @@ static unsigned GetNeonEnum(const std::string &proto, StringRef typestr) { bool cnst = false; bool pntr = false; - // base type to get the type string for. + // Base type to get the type string for. char type = ClassifyType(typestr, quad, poly, usgn); // Based on the modifying character, change the type and width if necessary. type = ModType(mod, type, quad, poly, usgn, scal, cnst, pntr); - + if (usgn) ret |= 0x08; - if (quad) + if (quad && proto[1] != 'g') ret |= 0x10; switch (type) { @@ -1016,6 +1019,8 @@ static unsigned RangeFromType(StringRef typestr) { throw "unhandled type!"; break; } + assert(0 && "unreachable"); + return 0; } /// runHeader - Emit a file with sections defining: |