Author: dgilmore
Date: 2011-11-21 19:57:18 -0500 (Mon, 21 Nov 2011)
New Revision: 3821
Modified:
trunk/osprey/be/cg/MIPS/cgtarget_arch.h
trunk/osprey/be/cg/NVISA/cgtarget_arch.h
trunk/osprey/be/cg/SL/cgtarget_arch.h
trunk/osprey/be/cg/cgemit.cxx
trunk/osprey/be/cg/ia64/cgtarget_arch.h
trunk/osprey/be/cg/loongson/cgtarget_arch.h
trunk/osprey/be/cg/ppc32/cgtarget_arch.h
trunk/osprey/be/cg/x8664/cgtarget_arch.h
Log:
Replace CGTARG_Is_Right_Shift_Op() by CGTARG_Is_Shift_Redundant ().
Note that CGTARG_Is_Shift_Redundant() only needs a non-trivial
implemention on architectures that have a zero register, otherwise it
just returns FALSE.
Approved by Sun.
Modified: trunk/osprey/be/cg/MIPS/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/MIPS/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/MIPS/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -195,8 +195,10 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
+ BOOL predicated = OP_has_predicate(op) != 0;
+
switch (OP_code(op)) {
case TOP_sra:
case TOP_srav:
@@ -208,7 +210,7 @@
case TOP_dsrl:
case TOP_dsrl32:
case TOP_dsrlv:
- return TRUE;
+ return TN_register(OP_opnd(op,0+predicated)) == REGISTER_zero;
}
return FALSE;
}
Modified: trunk/osprey/be/cg/NVISA/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/NVISA/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/NVISA/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -184,12 +184,9 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
- switch (OP_code(op)) {
- TOP_shr:
- return TRUE;
- }
+ // Check unneeded since there is no zero register.
return FALSE;
}
Modified: trunk/osprey/be/cg/SL/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/SL/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/SL/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -168,21 +168,9 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
- switch (OP_code(op)) {
- case TOP_sra:
- case TOP_srav:
- case TOP_srl:
- case TOP_srlv:
- case TOP_dsra:
- case TOP_dsra32:
- case TOP_dsrav:
- case TOP_dsrl:
- case TOP_dsrl32:
- case TOP_dsrlv:
- return TRUE;
- }
+ // Check unneeded since there is no zero register.
return FALSE;
}
Modified: trunk/osprey/be/cg/cgemit.cxx
===================================================================
--- trunk/osprey/be/cg/cgemit.cxx 2011-11-20 08:09:09 UTC (rev 3820)
+++ trunk/osprey/be/cg/cgemit.cxx 2011-11-22 00:57:18 UTC (rev 3821)
@@ -2528,14 +2528,12 @@
}
}
- if (CGTARG_Is_Right_Shift_Op (op)) {
- if (TN_register(OP_opnd(op,0+predicated)) == REGISTER_zero) {
- DevWarn ("Redundant shift instruction in %sBB:%d (PC=0x%x)",
- BB_rotating_kernel(OP_bb(op)) ? "SWPd " : "",
- BB_id(OP_bb(op)), PC);
- if (TFile != stdout) { /* only print to .t file */
- Print_OP_No_SrcLine (op);
- }
+ if (CGTARG_Is_Shift_Redundant (op)) {
+ DevWarn ("Redundant shift instruction in %sBB:%d (PC=0x%x)",
+ BB_rotating_kernel(OP_bb(op)) ? "SWPd " : "",
+ BB_id(OP_bb(op)), PC);
+ if (TFile != stdout) { /* only print to .t file */
+ Print_OP_No_SrcLine (op);
}
}
}
Modified: trunk/osprey/be/cg/ia64/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/ia64/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/ia64/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -285,13 +285,15 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
+ BOOL predicated = OP_has_predicate(op) != 0;
+
switch (OP_code(op)) {
case TOP_shr:
case TOP_shr_u:
case TOP_shrp:
- return TRUE;
+ return TN_register(OP_opnd(op,0+predicated)) == REGISTER_zero;
}
return FALSE;
}
Modified: trunk/osprey/be/cg/loongson/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/loongson/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/loongson/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -163,8 +163,10 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
+ BOOL predicated = OP_has_predicate(op) != 0;
+
switch (OP_code(op)) {
case TOP_srl:
case TOP_sra:
@@ -172,7 +174,7 @@
case TOP_dsra:
case TOP_dsrl32:
case TOP_dsra32:
- return TRUE;
+ return TN_register(OP_opnd(op,0+predicated)) == REGISTER_zero;
}
return FALSE;
}
Modified: trunk/osprey/be/cg/ppc32/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/ppc32/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/ppc32/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -171,21 +171,9 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
- switch (OP_code(op)) {
- case TOP_srawi:
- case TOP_sraw:
- case TOP_srwi:
- case TOP_srw:
-// case TOP_dsra:
-// case TOP_dsra32:
-// case TOP_dsrav:
-// case TOP_dsrl:
-// case TOP_dsrl32:
-// case TOP_dsrlv:
- return TRUE;
- }
+ // Check unneeded since there is no zero register.
return FALSE;
}
Modified: trunk/osprey/be/cg/x8664/cgtarget_arch.h
===================================================================
--- trunk/osprey/be/cg/x8664/cgtarget_arch.h 2011-11-20 08:09:09 UTC (rev
3820)
+++ trunk/osprey/be/cg/x8664/cgtarget_arch.h 2011-11-22 00:57:18 UTC (rev
3821)
@@ -183,19 +183,9 @@
}
inline BOOL
-CGTARG_Is_Right_Shift_Op (OP *op)
+CGTARG_Is_Shift_Redundant (OP *op)
{
- switch (OP_code(op)) {
- TOP_sarb:
- TOP_sarw:
- TOP_sarl:
- TOP_sarq:
- TOP_shrb:
- TOP_shrw:
- TOP_shrl:
- TOP_shrq:
- return TRUE;
- }
+ // Check unneeded since there is no zero register.
return FALSE;
}
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel