[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gas/3990] New: [PATCH] IA64 gas DV: reports spurious WAW hazards
From: |
klchxbec at freenet dot de |
Subject: |
[Bug gas/3990] New: [PATCH] IA64 gas DV: reports spurious WAW hazards |
Date: |
7 Feb 2007 13:01:33 -0000 |
Here's a small patch to fix a spurious WAW hazard reported on this
for p2:
{.mmi
cmp.eq.or.andcm p3,p2=r49,r39
cmp.ne.and p2,p1=r49,r36
nop.i 0 ;;
}
Index: tc-ia64.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.c,v
retrieving revision 1.190
diff -b -u -r1.190 tc-ia64.c
--- tc-ia64.c 1 Feb 2007 14:12:18 -0000 1.190
+++ tc-ia64.c 3 Feb 2007 10:06:06 -0000
@@ -9001,14 +9001,18 @@
int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P;
int or_andcm = strstr (idesc->name, "or.andcm") != NULL;
int and_orcm = strstr (idesc->name, "and.orcm") != NULL;
+ int and = strstr (idesc->name, "and") != NULL;
+ int or = strstr (idesc->name, "or") != NULL;
if ((idesc->operands[0] == IA64_OPND_P1
|| idesc->operands[0] == IA64_OPND_P2)
&& p1 >= 1 && p1 < 16)
{
specs[count] = tmpl;
- specs[count].cmp_type =
- (or_andcm ? CMP_OR : (and_orcm ? CMP_AND : CMP_NONE));
+ specs[count].cmp_type = (or_andcm ? CMP_OR :
+ (and_orcm ? CMP_AND :
+ (and ? CMP_AND :
+ (or ? CMP_OR : CMP_NONE))));
specs[count++].index = p1;
}
if ((idesc->operands[1] == IA64_OPND_P1
@@ -9016,8 +9020,10 @@
&& p2 >= 1 && p2 < 16)
{
specs[count] = tmpl;
- specs[count].cmp_type =
- (or_andcm ? CMP_AND : (and_orcm ? CMP_OR : CMP_NONE));
+ specs[count].cmp_type = (or_andcm ? CMP_AND :
+ (and_orcm ? CMP_OR :
+ (and ? CMP_AND :
+ (or ? CMP_OR : CMP_NONE))));
specs[count++].index = p2;
}
}
@@ -9123,14 +9129,18 @@
int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P;
int or_andcm = strstr (idesc->name, "or.andcm") != NULL;
int and_orcm = strstr (idesc->name, "and.orcm") != NULL;
+ int and = strstr (idesc->name, "and") != NULL;
+ int or = strstr (idesc->name, "or") != NULL;
if ((idesc->operands[0] == IA64_OPND_P1
|| idesc->operands[0] == IA64_OPND_P2)
&& p1 >= 16 && p1 < 63)
{
specs[count] = tmpl;
- specs[count].cmp_type =
- (or_andcm ? CMP_OR : (and_orcm ? CMP_AND : CMP_NONE));
+ specs[count].cmp_type = (or_andcm ? CMP_OR :
+ (and_orcm ? CMP_AND :
+ (and ? CMP_AND :
+ (or ? CMP_OR : CMP_NONE))));
specs[count++].index = p1;
}
if ((idesc->operands[1] == IA64_OPND_P1
@@ -9138,8 +9148,10 @@
&& p2 >= 16 && p2 < 63)
{
specs[count] = tmpl;
- specs[count].cmp_type =
- (or_andcm ? CMP_AND : (and_orcm ? CMP_OR : CMP_NONE));
+ specs[count].cmp_type = (or_andcm ? CMP_AND :
+ (and_orcm ? CMP_OR :
+ (and ? CMP_AND :
+ (or ? CMP_OR : CMP_NONE))));
specs[count++].index = p2;
}
}
@@ -9587,22 +9599,28 @@
int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P;
int or_andcm = strstr (idesc->name, "or.andcm") != NULL;
int and_orcm = strstr (idesc->name, "and.orcm") != NULL;
+ int and = strstr (idesc->name, "and") != NULL;
+ int or = strstr (idesc->name, "or") != NULL;
if (p1 == 63
&& (idesc->operands[0] == IA64_OPND_P1
|| idesc->operands[0] == IA64_OPND_P2))
{
specs[count] = tmpl;
- specs[count++].cmp_type =
- (or_andcm ? CMP_OR : (and_orcm ? CMP_AND : CMP_NONE));
+ specs[count].cmp_type = (or_andcm ? CMP_OR :
+ (and_orcm ? CMP_AND :
+ (and ? CMP_AND :
+ (or ? CMP_OR : CMP_NONE))));
}
if (p2 == 63
&& (idesc->operands[1] == IA64_OPND_P1
|| idesc->operands[1] == IA64_OPND_P2))
{
specs[count] = tmpl;
- specs[count++].cmp_type =
- (or_andcm ? CMP_AND : (and_orcm ? CMP_OR : CMP_NONE));
+ specs[count].cmp_type = (or_andcm ? CMP_AND :
+ (and_orcm ? CMP_OR :
+ (and ? CMP_AND :
+ (or ? CMP_OR : CMP_NONE))));
}
}
else
--
Summary: [PATCH] IA64 gas DV: reports spurious WAW hazards
Product: binutils
Version: 2.18 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: gas
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: klchxbec at freenet dot de
CC: bug-binutils at gnu dot org
GCC build triplet: elf32-ia64-hpux-big
GCC host triplet: elf32-ia64-hpux-big
GCC target triplet: elf32-ia64-hpux-big
http://sourceware.org/bugzilla/show_bug.cgi?id=3990
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug gas/3990] New: [PATCH] IA64 gas DV: reports spurious WAW hazards,
klchxbec at freenet dot de <=