+2011-03-24 Mike Frysinger <vapier@gentoo.org>
+
+ * config/bfin-parse.y (check_macfuncs): Clarify error message when
+ P is mismatched. Check destination regno are off by one when P is
+ set, or are equal when P is not set.
+
2011-03-23 Mike Frysinger <vapier@gentoo.org>
* config/bfin-parse.y (SEARCH): Return yyerror when dest reg $2 is
aa->s1.regno |= (ab->s1.regno & CODE_MASK);
}
- if (aa->w == ab->w && aa->P != ab->P)
+ if (aa->w == ab->w && aa->P != ab->P)
+ return yyerror ("Destination Dreg sizes (full or half) must match");
+
+ if (aa->w && ab->w)
{
- return yyerror ("macfuncs must differ");
- if (aa->w && (aa->dst.regno - ab->dst.regno != 1))
- return yyerror ("Destination Dregs must differ by one");
+ if (aa->P && (aa->dst.regno - ab->dst.regno) != 1)
+ return yyerror ("Destination Dregs (full) must differ by one");
+ if (!aa->P && aa->dst.regno != ab->dst.regno)
+ return yyerror ("Destination Dregs (half) must match");
}
/* Make sure mod flags get ORed, too. */
+2011-03-24 Mike Frysinger <vapier@gentoo.org>
+
+ * gas/bfin/expected_errors.s: Add invalid dsp mult insn tests.
+ * gas/bfin/expected_errors.l: Add new error messages.
+
2011-03-23 Mike Frysinger <vapier@gentoo.org>
* gas/bfin/expected_errors.s: Add invalid SEARCH/BITMUX insns.
.*:115: Error: Dreg expected for destination operand. Input text was \).
.*:117: Error: Illegal dest register combination. Input text was \).
.*:118: Error: Illegal source register combination. Input text was \).
+.*:120: Error: Destination Dregs \(full\) must differ by one.
+.*:121: Error: Destination Dregs \(half\) must match.
+.*:122: Error: Destination Dreg sizes \(full or half\) must match.
(R3, R3) = SEARCH R0 (GE);
BITMUX (R4, R4, A0) (ASR);
+
+ R0 = A0, R3 = A1;
+ R0.L = A0, R1.H = A1;
+ R0 = A0, R1.H = A1;