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
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to