* config/tc-hppa.c (pa_ip): Handle 'N', 'O', 'o', '0', '1', 'u',
and '2' in copr and sfu instruction templates.
This commit is contained in:
parent
43983d3c15
commit
d0286a2112
2 changed files with 53 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Mon Jan 17 00:18:55 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||||
|
|
||||||
|
* config/tc-hppa.c (pa_ip): Handle 'N', 'O', 'o', '0', '1', 'u',
|
||||||
|
and '2' in copr and sfu instruction templates.
|
||||||
|
|
||||||
Sun Jan 16 16:44:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
Sun Jan 16 16:44:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||||
|
|
||||||
* as.h (subseg_force_new): Add prototype.
|
* as.h (subseg_force_new): Add prototype.
|
||||||
|
|
|
@ -2015,6 +2015,11 @@ pa_ip (str)
|
||||||
nullif = pa_parse_nullif (&s);
|
nullif = pa_parse_nullif (&s);
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, nullif, 1);
|
INSERT_FIELD_AND_CONTINUE (opcode, nullif, 1);
|
||||||
|
|
||||||
|
/* Handle a nullification completer for copr and spop insns. */
|
||||||
|
case 'N':
|
||||||
|
nullif = pa_parse_nullif (&s);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, nullif, 5);
|
||||||
|
|
||||||
/* Handle a 11 bit immediate at 31. */
|
/* Handle a 11 bit immediate at 31. */
|
||||||
case 'i':
|
case 'i':
|
||||||
the_insn.field_selector = pa_chk_field_selector (&s);
|
the_insn.field_selector = pa_chk_field_selector (&s);
|
||||||
|
@ -2247,12 +2252,51 @@ pa_ip (str)
|
||||||
CHECK_FIELD (num, 7, 0, 0);
|
CHECK_FIELD (num, 7, 0, 0);
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, num, 6);
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 6);
|
||||||
|
|
||||||
/* We don't support any of these. FIXME. */
|
/* Handle a 20 bit SOP field for spop0. */
|
||||||
case 'O':
|
case 'O':
|
||||||
get_expression (s);
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
s = expr_end;
|
s = expr_end;
|
||||||
abort ();
|
CHECK_FIELD (num, 1048575, 0, 0);
|
||||||
continue;
|
num = (num & 0x1f) | ((num & 0x000fffe0) << 6);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
|
||||||
|
|
||||||
|
/* Handle a 15bit SOP field for spop1. */
|
||||||
|
case 'o':
|
||||||
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
s = expr_end;
|
||||||
|
CHECK_FIELD (num, 32767, 0, 0);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 11);
|
||||||
|
|
||||||
|
/* Handle a 10bit SOP field for spop3. */
|
||||||
|
case '0':
|
||||||
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
s = expr_end;
|
||||||
|
CHECK_FIELD (num, 1023, 0, 0);
|
||||||
|
num = (num & 0x1f) | ((num & 0x000003e0) << 6);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
|
||||||
|
|
||||||
|
/* Handle a 15 bit SOP field for spop2. */
|
||||||
|
case '1':
|
||||||
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
s = expr_end;
|
||||||
|
CHECK_FIELD (num, 32767, 0, 0);
|
||||||
|
num = (num & 0x1f) | ((num & 0x00007fe0) << 6);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
|
||||||
|
|
||||||
|
/* Handle a 3-bit co-processor ID field. */
|
||||||
|
case 'u':
|
||||||
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
s = expr_end;
|
||||||
|
CHECK_FIELD (num, 7, 0, 0);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 6);
|
||||||
|
|
||||||
|
/* Handle a 22bit SOP field for copr. */
|
||||||
|
case '2':
|
||||||
|
num = pa_get_absolute_expression (&the_insn, &s);
|
||||||
|
s = expr_end;
|
||||||
|
CHECK_FIELD (num, 4194303, 0, 0);
|
||||||
|
num = (num & 0x1f) | ((num & 0x003fffe0) << 4);
|
||||||
|
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
|
||||||
|
|
||||||
/* Handle a source FP operand format completer. */
|
/* Handle a source FP operand format completer. */
|
||||||
case 'F':
|
case 'F':
|
||||||
|
|
Loading…
Add table
Reference in a new issue