+2008-03-26 Bernd Schmidt <bernd.schmidt@analog.com>
+
+ From Jie Zhang <jie.zhang@analog.com>
+ * config/bfin-parse.y (asm_1): Check AREGS in comparison
+ instructions. And call yyerror () when comparing PREG with
+ DREG.
+
2008-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* config/tc-s390.c (md_parse_option): z10 option added.
}
| CCREG ASSIGN REG_A _ASSIGN_ASSIGN REG_A
{
- if (!REG_SAME ($3, $5))
+ if ($3.regno == REG_A0 && $5.regno == REG_A1)
{
notethat ("CCflag: CC = A0 == A1\n");
$$ = CCFLAG (0, 0, 5, 0, 0);
}
else
- return yyerror ("CC register expected");
+ return yyerror ("AREGs are in bad order or same");
}
| CCREG ASSIGN REG_A LESS_THAN REG_A
{
- if (!REG_SAME ($3, $5))
+ if ($3.regno == REG_A0 && $5.regno == REG_A1)
{
notethat ("CCflag: CC = A0 < A1\n");
$$ = CCFLAG (0, 0, 6, 0, 0);
}
else
- return yyerror ("Register mismatch");
+ return yyerror ("AREGs are in bad order or same");
}
| CCREG ASSIGN REG LESS_THAN REG iu_or_nothing
{
{
notethat ("CCflag: CC = dpregs == dpregs\n");
$$ = CCFLAG (&$3, $5.regno & CODE_MASK, 0, 0, IS_PREG ($3) ? 1 : 0);
- }
+ }
+ else
+ return yyerror ("Compare only of same register class");
}
| CCREG ASSIGN REG _ASSIGN_ASSIGN expr
{
}
| CCREG ASSIGN REG_A _LESS_THAN_ASSIGN REG_A
{
- if (!REG_SAME ($3, $5))
+ if ($3.regno == REG_A0 && $5.regno == REG_A1)
{
notethat ("CCflag: CC = A0 <= A1\n");
$$ = CCFLAG (0, 0, 7, 0, 0);
}
else
- return yyerror ("CC register expected");
+ return yyerror ("AREGs are in bad order or same");
}
| CCREG ASSIGN REG _LESS_THAN_ASSIGN REG iu_or_nothing
{
--- /dev/null
+.*: Assembler messages:
+.*:1: Error: AREGs are in bad order or same. Input text was A0.
+.*:2: Error: AREGs are in bad order or same. Input text was A1.
+.*:3: Error: AREGs are in bad order or same. Input text was A0.
+.*:4: Error: AREGs are in bad order or same. Input text was a0.
+.*:5: Error: AREGs are in bad order or same. Input text was a1.
+.*:6: Error: AREGs are in bad order or same. Input text was a0.
+.*:7: Error: AREGs are in bad order or same. Input text was a0.
+.*:8: Error: AREGs are in bad order or same. Input text was a1.
+.*:9: Error: AREGs are in bad order or same. Input text was a0.
+.*:10: Error: Compare only of same register class. Input text was P0.
+.*:11: Error: Compare only of same register class.
+.*:12: Error: Compare only of same register class.
+.*:13: Error: Compare only of same register class. Input text was R0.
+.*:14: Error: Compare only of same register class.
+.*:15: Error: Compare only of same register class.