why is F8 the default, but not others?
Sun

On Sat, Sep 11, 2010 at 6:08 AM, Yiran Wang <yiran.w...@gmail.com> wrote:
> Hi Sun,
> Sure.
> The situation is as following.
> There is implementation of the intrinsic "sqrt", for a number of types, such
> as F4, F8, and so on. While, the compiler want to determine the exact type
> of the sqrt by context. For example,
> double a, b;
> a = sqrt(b);
> Then the type is F8.
> Usually it works, but for the following code:
> double x;
> int y;
> y = sqrt(x*x)>1?1:0;
> The result of sqrt is used by the > operator. While, the operator > would
> like to promote the type of the two operands, so they match. So it would not
> provide type information for the sqrt intrinsic. So, the compiler simply
> generate something like
> VSTID...
> VSQRT ...
> The change is to set default type to F8, for such case.
> Best Regards,
> yiran
>
> On Fri, Sep 10, 2010 at 2:54 PM, Sun Chan <sun.c...@gmail.com> wrote:
>>
>> please give a brief description of the bug. Or a simple test case. The
>> portion of code change is not enough for me to tell why F8 is the
>> right type, but not, say, F4, or V8....
>> Sun
>>
>> On Sat, Sep 11, 2010 at 2:58 AM, Yiran Wang <yiran.w...@gmail.com> wrote:
>> > Hi All,
>> > Could a gatekeeper please review it?
>> > Simply, the ret_mtype should be reset automatically, if it is void. This
>> > is
>> > already done for a number of other intrinsics.
>> > The bug is triggered when the combination of > and ?: operator is used,
>> > as
>> > the result type is not set by parent of the intrinsic.
>> > Best Regards,
>> > yiran
>> >
>> > Index: wgen_expr.cxx
>> > ===================================================================
>> > --- wgen_expr.cxx       (revision 3338)
>> > +++ wgen_expr.cxx       (working copy)
>> > @@ -8153,6 +8153,7 @@
>> >  #ifndef TARG_MIPS  // MIPS needs quad emulation for sqrt operation
>> >                case GSBI_BUILT_IN_SQRTL:
>> >  #endif
>> > +               if (ret_mtype == MTYPE_V) ret_mtype = MTYPE_F8;
>> >                 if (! gs_flag_errno_math(program)) {
>> >                   arg_wn = WGEN_Expand_Expr (gs_tree_value
>> > (gs_tree_operand
>> > (exp, 1)));
>> >                   wn = WN_CreateExp1 (OPR_SQRT, ret_mtype, MTYPE_V,
>> > arg_wn);
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > Start uncovering the many advantages of virtual appliances
>> > and start using them to simplify application deployment and
>> > accelerate your shift to cloud computing
>> > http://p.sf.net/sfu/novell-sfdev2dev
>> >
>> > _______________________________________________
>> > Open64-devel mailing list
>> > Open64-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/open64-devel
>> >
>> >
>
>

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to