Hi rfen

Looks good to me.  Thx.

-Mei

From: ruifen Shen [mailto:shenr...@gmail.com]
Sent: Tuesday, September 27, 2011 1:06 AM
To: Gang Yu
Cc: Ye, Mei; open64-devel
Subject: Re: [Open64-devel] Please help to review the patch for [Bug 872] ZDL-- 
Error loop body

hi, mei
    Thx very much for your kindly suggestion.
    Attached please find the new version patch!
    Please help to review again.
    Thx again.

2011/9/27 ruifen Shen <shenr...@gmail.com<mailto:shenr...@gmail.com>>
hi, mei.

2011/9/23 shenrfen <shenr...@gmail.com<mailto:shenr...@gmail.com>>
See. Thx.
I misunderstand Mei's meaning.
Let me try.

From: Gang Yu [mailto:yugang...@gmail.com<mailto:yugang...@gmail.com>]
Sent: Friday, September 23, 2011 2:51 PM
To: shenrfen
Cc: Ye, Mei
Subject: Re: [Open64-devel] Please help to review the patch for [Bug 872] ZDL-- 
Error loop body

I guess Mei means

if (label_bb == NULL) can be changed to

FmtAssert ((label_bb != NULL), ("Fatal error, ZDLBR without a label!"));

Yes, this is a good idea. We should try.

Regards
Gang
On Fri, Sep 23, 2011 at 2:31 PM, shenrfen 
<shenr...@gmail.com<mailto:shenr...@gmail.com>> wrote:
Hi, mei.
         Thx very much for your review.
But I am  Sorry, I do not understand your meaning clearly?

+    label_bb = Get_bb_from_label(WN_label_number(wn));

+    if (label_bb == NULL) {

+      label_bb = Create_bb();

+      // the _current_bb needs to be in the label map

+      Append_label_map(WN_label_number(wn), label_bb);

+    }


From: Ye, Mei [mailto:mei...@amd.com<mailto:mei...@amd.com>]
Sent: Friday, September 23, 2011 1:56 AM
To: shenrfen
Subject: RE: [Open64-devel] Please help to review the patch for [Bug 872] ZDL-- 
Error loop body

If OPR_ZDLBR is a loop back-edge branch, why haven't the branch target label 
been created?
i.e., is the code "if (label_bb == NULL)" necessary?

-Mei

From: shenrfen [mailto:shenr...@gmail.com<mailto:shenr...@gmail.com>]
Sent: Wednesday, September 21, 2011 7:29 PM
To: Ye, Mei
Subject: RE: [Open64-devel] Please help to review the patch for [Bug 872] ZDL-- 
Error loop body

Hi, mei.
OPR_ZDLBR represents a zero-delay-loop (hardware implement). It is located at 
the end of loop body.
Attached Please find one test case and the zdl-convert trace.
Detail Please see -r3735

A new implementation for the open64's support for DSP Zero-Delay-Loop(ZDL) 
feature. This ZDL contribution is a co-operatio
nal approach of global scalar optimizer WOPT and the Code Generation component 
CG. The common ZDL features, i.e, the loop
counting mechanism hidden and bottom loop condition abstracted are implemented 
in WOPT with minimized changes while keepin
g the maximum optimizing result. A pseudo branch op method is introduced to 
expand ZDL WHIRL operator and delay the ZDL ha
rdware instruction generation to the very last phase of CG loop optimization. 
This lazy implementation helps keeping the c
ompatibility with other CG loop optimizations to produce the most optimal code. 
With the new ZDL implementation, open64 pr
ovides the equal expressibility to gcc's doloop_begin, doloop_end and 
decrement_and_branch_until_zero patterns.

From: Ye, Mei [mailto:mei...@amd.com<mailto:mei...@amd.com>]
Sent: Thursday, September 22, 2011 1:35 AM
To: shenrfen
Subject: RE: [Open64-devel] Please help to review the patch for [Bug 872] ZDL-- 
Error loop body

Hi ruifen

What does OPR_ZDLBR do?

-Mei


From: shenrfen [mailto:shenr...@gmail.com<mailto:shenr...@gmail.com>]
Sent: Wednesday, September 21, 2011 1:40 AM
To: 
open64-devel@lists.sourceforge.net<mailto:open64-devel@lists.sourceforge.net>
Subject: [Open64-devel] Please help to review the patch for [Bug 872] ZDL-- 
Error loop body


Please open the followed url to find the Details. Thx very much.

https://bugs.open64.net/show_bug.cgi?id=872

This patch has gone through SL's regressiontest.



Index: osprey/be/opt/opt_cfg.cxx

===================================================================

--- osprey/be/opt/opt_cfg.cxx   (revision 3739)

