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

Reply via email to