Add tablegen support for vdup_lane
authorNate Begeman <natebegeman@mac.com>
Fri, 6 Aug 2010 01:24:11 +0000 (01:24 +0000)
committerNate Begeman <natebegeman@mac.com>
Fri, 6 Aug 2010 01:24:11 +0000 (01:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110419 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/NeonEmitter.cpp

index a754ce289a9d62e7b80209c89ae6865df862677e..0a12f3766699cd7ef05a8a92db9d5a95b9075b17 100644 (file)
@@ -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) {