+++ osprey/be/opt/opt_cfg.cxx   (working copy)

@@ -3100,7 +3100,23 @@

       *ends_bb = END_BREAK;

     break;



-  case OPR_FALSEBR:

+  case OPR_ZDLBR:

+    label_bb = Get_bb_from_label(WN_label_number(wn));

+    if (label_bb == NULL) {

+      label_bb = Create_bb();

+      // the _current_bb needs to be in the label map

+      Append_label_map(WN_label_number(wn), label_bb);

+    }

+

+    Connect_predsucc(_current_bb, label_bb);

+    Append_wn_in(_current_bb, wn);

+    _current_bb->Set_kind(BB_LOGIF);

+

+    if (ends_bb)

+      *ends_bb = END_FALLTHRU;

+    break;

+

+       case OPR_FALSEBR:

   case OPR_TRUEBR:

     label_bb = Get_bb_from_label( WN_label_number(wn) );

     if (label_bb == NULL) {







-----Original Message-----
From: bugzilla-dae...@open64.net<mailto:bugzilla-dae...@open64.net> 
[mailto:bugzilla-dae...@open64.net<mailto:bugzilla-dae...@open64.net>]
Sent: Wednesday, September 21, 2011 10:49 AM
To: shenr...@gmail.com<mailto:shenr...@gmail.com>
Subject: [Bug 872] ZDL-- Error loop body



https://bugs.open64.net/show_bug.cgi?id=872



Gang, Yu <yugang...@gmail.com<mailto:yugang...@gmail.com>> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            
|yugang...@gmail.com<mailto:yugang...@gmail.com>



--- Comment #2 from Gang, Yu <yugang...@gmail.com<mailto:yugang...@gmail.com>> 
2011-09-20 22:49:08 EDT ---

I have an investigation for this bug under ITANIUM(a potential ZDL target)

platform. Yes, it does also exists in ITANIUM.



a cutted case:



int main()

{

    short var_out;

    int iteration;

    int L_num = 8000;

    int L_denom = 4000;



    for(iteration=0;iteration<16;iteration++)

    {

        L_num = L_num - 4000;

    }



    printf("L_num: %x\n", L_num);



}



the command:

$TOOLROOT/bin/opencc -S -show -keep -WOPT:zdl zrf.c -Wb,-tt25:0x10000



the dump shows:

at RVI_phase2:



---- BB3 (RPO 3) (Lab2050) (GOTO) (e) LINE 0 (call) (rid_id:0) (flag:87)

Preds:2

Succs:4

Fallthrough: 4

Next  :  BB4

Prev  :  BB2

dom_dfs_id(0), dom_dfs_last(0)

pdom_dfs_id(0), pdom_dfs_last(0)

LABEL L2050 0 {line: 0/0} {freq: 0, ln: 0, col: 0}

LOOP_INFO 0 1 1

  U8U8LDID 264 <st 1281> T<9,.predef_U8,4>

  I8INTCONST 16 (0x10)

END_LOOP_INFO

COMMENT <st 3586> #  {line: 0/0} {freq: 0, ln: 0, col: 0}

COMMENT <st 3842> #  {line: 1/8} {freq: 0, ln: 8, col: 0}

  U8U8LDID 265 <st 1281> T<9,.predef_U8,4>

  I8INTCONST -4000 (0xfffffffffffff060)

I8ADD

U8STID 265 <st 1281> T<9,.predef_U8,4> {line: 1/10} {freq: 0, ln: 10, col: 0}

COMMENT <st 4098> #  {line: 1/8} {freq: 0, ln: 8, col: 0}

ZDLBR L2050 {line: 0/0} {freq: 0, ln: 0, col: 0}

COMMENT <st 4354> #  {line: 0/0} {freq: 0, ln: 0, col: 0}

COMMENT <st 4610> #  {line: 1/8} {freq: 0, ln: 8, col: 0}

  U8LDA 0 <st 5633> T<33,anon_ptr.,8>

U8PARM 2 T<29,anon_ptr.,8> #  by_value

  U8U8LDID 265 <st 1281> T<9,.predef_U8,4>

I4PARM 2 T<4,.predef_I4,4> #  by_value

VCALL 126 <st 5377> # flags 0x7e {line: 1/13} {freq: 0, ln: 13, col: 0}



ZDLBR does not split the BB, so it is a bug



--

Configure bugmail: https://bugs.open64.net/userprefs.cgi?tab=email

------- You are receiving this mail because: -------

You reported the bug.




--
Best Regards.

Shen Ruifen

tel: 010-51266989-226



--
Best Regards.

Shen Ruifen

tel: 010-51266989-226
------------------------------------------------------------------------------
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. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to