diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4d9c5a06619af1d21cc79ffc77b941b6a98434f4..8e6d86c8780a8ae15f648d6ecc4bcbfe468b124a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2008-12-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/tc-i386.c (parse_insn): Optimize ".s" handling.
+
 2008-12-20  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config/tc-i386.c (_i386_insn): Add swap_operand.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index d74c1c664dee8753e9352fa3a707ebd50dd08f8f..5505d5cd517c458eb710e003d55df30b9800a9ba 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -2994,19 +2994,16 @@ parse_insn (char *line, char *mnemonic)
 	break;
     }
 
-  if (!current_templates && dot_p)
+  if (!current_templates)
     {
-      if (mnem_p - 2 == dot_p)
-	{
-	  /* Check if we should swap operand in encoding.  */
-	  if (dot_p[1] == 's')
-	    i.swap_operand = 1;
-	  else
-	    goto check_suffix;
-	  mnem_p = dot_p;
-	  *dot_p = '\0';
-	  current_templates = hash_find (op_hash, mnemonic);
-	}
+      /* Check if we should swap operand in encoding.  */
+      if (mnem_p - 2 == dot_p && dot_p[1] == 's')
+	i.swap_operand = 1;
+      else
+	goto check_suffix;
+      mnem_p = dot_p;
+      *dot_p = '\0';
+      current_templates = hash_find (op_hash, mnemonic);
     }
 
   if (!current_templates)