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