hi, sun & shin.
Could you please give a review for the following code?
I am sorry for that I have commited the code without any review. (r3301)
The following code is just a code format for GRA embedded by TARG_SL.
Thanks very much.
--- trunk/osprey/be/cg/gra_mon/gra_color.cxx 2010-08-03 05:03:53 UTC (rev
3300)
+++ trunk/osprey/be/cg/gra_mon/gra_color.cxx 2010-08-04 03:11:36 UTC (rev
3301)
@@ -248,38 +248,37 @@
void
Get_Rid_For_Lrange(LRANGE* lrange, vector <RID*> * rid_vec )
{
-
- LRANGE_LIVE_GBB_ITER live_gbb_iter;
- BB* bb;
- if(lrange->Type()== LRANGE_TYPE_REGION) { //region for major thread;
- return;
- }
- if(lrange->Type() ==LRANGE_TYPE_LOCAL) {
- bb = lrange->Gbb()->Bb();
- RID* rid = BB_rid(bb);
- if(rid ) { // don't split register for major fork
- if(RID_TYPE_major(rid))
- return;
- else { // for minor fork
- rid_vec->push_back(rid);
- return;
- }
- }
- }
- else { //complement region
- Is_True((lrange->Type()==LRANGE_TYPE_COMPLEMENT), ("unknown region
type"));
- LRANGE_LUNIT_ITER lunit_iter;
- for (lunit_iter.Init(lrange); ! lunit_iter.Done();
lunit_iter.Step())
- {
- LUNIT* lunit = lunit_iter.Current();
- GRA_BB* gbb = lunit->Gbb();
- bb = gbb->Bb();
- if(BB_rid(bb) && (find(rid_vec->begin(), rid_vec->end(),
BB_rid(bb)) == rid_vec->end())) {
- rid_vec->push_back(BB_rid(bb));
- }
- }
- }
- return;
+ LRANGE_LIVE_GBB_ITER live_gbb_iter;
+ BB* bb;
+ if(lrange->Type()== LRANGE_TYPE_REGION) { //region for major thread;
+ return;
+ }
+ if(lrange->Type() ==LRANGE_TYPE_LOCAL) {
+ bb = lrange->Gbb()->Bb();
+ RID* rid = BB_rid(bb);
+ if(rid ) { // don't split register for major fork
+ if(RID_TYPE_major(rid))
+ return;
+ else { // for minor fork
+ rid_vec->push_back(rid);
+ return;
+ }
+ }
+ }
+ else { //complement region
+ Is_True((lrange->Type()==LRANGE_TYPE_COMPLEMENT), ("unknown region
type"));
+ LRANGE_LUNIT_ITER lunit_iter;
+ for (lunit_iter.Init(lrange); ! lunit_iter.Done(); lunit_iter.Step())
+ {
+ LUNIT* lunit = lunit_iter.Current();
+ GRA_BB* gbb = lunit->Gbb();
+ bb = gbb->Bb();
+ if(BB_rid(bb) && (find(rid_vec->begin(), rid_vec->end(), BB_rid(bb))
== rid_vec->end())) {
+ rid_vec->push_back(BB_rid(bb));
+ }
+ }
+ }
+ return;
}
#endif
@@ -335,20 +334,20 @@
}
#ifdef TARG_SL //minor_reg_alloc
-// if( !lrange->Spans_Multiregions()) {
- vector< RID* > rid_vec;
- vector<RID* >::iterator iter;
- Get_Rid_For_Lrange(lrange, &rid_vec);
- for(iter = rid_vec.begin(); iter != rid_vec.end(); iter++) {
- RID* rid = *iter;
- if(rid && RID_TYPE_minor(rid)) {
- RID * pair_rid = gra_para_region_mgr.Get_Pair_Rid(rid);
- Is_True((pair_rid), ("pair_rid is NULL"));
- GRA_PARA_REGION* pair_region = gra_para_region_mgr.Get(pair_rid);
- pair_region->Add_One_Exclude_Register(rc, reg);
- }
- }
-// }
+//if( !lrange->Spans_Multiregions()) {
+ vector< RID* > rid_vec;
+ vector<RID* >::iterator iter;
+ Get_Rid_For_Lrange(lrange, &rid_vec);
+ for(iter = rid_vec.begin(); iter != rid_vec.end(); iter++) {
+ RID* rid = *iter;
+ if(rid && RID_TYPE_minor(rid)) {
+ RID * pair_rid = gra_para_region_mgr.Get_Pair_Rid(rid);
+ Is_True((pair_rid), ("pair_rid is NULL"));
+ GRA_PARA_REGION* pair_region = gra_para_region_mgr.Get(pair_rid);
+ pair_region->Add_One_Exclude_Register(rc, reg);
+ }
+ }
+//}
#endif
}
@@ -689,20 +688,19 @@
current_lrange = 0;
#endif // TARG_IA64
#ifdef TARG_SL //minor_reg_alloc
-// if(!lrange->Spans_Multiregions())
-// {
- vector< RID*> rid_vec;
- vector< RID* >::iterator iter;
- Get_Rid_For_Lrange(lrange, &rid_vec);
+//if(!lrange->Spans_Multiregions()) {
+ vector< RID*> rid_vec;
+ vector< RID* >::iterator iter;
+ Get_Rid_For_Lrange(lrange, &rid_vec);
for(iter=rid_vec.begin(); iter !=rid_vec.end(); iter++ ) {
- RID* rid = *iter;
- if(rid && RID_TYPE_minor(rid)) {
- GRA_PARA_REGION* region = gra_para_region_mgr.Get(rid);
- REGISTER_SET exclude_set =
region->Registers_Exclude(lrange->Rc());
- allowed = REGISTER_SET_Difference(allowed, exclude_set);
- }
+ RID* rid = *iter;
+ if(rid && RID_TYPE_minor(rid)) {
+ GRA_PARA_REGION* region = gra_para_region_mgr.Get(rid);
+ REGISTER_SET exclude_set = region->Registers_Exclude(lrange->Rc());
+ allowed = REGISTER_SET_Difference(allowed, exclude_set);
+ }
}
-// }
+//}
#endif
if ( lrange->Has_Wired_Register() ) {
@@ -918,11 +916,11 @@
#ifdef TARG_SL2 //minor_reg_alloc
BB* bb = gbb->Bb();
- if(BB_rid(bb) && RID_TYPE_minor(BB_rid(bb))) {
- GRA_PARA_REGION* region = gra_para_region_mgr.Get(BB_rid(bb));
- REGISTER_SET exclude_set = region->Registers_Exclude(rc);
+ if(BB_rid(bb) && RID_TYPE_minor(BB_rid(bb))) {
+ GRA_PARA_REGION* region = gra_para_region_mgr.Get(BB_rid(bb));
+ REGISTER_SET exclude_set = region->Registers_Exclude(rc);
allowed = REGISTER_SET_Difference(allowed, exclude_set);
- }
+ }
#endif
#ifdef HAS_STACKED_REGISTERS
@@ -967,12 +965,12 @@
GRA_GRANT_Local_Register(gbb,rc,reg);
#ifdef TARG_SL //minor_reg_alloc
if(BB_rid(gbb->Bb()) && RID_TYPE_minor(BB_rid(gbb->Bb()))) {
- RID* rid = BB_rid(gbb->Bb());
- RID* pair_rid = gra_para_region_mgr.Get_Pair_Rid(rid);
- GRA_PARA_REGION * pair_region =
- gra_para_region_mgr.Get(pair_rid);
- pair_region->Add_One_Exclude_Register(rc, reg);
- }
+ RID* rid = BB_rid(gbb->Bb());
+ RID* pair_rid = gra_para_region_mgr.Get_Pair_Rid(rid);
+ GRA_PARA_REGION * pair_region =
+ gra_para_region_mgr.Get(pair_rid);
+ pair_region->Add_One_Exclude_Register(rc, reg);
+ }
#endif
}
else {
@@ -1454,18 +1452,18 @@
void
Set_Children_GRA_Colored (RID * rid)
{
- RID* kid;
+ RID* kid;
- if(rid == NULL) return; //func_entry rid
-
- RID_was_gra_Set(rid);
- RID_has_reg_alloc_Set(rid);
+ if(rid == NULL) return; //func_entry rid
- for(kid = RID_first_kid(rid); kid != NULL; kid = RID_next(kid))
- {
- Set_Children_GRA_Colored(kid);
- }
- return;
+ RID_was_gra_Set(rid);
+ RID_has_reg_alloc_Set(rid);
+
+ for(kid = RID_first_kid(rid); kid != NULL; kid = RID_next(kid))
+ {
+ Set_Children_GRA_Colored(kid);
+ }
+ return;
}
#endif // TARG_SL
Modified: trunk/osprey/be/cg/gra_mon/gra_create.cxx
===================================================================
--- trunk/osprey/be/cg/gra_mon/gra_create.cxx 2010-08-03 05:03:53 UTC (rev
3300)
+++ trunk/osprey/be/cg/gra_mon/gra_create.cxx 2010-08-04 03:11:36 UTC (rev
3301)
@@ -481,10 +481,10 @@
RID * rid = BB_rid(bb);
GRA_PARA_REGION* para_region = gra_para_region_mgr.Get(rid);
if(rid && RID_TYPE_minor(rid)) {
- gra_para_region_mgr.Add_Rid_Into_Minor_Vector(rid);
+ gra_para_region_mgr.Add_Rid_Into_Minor_Vector(rid);
}
if(para_region)
- para_region->Add_BB(bb);
+ para_region->Add_BB(bb);
#endif
@@ -2245,40 +2245,39 @@
void
Mark_Lrange_For_Minor_Thread()
{
- ISA_REGISTER_CLASS rc;
- GRA_REGION_RC_NL_LRANGE_ITER iter0;
- GRA_REGION_GBB_ITER gbb_iter;
- GRA_REGION *region = gra_region_mgr.Complement_Region();
+ ISA_REGISTER_CLASS rc;
+ GRA_REGION_RC_NL_LRANGE_ITER iter0;
+ GRA_REGION_GBB_ITER gbb_iter;
+ GRA_REGION *region = gra_region_mgr.Complement_Region();
-// FOR_ALL_ISA_REGISTER_CLASS( rc ) {
- rc = ISA_REGISTER_CLASS_integer;
- for (iter0.Init(region,rc); ! iter0.Done(); iter0.Step()) {
- LRANGE* lrange0 = iter0.Current();
- LRANGE_LIVE_GBB_ITER live_gbb_iter;
- LRANGE_LUNIT_ITER lunit_iter;
-/* for now we think the rid_count greater than 2 means the lrange spans
multi-region,
- * there only two parallel regions active at same time in minor mode
- */
- vector<INT> met_rid;
- for (lunit_iter.Init(lrange0); !lunit_iter.Done();
lunit_iter.Step())
- {
- LUNIT* lunit = lunit_iter.Current();
- GRA_BB *live_gbb = lunit->Gbb();
- BB* bb = live_gbb->Bb();
- if(BB_rid(bb) && RID_TYPE_minor(BB_rid(bb))) { // NULL for
func_entry region
- if(find(met_rid.begin(), met_rid.end(), RID_id(BB_rid(bb)))
== met_rid.end()) {
- met_rid.push_back(RID_id(BB_rid(bb)));
- }
- }
- }
- if(met_rid.size() > 1 && met_rid.size() < 3)
- {
- lrange0->Spans_Multiregions_Set();
- }
- met_rid.clear();
+ // FOR_ALL_ISA_REGISTER_CLASS( rc ) {
+ rc = ISA_REGISTER_CLASS_integer;
+ for (iter0.Init(region,rc); ! iter0.Done(); iter0.Step()) {
+ LRANGE* lrange0 = iter0.Current();
+ LRANGE_LIVE_GBB_ITER live_gbb_iter;
+ LRANGE_LUNIT_ITER lunit_iter;
+ /* for now we think the rid_count greater than 2 means the lrange
spans multi-region,
+ * there only two parallel regions active at same time in minor mode
+ */
+ vector<INT> met_rid;
+ for (lunit_iter.Init(lrange0); !lunit_iter.Done(); lunit_iter.Step())
+ {
+ LUNIT* lunit = lunit_iter.Current();
+ GRA_BB *live_gbb = lunit->Gbb();
+ BB* bb = live_gbb->Bb();
+ if(BB_rid(bb) && RID_TYPE_minor(BB_rid(bb))) { // NULL for
func_entry region
+ if(find(met_rid.begin(), met_rid.end(), RID_id(BB_rid(bb))) ==
met_rid.end()) {
+ met_rid.push_back(RID_id(BB_rid(bb)));
+ }
}
-//}
-
+ }
+ if(met_rid.size() > 1 && met_rid.size() < 3)
+ {
+ lrange0->Spans_Multiregions_Set();
+ }
+ met_rid.clear();
+ }
+ //}
}
#endif
Modified: trunk/osprey/be/cg/gra_mon/gra_grant.cxx
===================================================================
--- trunk/osprey/be/cg/gra_mon/gra_grant.cxx 2010-08-03 05:03:53 UTC (rev
3300)
+++ trunk/osprey/be/cg/gra_mon/gra_grant.cxx 2010-08-04 03:11:36 UTC (rev
3301)
@@ -226,10 +226,10 @@
#if defined (TARG_SL)
if ((REGISTER_SET_MemberP(REGISTER_CLASS_function_value(rc), reg))) {
if (BB_call(gbb->Bb()))
- if (GTN_SET_MemberP(BB_live_out(gbb->Bb()),Build_Dedicated_TN(rc,
reg, 8)))
- return;
- else if (GTN_SET_MemberP(BB_live_in
(gbb->Bb()),Build_Dedicated_TN(rc, reg, 8)))
- return;
+ if (GTN_SET_MemberP(BB_live_out(gbb->Bb()),Build_Dedicated_TN(rc,
reg, 8)))
+ return;
+ else if (GTN_SET_MemberP(BB_live_in
(gbb->Bb()),Build_Dedicated_TN(rc, reg, 8)))
+ return;
}
else
#endif
@@ -293,15 +293,15 @@
gbb->Registers_Used(rc));
FOR_ALL_REGISTER_SET_members(free_regs, reg) {
#ifdef TARG_SL2 //minor_reg_alloc
- if(BB_rid(gbb->Bb()) && RID_TYPE_minor(BB_rid(gbb->Bb())))
- {
- GRA_PARA_REGION* region =
gra_para_region_mgr.Get(BB_rid(gbb->Bb()));
- if( !REGISTER_SET_Intersection1(region->Registers_Exclude(rc),
reg))
- GRA_GRANT_Local_Register(gbb, rc, reg);
- }
- else
+ if(BB_rid(gbb->Bb()) && RID_TYPE_minor(BB_rid(gbb->Bb())))
+ {
+ GRA_PARA_REGION* region =
gra_para_region_mgr.Get(BB_rid(gbb->Bb()));
+ if( !REGISTER_SET_Intersection1(region->Registers_Exclude(rc),
reg))
+ GRA_GRANT_Local_Register(gbb, rc, reg);
+ }
+ else
#endif
- GRA_GRANT_Local_Register(gbb, rc, reg);
+ GRA_GRANT_Local_Register(gbb, rc, reg);
}
}
}
Modified: trunk/osprey/be/cg/gra_mon/gra_split.cxx
===================================================================
--- trunk/osprey/be/cg/gra_mon/gra_split.cxx 2010-08-03 05:03:53 UTC (rev
3300)
+++ trunk/osprey/be/cg/gra_mon/gra_split.cxx 2010-08-04 03:11:36 UTC (rev
3301)
@@ -339,13 +339,13 @@
#ifdef TARG_SL //minor_reg_alloc
/* exclude registers used in parallel region */
- if(BB_rid(gbb->Bb()) && RID_TYPE_minor(BB_rid(gbb->Bb()))) {
- RID* rid = BB_rid(gbb->Bb());
- GRA_PARA_REGION* region = gra_para_region_mgr.Get(rid);
- Is_True((region), ("para region is NULL"));
- REGISTER_SET exclude_set = region->Registers_Exclude(rc);
- used = REGISTER_SET_Union(used, exclude_set);
- }
+ if(BB_rid(gbb->Bb()) && RID_TYPE_minor(BB_rid(gbb->Bb()))) {
+ RID* rid = BB_rid(gbb->Bb());
+ GRA_PARA_REGION* region = gra_para_region_mgr.Get(rid);
+ Is_True((region), ("para region is NULL"));
+ REGISTER_SET exclude_set = region->Registers_Exclude(rc);
+ used = REGISTER_SET_Union(used, exclude_set);
+ }
#endif
return used;
--
Best Regards.
Shen Ruifen
tel: 010-51266989-226
------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel