* config/tc-hppa.c (pa_ip); Handle "fe", and 'cJ'.
authorJeff Law <law@redhat.com>
Sun, 19 Sep 1999 19:46:52 +0000 (19:46 +0000)
committerJeff Law <law@redhat.com>
Sun, 19 Sep 1999 19:46:52 +0000 (19:46 +0000)
gas/ChangeLog
gas/config/tc-hppa.c

index 913dd76445cd47a6281cb73c08425df4d852980b..5fe9bbf472cac7bfcf4b19ea480cf263208ffec3 100644 (file)
@@ -1,5 +1,7 @@
 Sun Sep 19 10:43:31 1999  Jeffrey A Law  (law@cygnus.com)
 
+       * config/tc-hppa.c (pa_ip); Handle "fe", and 'cJ'.
+
        * config/tc-hppa.c (pa_ip): Handle 'd', '#' and 'cq'.
 
        * config/tc-hppa.c (struct pa_it): New field "trunc".
index 755585a7e032436cc09a1193c4c9c4f05cb3e777..191b6cd1957b41cee3e04e40b788fe7977e60fea 100644 (file)
@@ -1786,6 +1786,7 @@ pa_ip (str)
                /* Handle a short load/store completer.  */
                case 'm':
                case 'q':
+               case 'J':
                  {
                    int a = 0;
                    int m = 0;
@@ -1810,8 +1811,8 @@ pa_ip (str)
                        s += 2;
                      }
 
-                  /* 'm' and 'q' are the same, except for where they encode
-                      the before/after field.  */
+                  /* 'J', 'm' and 'q' are the same, except for where they
+                      encode the before/after field.  */
                   if (*args == 'm')
                      {
                        opcode |= m << 5;
@@ -1822,6 +1823,11 @@ pa_ip (str)
                        opcode |= m << 3;
                        INSERT_FIELD_AND_CONTINUE (opcode, a, 2);
                      }
+                   else if (*args == 'J')
+                     {
+                       /* M bit is explicit in the major opcode.  */
+                       INSERT_FIELD_AND_CONTINUE (opcode, a, 2);
+                     }
                  }
 
                /* Handle a stbys completer.  */
@@ -3605,6 +3611,21 @@ pa_ip (str)
                    INSERT_FIELD_AND_CONTINUE (opcode, result.number_part, 11);
                  }
 
+               /* Handle L/R register halves like 'x'.  */
+               case 'e':
+                 {
+                   struct pa_11_fp_reg_struct result;
+
+                   if (strict && *s != '%')
+                     break;
+                   pa_parse_number (&s, &result);
+                   CHECK_FIELD (result.number_part, 31, 0, 0);
+                   opcode |= (result.number_part & 0x1f) << 16;
+                   if (need_pa11_opcode (&the_insn, &result))
+                     {
+                       opcode |= (result.l_r_select & 1) << 1;
+                     }
+                   continue;
                default:
                  abort ();
                }