WHy do you like the first solution? It added yet another #ifdef which is 1. going against our wish to do fewer #ifdef's 2. the whole point of having things like Is_target_xxx() is to do away with #ifdef's
Sun On Wed, Jul 20, 2011 at 3:47 AM, Jian-Xin Lai <laij...@gmail.com> wrote: > Actually, I prefer the first patch. Let's wait for Sun's comments on this > issue. > > 2011/7/20 Gang Yu <yugang...@gmail.com> >> >> Jianxin, Sun; >> >> I get another solution for this Is_Target_SSE41() problem, I suggest a >> patch like this: >> >> --- osprey/common/com/config_lno.cxx (revision 3697) >> +++ osprey/common/com/config_lno.cxx (working copy) >> @@ -1232,7 +1232,7 @@ >> the flag is set based on target. Otherwise use user-specified value. >> */ >> if(LNO_Iter_threshold == 1) { >> - LNO_Iter_threshold = (Is_Target_SSE41())? 8 : 0; >> + LNO_Iter_threshold = (Is_Aggressive_SIMD_Target())? 8 : 0; >> } >> } >> >> --- osprey/common/com/SL/config_targ.h (revision 3697) >> +++ osprey/common/com/SL/config_targ.h (working copy) >> @@ -161,6 +161,7 @@ >> #define Is_Target_ISA_M2Plus() (Target_ISA >= TARGET_ISA_M2) >> #define Is_Target_ISA_M3Plus() (Target_ISA >= TARGET_ISA_M3) >> #define Is_Target_ISA_M4Plus() (Target_ISA >= TARGET_ISA_M4) >> +#define Is_Aggressive_SIMD_Target() (FALSE) >> >> --- osprey/common/com/x8664/config_targ.h (revision 3697) >> +++ osprey/common/com/x8664/config_targ.h (working copy) >> @@ -194,8 +194,8 @@ >> #define Target_x87_precision() (Target_x87_Precision+0) >> #define Is_Target_Barcelona() (Target == TARGET_barcelona) >> #define Is_Target_Orochi() (Target == TARGET_orochi) >> +#define Is_Aggressive_SIMD_Target() (Target_SSE41 == TRUE) >> >> with this patch, we do not introduce the #ifdef in the target independent >> sections and also keep the capabilitity to share the code. The patch has >> been tested on x86 and SL targets. >> >> The attached patch also solves other build broken problems for non-x86 >> targets. >> >> Please help a review. >> >> Gang >> >> >> On Mon, Jul 18, 2011 at 4:59 PM, Jian-Xin Lai <laij...@gmail.com> wrote: >>> >>> Hi Sun, >>> >>> I think Gang's first patch is good enough to fix the compilation error on >>> both IA-64 and SL. We can let him check in the patch at first and continue >>> discussing about how to handle the Is_Target_SSE41 (and similar macros). >>> What's your opinion? >>> >>> 2011/7/15 Jian-Xin Lai <laij...@gmail.com> >>>> >>>> I think keeping Is_Target_SSE41 undefined on other platforms will help >>>> find any potential problems on other platforms caused by x86 specific >>>> changes. >>>> >>>> For example, in this case, changing Is_Target_SSE41 to return false on >>>> other platforms will change the original program's semantic. If we >>>> keep Is_Target_SSE41 undefined, we are able to find the problem from >>>> the compilation error and check the initial and expected value of >>>> LNO_Iter_threshold to make sure if this change will impact the target. >>>> >>>> >>>> 2011/7/12 Sun Chan <sun.c...@gmail.com>: >>>> > just return false if it does not apply to you >>>> > Sun >>>> > >>>> > On Tue, Jul 12, 2011 at 9:25 AM, Gang Yu <yugang...@gmail.com> wrote: >>>> >> Thx, Sun. >>>> >> >>>> >> Since "Is_Target_SSE41()" is quite a target-specific name, we are not >>>> >> sure >>>> >> of the original author's intension. If this part is sure of a >>>> >> target-independent design, we can take this job and we should make a >>>> >> general >>>> >> name for it. >>>> >> >>>> >> Thanks >>>> >> >>>> >> Gang >>>> >> >>>> >> >>>> >> On Mon, Jul 11, 2011 at 8:57 PM, Sun Chan <sun.c...@gmail.com> wrote: >>>> >>> >>>> >>> Thx to Gang for pointing out the regression due to v3681 checkin. >>>> >>> Here >>>> >>> is my suggestion: >>>> >>> There are multiple ways to fix the regression that will be seen in >>>> >>> other target builds: >>>> >>> 1. Fix based on existing infrastructure: >>>> >>> Each target must add the corresponding function Is_Target_SSE41() >>>> >>> in the corresponding config_targ.h >>>> >>> I agree with Gang that this fix is not desirable since it continues >>>> >>> the practice that will cause target dependent build breaks easily >>>> >>> and >>>> >>> the burden lies with the receiving party, not whoever making the >>>> >>> change. >>>> >>> 2. Fix that could start a better change to open64 in the longer run: >>>> >>> Define a target independent Is_Target_SSE41() that will return >>>> >>> "false" for all targets, and in the one that matters, return result >>>> >>> appropriately. >>>> >>> One can do this in one of the following two ways I can think of: >>>> >>> a. define the function with template, and let the "target" >>>> >>> specialize that accordingly. This is standard template >>>> >>> implementation >>>> >>> b. define the generic version as weak, and let the "target" >>>> >>> version that the implementor cares about to return the desired >>>> >>> result >>>> >>> as "strong". This is the implementation most libraries (like libc) >>>> >>> use. >>>> >>> >>>> >>> Now, can I get some volunteer to go about implementing this? >>>> >>> >>>> >>> Sun >>>> >>> >>>> >>> On Fri, Jul 8, 2011 at 4:24 PM, Gang Yu <yugang...@gmail.com> wrote: >>>> >>> > Hi, >>>> >>> > >>>> >>> > SL target builds fail today due to the LNO check-in v3681, the >>>> >>> > build >>>> >>> > fail >>>> >>> > comes from the patch: >>>> >>> > >>>> >>> > Index: config_lno.cxx >>>> >>> > >>>> >>> > =================================================================== >>>> >>> > --- config_lno.cxx (revision 3643) >>>> >>> > +++ config_lno.cxx (revision 3681) >>>> >>> > @@ -1224,5 +1227,12 @@ >>>> >>> > Mhd_Options.L[i].TLB_Miss_Penalty; >>>> >>> > } >>>> >>> > } >>>> >>> > + >>>> >>> > + /* Value of 1 for LNO_Iter_threshold is interpreted as default >>>> >>> > in >>>> >>> > which >>>> >>> > case >>>> >>> > + the flag is set based on target. Otherwise use >>>> >>> > user-specified >>>> >>> > value. >>>> >>> > + */ >>>> >>> > + if(LNO_Iter_threshold == 1) { >>>> >>> > + LNO_Iter_threshold = (Is_Target_SSE41())? 8 : 0; >>>> >>> > + } >>>> >>> > } >>>> >>> > Index: /home/yugang/trunk/trunk/osprey/be/cg/whirl2ops.cxx >>>> >>> > >>>> >>> > =================================================================== >>>> >>> > --- /home/yugang/trunk/trunk/osprey/be/cg/whirl2ops.cxx (revision >>>> >>> > 3666) >>>> >>> > +++ /home/yugang/trunk/trunk/osprey/be/cg/whirl2ops.cxx (revision >>>> >>> > 3681) >>>> >>> > @@ -3166,9 +3166,18 @@ >>>> >>> > WN *compare; >>>> >>> > VARIANT variant; >>>> >>> > >>>> >>> > + if (opcode == OPC_V16I1V16I1SELECT) { >>>> >>> > + TN* op1 = Expand_Expr(WN_kid0(select), select, NULL); >>>> >>> > + TN* op2 = Expand_Expr(WN_kid1(select), select, NULL); >>>> >>> > + TN* op3 = Expand_Expr(WN_kid2(select), select, NULL); >>>> >>> > >>>> >>> > + if (result == NULL) >>>> >>> > + result = Allocate_Result_TN (select, NULL); >>>> >>> > + >>>> >>> > + Expand_Select(result, op1, op2, op3, MTYPE_V16I1, FALSE, >>>> >>> > &New_OPs); >>>> >>> > //FALSE passed as dummy arg >>>> >>> > + return result; >>>> >>> > + } >>>> >>> > >>>> >>> > the "Is_Target_SSE41()", "OPC_V16I1V16I1SELECT" and "MTYPE_V16I1" >>>> >>> > are >>>> >>> > specific to X86 targets, these patches will cause other targets >>>> >>> > fail, >>>> >>> > >>>> >>> > The suggest patche is: >>>> >>> > Index: config_lno.cxx >>>> >>> > >>>> >>> > =================================================================== >>>> >>> > --- config_lno.cxx (revision 3681) >>>> >>> > +++ config_lno.cxx (working copy) >>>> >>> > @@ -1228,11 +1228,13 @@ >>>> >>> > } >>>> >>> > } >>>> >>> > >>>> >>> > +#ifdef TARG_X8664 >>>> >>> > /* Value of 1 for LNO_Iter_threshold is interpreted as default >>>> >>> > in >>>> >>> > which >>>> >>> > case >>>> >>> > the flag is set based on target. Otherwise use >>>> >>> > user-specified >>>> >>> > value. >>>> >>> > */ >>>> >>> > if(LNO_Iter_threshold == 1) { >>>> >>> > LNO_Iter_threshold = (Is_Target_SSE41())? 8 : 0; >>>> >>> > } >>>> >>> > +#endif >>>> >>> > } >>>> >>> > >>>> >>> > Index: ../../be/cg/whirl2ops.cxx >>>> >>> > >>>> >>> > =================================================================== >>>> >>> > --- ../../be/cg/whirl2ops.cxx (revision 3681) >>>> >>> > +++ ../../be/cg/whirl2ops.cxx (working copy) >>>> >>> > @@ -3166,6 +3166,7 @@ >>>> >>> > WN *compare; >>>> >>> > VARIANT variant; >>>> >>> > >>>> >>> > +#ifdef TARG_X8664 >>>> >>> > if (opcode == OPC_V16I1V16I1SELECT) { >>>> >>> > TN* op1 = Expand_Expr(WN_kid0(select), select, NULL); >>>> >>> > TN* op2 = Expand_Expr(WN_kid1(select), select, NULL); >>>> >>> > @@ -3177,6 +3178,7 @@ >>>> >>> > Expand_Select(result, op1, op2, op3, MTYPE_V16I1, FALSE, >>>> >>> > &New_OPs); >>>> >>> > //FALSE passed as dummy arg >>>> >>> > return result; >>>> >>> > } >>>> >>> > +#endif >>>> >>> > >>>> >>> > >>>> >>> > >>>> >>> > Would a gatekeeper help a review? >>>> >>> > >>>> >>> > Thanks >>>> >>> > >>>> >>> > >>>> >>> > Gang >>>> >>> > >>>> >>> > >>>> >>> > >>>> >>> > ------------------------------------------------------------------------------ >>>> >>> > All of the data generated in your IT infrastructure is seriously >>>> >>> > valuable. >>>> >>> > Why? It contains a definitive record of 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-d2d-c2 >>>> >>> > _______________________________________________ >>>> >>> > Open64-devel mailing list >>>> >>> > Open64-devel@lists.sourceforge.net >>>> >>> > https://lists.sourceforge.net/lists/listinfo/open64-devel >>>> >>> > >>>> >>> > >>>> >> >>>> >> >>>> > >>>> > >>>> > ------------------------------------------------------------------------------ >>>> > All of the data generated in your IT infrastructure is seriously >>>> > valuable. >>>> > Why? It contains a definitive record of 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-d2d-c2 >>>> > _______________________________________________ >>>> > Open64-devel mailing list >>>> > Open64-devel@lists.sourceforge.net >>>> > https://lists.sourceforge.net/lists/listinfo/open64-devel >>>> > >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Lai Jian-Xin >>> >>> >>> >>> -- >>> Regards, >>> Lai Jian-Xin >> > > > > -- > Regards, > Lai Jian-Xin > ------------------------------------------------------------------------------ 10 Tips for Better Web Security Learn 10 ways to better secure your business today. Topics covered include: Web security, SSL, hacker attacks & Denial of Service (DoS), private keys, security Microsoft Exchange, secure Instant Messaging, and much more. http://www.accelacomm.com/jaw/sfnl/114/51426210/ _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel