Code Review for hotspot

Prepared by: U-AMR\jcivlin (jcivlin) on Fri Oct 9 12:30:38 PDT 2015
Workspace:/cygdrive/E/Java/openjdk-071515/hotspot
Compare against version:9157
Summary of changes: 746 lines changed: 721 ins; 6 del; 19 mod; 64302 unchg
Patch of changes: hotspot.patch
Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw .hgtags

rev 8716 : Added tag 1st working CMovVD for changeset b623fcb7becc
rev 8877 : tests from repo commit
rev 8890 : Added tag Almost good for Oracle, includes reserve copying of the loop in SuperWord for changeset 895da772c87b
rev 8939 : Added tag CountedLoopReserveKit-091415 for changeset cbf942b2b46c
rev 9038 : Added tag patch1-CountedLoopReverseKit-sent-091515 for changeset 4fb81f8f3199
rev 9039 : Merge
rev 9044 : Added tag Has if(method()->has_option("BreakAfterCompilation")) for changeset 8614e0926b30
rev 9046 : Added tag CMove patch to send to Oracle for changeset 5c9bcd6e631e
rev 9049 : Added tag SIMD patch-2 (CMoveD) with all fixes due to mberg for changeset 38e69166c5a3
rev 9093 : Merge
rev 9097 : Added tag SIMD RFR(M) 8136725 - before removing  testing return from output(SuperWord) on _CountedLoopReserveKit_test for changeset 6f413baa0e8d
rev 9100 : Added tag SIMD - RFR(M) 8136725 - fixing kvn comments for changeset 95a58a5edd4c
rev 9101 : Merge
rev 9103 : Added tag SIMD - it includes all mberg comments except "x86_64.ad  Why only here, why not x86 have the functionality in 32-bit as well?  What happens when you run the 32-bit compiler for this code?" for changeset 2f9ff7a7ce42
rev 9105 : Added tag Added tag SIMD - it includes all mberg comments - yet no assert processing in superword.cpp for changeset c02b5a962793
rev 9111 : Added tag patch2-CMovVD for changeset 9fa865864032
rev 9112 : Removed tag patch2-CMovVD
rev 9113 : Added tag patch2-CMovVD for changeset 9f08c00cb45e
rev 9138 : Merge
rev 9139 : Merge
rev 9141 : SIMD: revert .hgtags
rev 9142 : Added tag patch1-CountedLoopReverseKit-sent-100515 for changeset 95b7d054263d
rev 9147 : Merge
rev 9149 : SIMD: restore .hgtags to rev 9145
0 lines changed: 0 ins; 0 del; 0 mod; 488 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/assembler_x86.cpp

rev 8713 : SIMD: CMoveVD - .ad is "almost" good. need to make CC in codegen taken rightly from IdealGraph.
Also added (Windows only) an option to stop in debugger after compiled file has been printed.
See compile.cpp: WINDOWS_ONLY(if(method()->has_option("BreakAfterCompilation")) DebugBreak();)
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8926 : Merge
rev 9039 : Merge
rev 9047 : SIMD: mberg review fixes
rev 9101 : Merge
rev 9147 : Merge
20 lines changed: 20 ins; 0 del; 0 mod; 7689 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/assembler_x86.hpp

rev 8713 : SIMD: CMoveVD - .ad is "almost" good. need to make CC in codegen taken rightly from IdealGraph.
Also added (Windows only) an option to stop in debugger after compiled file has been printed.
See compile.cpp: WINDOWS_ONLY(if(method()->has_option("BreakAfterCompilation")) DebugBreak();)
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8884 : SIMD: cleanup, EOL fixing.
rev 9039 : Merge
rev 9101 : Merge
rev 9147 : Merge
5 lines changed: 5 ins; 0 del; 0 mod; 2150 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/x86.ad

rev 8545 : SIMD: RFR(S): 8085932: Ideal Graph builds OK and the code is generated. .ad file is not correct yet.
rev 8711 : SIMD: CMoveVD - produces some code, but actually garbage in .ad file.
No reshaping in Matcher.
rev 8712 : SIMD: CMoveVD - .ad catches up CC code! The generating code still incorrect.
rev 8713 : SIMD: CMoveVD - .ad is "almost" good. need to make CC in codegen taken rightly from IdealGraph.
Also added (Windows only) an option to stop in debugger after compiled file has been printed.
See compile.cpp: WINDOWS_ONLY(if(method()->has_option("BreakAfterCompilation")) DebugBreak();)
rev 8714 : SIMD: CMoveVD - .ad is good (need to be tested).
SuperWord creates CMoveVDNode(cc, src1, src2, vt) and cc is a clone of the original Bool in CmpD.
rev 8734 : SIMD: OK for ">=", does NOT work for ">" (Computational ERROR: val(253369.89505687315) and val_gold(4573627.789285206) not equal.)
callValue = (callValue >= 0.0) ? callValue : 0;

val      = forCallValue(Sval, Xval, MuByT, VBySqrtT);
val_gold = forCallValue_gold(Sval, Xval, MuByT, VBySqrtT);
if (val != val_gold) {
rev 8877 : tests from repo commit
rev 8878 : SIMD: Added operand cmpOp_vcmppd. Tested on
callValue = (callValue > 0.0) ? callValue : 0;
and
callValue = (callValue >= 0.0) ? callValue : 0;
rev 8879 : SIMD: cleanup. Nearly good to push to Oracle.
rev 8884 : SIMD: cleanup, EOL fixing.
rev 9039 : Merge
rev 9041 : SIMD: removed cr flag from instruct vcmov4D_reg(vecY dst, vecY src1, vecY src2, immI8 cop, cmpOp_vcmppd copnd) %{
rev 9047 : SIMD: mberg review fixes
rev 9101 : Merge
rev 9104 : SIMD: moving operand cmpOp_vcmppd() from x86_64.ad to x86.ad
rev 9148 : SIMD: fixing NOT_PRODUCT printout and formatting "if-return"
rev 9150 : SIMD: fixing trace/debug printiout
43 lines changed: 43 ins; 0 del; 0 mod; 9179 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/x86_64.ad

rev 8878 : SIMD: Added operand cmpOp_vcmppd. Tested on
callValue = (callValue > 0.0) ? callValue : 0;
and
callValue = (callValue >= 0.0) ? callValue : 0;
rev 8884 : SIMD: cleanup, EOL fixing.
rev 9039 : Merge
rev 9043 : SIMD: UseCMov is a must and not set alone in do_vector_loop()
rev 9104 : SIMD: moving operand cmpOp_vcmppd() from x86_64.ad to x86.ad
rev 9138 : Merge
rev 9147 : Merge
0 lines changed: 0 ins; 0 del; 0 mod; 11890 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/adlc/formssel.cpp

rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 9039 : Merge
rev 9138 : Merge
rev 9147 : Merge
1 line changed: 1 ins; 0 del; 0 mod; 4268 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/c2_globals.hpp

rev 8931 : SIMD: version of LoopReserveKit that does not require goto:
it's dtor is making switching to the modified copy of the loop (switch_to_reserved),
if use_new() has been ever called, otherwise dtor does nothing and then
by default the graph remains in it's cloned copy.
NOTE, that superword.cpp:2106 includes goto output_error which unconditionally
(for testing purpose) switches control to the reserved copy.
NOTE: code is dirty, need cleaning. But works.
NOTE: it still has modification of BoolNode. Way to replace it with ConINode.
rev 9042 : SIMD: added global flag UseCMov (false).
rev 9093 : Merge
rev 9101 : Merge
6 lines changed: 6 ins; 0 del; 0 mod; 709 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/classes.hpp

rev 8542 : SIMD: RFR(S): 8085932: added merge_packs_to_cmovd, CMoveDVNode is not built yet.
rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8708 : SIMD: CMove update - from c:\Java\openjdk-clone-060315\hotspot\
rev 8709 : Merge
rev 9039 : Merge
rev 9138 : Merge
rev 9147 : Merge
1 line changed: 1 ins; 0 del; 0 mod; 339 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/compile.cpp

rev 8713 : SIMD: CMoveVD - .ad is "almost" good. need to make CC in codegen taken rightly from IdealGraph.
Also added (Windows only) an option to stop in debugger after compiled file has been printed.
See compile.cpp: WINDOWS_ONLY(if(method()->has_option("BreakAfterCompilation")) DebugBreak();)
rev 8715 : Making breakpoint after compilation system independent.
rev 8877 : tests from repo commit
rev 8930 : SIMD: cleanup - trailing spaces, tabs
rev 9042 : SIMD: added global flag UseCMov (false).
rev 9043 : SIMD: UseCMov is a must and not set alone in do_vector_loop()
rev 9045 : SIMD: fixed if (!def->is_Bool() || def->in(0) != NULL || def->outcnt() != 1) return NULL;,
      Removed if(method()->has_option("BreakAfterCompilation")) os::breakpoint();
rev 9101 : Merge
rev 9150 : SIMD: fixing trace/debug printiout
rev 9161 : Merge
9 lines changed: 3 ins; 6 del; 0 mod; 4410 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/compile.hpp

rev 9042 : SIMD: added global flag UseCMov (false).
rev 9101 : Merge
3 lines changed: 3 ins; 0 del; 0 mod; 1297 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/loopUnswitch.cpp

rev 8885 : SIMD: starting support for safe loop modification in SW - added PhaseIdealLoop::create_reserve_version_of_loop.
Ugly, but works OK (no support yet for loop reverse)
rev 8886 : SIMD: added BoolNode bol_ne - now BoolNode bol_eq may be subsumed by bol_ne and therefore loop will be switched to the reserved copy.
rev 8887 : SIMD: class LoopReserveKit created. Both directions are tested, in this checkin
switch_to_reserved() is called in SuperWord::output just for testing reverse to the original loop.
rev 8888 : SIMD: big comment how to use LoopReserveKit
rev 8931 : SIMD: version of LoopReserveKit that does not require goto:
it's dtor is making switching to the modified copy of the loop (switch_to_reserved),
if use_new() has been ever called, otherwise dtor does nothing and then
by default the graph remains in it's cloned copy.
NOTE, that superword.cpp:2106 includes goto output_error which unconditionally
(for testing purpose) switches control to the reserved copy.
NOTE: code is dirty, need cleaning. But works.
NOTE: it still has modification of BoolNode. Way to replace it with ConINode.
rev 8932 : SIMD: cleanup
rev 8933 : SIMD: added LoopReserveKit::_active, cleanup
rev 8934 : SIMD: create_reserve is right in the LoopReserveKit::ctor.
DoReserveCopyInSuperWord should be used as only condition
for working with lk.functions in SuperWord::output
rev 8935 : SIMD: now PhaseIdealLoop::create_reserve_version_of_loop builds graph
intcon(1)->If, skipping creation of Cmp and Bool.
NOTE: LoopReserveKit::create_reserve need more sanity checks
NOTE: code needs cleanup
rev 8936 : SIMD: removed un-needed cloning of projections.
NOTE: need cleanup.
rev 8937 : SIMD: added option DoReserveCopyInSuperWordTest for testing switching to reversed copy.
Much better functionality description of LoopReserveKit in loopnode.hpp
Cleanup in loopUnswitch.cpp
rev 8938 : SIMD: some functions are renamed, some cleanup
rev 9034 : SIMD: merged with class CountedLoopReserveKit.
rev 9035 : SIMD: trimming tailing spaces
rev 9039 : Merge
rev 9094 : SIMD: fixing kvn comments to Re: RFR(M): 8136725 Provide utility for creation a counted loop reserve copy (clone)
rev 9095 : SIMD: fixing kvn comments (2) to Re: RFR(M): 8136725 Provide utility for creation a counted loop reserve copy (clone)
rev 9096 : SIMD: fixing kvn comments (3) to Re: RFR(M): 8136725 Provide utility for creation a counted loop reserve copy (clone)
rev 9101 : Merge
rev 9140 : SIMD: RFR(M): 8136725 Provide utility for creation a counted loop reserve copy (clone), fixing kvn comments of 10/05/15
rev 9147 : Merge
133 lines changed: 133 ins; 0 del; 0 mod; 265 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/loopnode.cpp

rev 8530 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
rev 8534 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Extra printing removed. Bug fixing for invariant and scale still here.
rev 8541 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Starting to add vector for conditional_move. Preparation only, need to add vector Bool, vector CmpD, vector CmoveD.
rev 8700 : Merge
rev 8707 : Merge
rev 8708 : SIMD: CMove update - from c:\Java\openjdk-clone-060315\hotspot\
rev 8709 : Merge
rev 8877 : tests from repo commit
rev 8879 : SIMD: cleanup. Nearly good to push to Oracle.
rev 8926 : Merge
rev 9039 : Merge
0 lines changed: 0 ins; 0 del; 0 mod; 3788 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/loopnode.hpp

rev 8885 : SIMD: starting support for safe loop modification in SW - added PhaseIdealLoop::create_reserve_version_of_loop.
Ugly, but works OK (no support yet for loop reverse)
rev 8886 : SIMD: added BoolNode bol_ne - now BoolNode bol_eq may be subsumed by bol_ne and therefore loop will be switched to the reserved copy.
rev 8887 : SIMD: class LoopReserveKit created. Both directions are tested, in this checkin
switch_to_reserved() is called in SuperWord::output just for testing reverse to the original loop.
rev 8888 : SIMD: big comment how to use LoopReserveKit
rev 8926 : Merge
rev 8927 : SIMD: added
        assert(bol->is_Bool(), "should be BoolNode - too late to bail out!");
        if (do_reserve_copy() && lk._has_reserved && !bol->is_Bool()) {
          goto output_error;
        }
rev 8930 : SIMD: cleanup - trailing spaces, tabs
rev 8931 : SIMD: version of LoopReserveKit that does not require goto:
it's dtor is making switching to the modified copy of the loop (switch_to_reserved),
if use_new() has been ever called, otherwise dtor does nothing and then
by default the graph remains in it's cloned copy.
NOTE, that superword.cpp:2106 includes goto output_error which unconditionally
(for testing purpose) switches control to the reserved copy.
NOTE: code is dirty, need cleaning. But works.
NOTE: it still has modification of BoolNode. Way to replace it with ConINode.
rev 8933 : SIMD: added LoopReserveKit::_active, cleanup
rev 8935 : SIMD: now PhaseIdealLoop::create_reserve_version_of_loop builds graph
intcon(1)->If, skipping creation of Cmp and Bool.
NOTE: LoopReserveKit::create_reserve need more sanity checks
NOTE: code needs cleanup
rev 8937 : SIMD: added option DoReserveCopyInSuperWordTest for testing switching to reversed copy.
Much better functionality description of LoopReserveKit in loopnode.hpp
Cleanup in loopUnswitch.cpp
rev 8938 : SIMD: some functions are renamed, some cleanup
rev 9034 : SIMD: merged with class CountedLoopReserveKit.
rev 9035 : SIMD: trimming tailing spaces
rev 9036 : SIMD: comment correction
rev 9039 : Merge
rev 9093 : Merge
rev 9094 : SIMD: fixing kvn comments to Re: RFR(M): 8136725 Provide utility for creation a counted loop reserve copy (clone)
rev 9095 : SIMD: fixing kvn comments (2) to Re: RFR(M): 8136725 Provide utility for creation a counted loop reserve copy (clone)
rev 9101 : Merge
75 lines changed: 75 ins; 0 del; 0 mod; 1155 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/loopopts.cpp

rev 8541 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Starting to add vector for conditional_move. Preparation only, need to add vector Bool, vector CmpD, vector CmoveD.
rev 8708 : SIMD: CMove update - from c:\Java\openjdk-clone-060315\hotspot\
rev 8709 : Merge
rev 8710 : SIMD: small cleanup
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8879 : SIMD: cleanup. Nearly good to push to Oracle.
rev 8926 : Merge
rev 9039 : Merge
rev 9042 : SIMD: added global flag UseCMov (false).
rev 9043 : SIMD: UseCMov is a must and not set alone in do_vector_loop()
rev 9045 : SIMD: fixed if (!def->is_Bool() || def->in(0) != NULL || def->outcnt() != 1) return NULL;,
      Removed if(method()->has_option("BreakAfterCompilation")) os::breakpoint();
rev 9101 : Merge
rev 9138 : Merge
rev 9150 : SIMD: fixing trace/debug printiout
8 lines changed: 4 ins; 0 del; 4 mod; 3036 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/matcher.cpp

rev 8712 : SIMD: CMoveVD - .ad catches up CC code! The generating code still incorrect.
rev 8713 : SIMD: CMoveVD - .ad is "almost" good. need to make CC in codegen taken rightly from IdealGraph.
Also added (Windows only) an option to stop in debugger after compiled file has been printed.
See compile.cpp: WINDOWS_ONLY(if(method()->has_option("BreakAfterCompilation")) DebugBreak();)
rev 8714 : SIMD: CMoveVD - .ad is good (need to be tested).
SuperWord creates CMoveVDNode(cc, src1, src2, vt) and cc is a clone of the original Bool in CmpD.
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8877 : tests from repo commit
rev 8930 : SIMD: cleanup - trailing spaces, tabs
rev 9138 : Merge
rev 9161 : Merge
2 lines changed: 1 ins; 0 del; 1 mod; 2662 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/node.hpp

rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8717 : SIMD: CMoveVD - .ad is good (need to be tested).
Added class CMoveVD_map. Removing Flag_is_CMove on a way.
rev 8877 : tests from repo commit
rev 8879 : SIMD: cleanup. Nearly good to push to Oracle.
rev 9101 : Merge
0 lines changed: 0 ins; 0 del; 0 mod; 1665 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/superword.cpp

rev 8530 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
rev 8531 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
Copied print msg from prestine. No Tracer yet.
rev 8532 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord. Added Tracer. Tabulation not fixed.
rev 8533 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
Printing (debug+trace) functions still here.
rev 8534 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Extra printing removed. Bug fixing for invariant and scale still here.
rev 8535 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Fixing printf.
rev 8536 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Fixing printf, take 2.
rev 8537 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Removed fix for "already has an invariant", "already found a sclae"
rev 8541 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Starting to add vector for conditional_move. Preparation only, need to add vector Bool, vector CmpD, vector CmoveD.
rev 8542 : SIMD: RFR(S): 8085932: added merge_packs_to_cmovd, CMoveDVNode is not built yet.
rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8544 : SIMD: RFR(S): 8085932: passed profitability. Need the correct .ad file.
Has FIXME! in places where stepping by 1 need to be corrected by stepping by 3. May revisit this code and find a better solution.
rev 8545 : SIMD: RFR(S): 8085932: Ideal Graph builds OK and the code is generated. .ad file is not correct yet.
rev 8700 : Merge
rev 8706 : SIMD: RFR(S): 8085932: fixing "friend class"
Added initialization to ctor, trailing spaces removed.
rev 8707 : Merge
rev 8708 : SIMD: CMove update - from c:\Java\openjdk-clone-060315\hotspot\
rev 8709 : Merge
rev 8710 : SIMD: small cleanup
rev 8711 : SIMD: CMoveVD - produces some code, but actually garbage in .ad file.
No reshaping in Matcher.
rev 8712 : SIMD: CMoveVD - .ad catches up CC code! The generating code still incorrect.
rev 8713 : SIMD: CMoveVD - .ad is "almost" good. need to make CC in codegen taken rightly from IdealGraph.
Also added (Windows only) an option to stop in debugger after compiled file has been printed.
See compile.cpp: WINDOWS_ONLY(if(method()->has_option("BreakAfterCompilation")) DebugBreak();)
rev 8714 : SIMD: CMoveVD - .ad is good (need to be tested).
SuperWord creates CMoveVDNode(cc, src1, src2, vt) and cc is a clone of the original Bool in CmpD.
rev 8717 : SIMD: CMoveVD - .ad is good (need to be tested).
Added class CMoveVD_map. Removing Flag_is_CMove on a way.
rev 8718 : SIMD: CMoveVD - clean-up - created normal constructor in CMoveVD_map.
rev 8719 : SIMD: CMoveVD - cleanup.
rev 8720 : SIMD: added is_Bool_candidate, is_CmpD_candidate
rev 8721 : SIMD: cleanup
rev 8722 : SIMD: created class CMoveKit
rev 8723 : SIMD: cleanup
rev 8725 : SIMD: small changes ...
rev 8726 : SIMD: use insert instead of push, since the index is known.
rev 8727 : SIMD: cleanup
rev 8728 : SIMD: cleanup
rev 8729 : SIMD: removed constant "3", need cleanup.
rev 8730 : SIMD: cleanup
rev 8731 : SIMD: cleanup
rev 8732 : SIMD: almost clean superword.cpp. but revisit !FIXME!
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8734 : SIMD: OK for ">=", does NOT work for ">" (Computational ERROR: val(253369.89505687315) and val_gold(4573627.789285206) not equal.)
callValue = (callValue >= 0.0) ? callValue : 0;

val      = forCallValue(Sval, Xval, MuByT, VBySqrtT);
val_gold = forCallValue_gold(Sval, Xval, MuByT, VBySqrtT);
if (val != val_gold) {
rev 8877 : tests from repo commit
rev 8879 : SIMD: cleanup. Nearly good to push to Oracle.
rev 8880 : SIMD: cleanup -> good to send
rev 8885 : SIMD: starting support for safe loop modification in SW - added PhaseIdealLoop::create_reserve_version_of_loop.
Ugly, but works OK (no support yet for loop reverse)
rev 8886 : SIMD: added BoolNode bol_ne - now BoolNode bol_eq may be subsumed by bol_ne and therefore loop will be switched to the reserved copy.
rev 8887 : SIMD: class LoopReserveKit created. Both directions are tested, in this checkin
switch_to_reserved() is called in SuperWord::output just for testing reverse to the original loop.
rev 8889 : SIMD: added option DoReserveCopyInSuperWord
rev 8927 : SIMD: added
        assert(bol->is_Bool(), "should be BoolNode - too late to bail out!");
        if (do_reserve_copy() && lk._has_reserved && !bol->is_Bool()) {
          goto output_error;
        }
rev 8930 : SIMD: cleanup - trailing spaces, tabs
rev 8931 : SIMD: version of LoopReserveKit that does not require goto:
it's dtor is making switching to the modified copy of the loop (switch_to_reserved),
if use_new() has been ever called, otherwise dtor does nothing and then
by default the graph remains in it's cloned copy.
NOTE, that superword.cpp:2106 includes goto output_error which unconditionally
(for testing purpose) switches control to the reserved copy.
NOTE: code is dirty, need cleaning. But works.
NOTE: it still has modification of BoolNode. Way to replace it with ConINode.
rev 8932 : SIMD: cleanup
rev 8933 : SIMD: added LoopReserveKit::_active, cleanup
rev 8934 : SIMD: create_reserve is right in the LoopReserveKit::ctor.
DoReserveCopyInSuperWord should be used as only condition
for working with lk.functions in SuperWord::output
rev 8937 : SIMD: added option DoReserveCopyInSuperWordTest for testing switching to reversed copy.
Much better functionality description of LoopReserveKit in loopnode.hpp
Cleanup in loopUnswitch.cpp
rev 8938 : SIMD: some functions are renamed, some cleanup
rev 9037 : SIMD: added SuperWord code for testing CountedLoopReserveKit
rev 9039 : Merge
rev 9040 : SIMD: fixing some lines escaped in merge,
using do_reserve_copy() instead of direct use of DoReserveCopyInSuperWord.
rev 9045 : SIMD: fixed if (!def->is_Bool() || def->in(0) != NULL || def->outcnt() != 1) return NULL;,
      Removed if(method()->has_option("BreakAfterCompilation")) os::breakpoint();
rev 9093 : Merge
rev 9098 : SIMD: rename _CountedLoopReserveKit_test to _CountedLoopReserveKit_debug
rev 9099 : SIMD: fixing kvn comments (4) to Re: RFR(M): 8136725
rev 9101 : Merge
rev 9102 : SIMD: fixing merge
rev 9106 : SIMD: removing assert in SuperWord::output and vector_opd. Need cleanup.
rev 9107 : SIMD: adding more processing around asserts in SuperWord::output
rev 9108 : SIMD: added if (do_reserve_copy()) to all suspects in SuperWord::output
rev 9109 : SIMD: small debug/release bug fixing
rev 9110 : SIMD: formatting
rev 9138 : Merge
rev 9139 : Merge
rev 9147 : Merge
rev 9148 : SIMD: fixing NOT_PRODUCT printout and formatting "if-return"
rev 9150 : SIMD: fixing trace/debug printiout
rev 9158 : SIMD restore from 9150, 'relase Test results passed 520; failed 22; error 6.
fastdebug produces 'load vector' and 17 vs 28 performance gain on -XX+UseCMov
rev 9159 : SIMD: same output for release and fastdebug as 9158
rev 9160 : SIMD: again same output for release and fastdebug as 9158
rev 9162 : SIMD: better debug printing and formatting
383 lines changed: 374 ins; 0 del; 9 mod; 3901 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/superword.hpp

rev 8530 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
rev 8531 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
Copied print msg from prestine. No Tracer yet.
rev 8532 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord. Added Tracer. Tabulation not fixed.
rev 8533 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord - before making Trace class.
Printing (debug+trace) functions still here.
rev 8534 : SIMD: RFR(S): 8085932: Fixing bugs in detecting memory alignments in SuperWord.
Extra printing removed. Bug fixing for invariant and scale still here.
rev 8542 : SIMD: RFR(S): 8085932: added merge_packs_to_cmovd, CMoveDVNode is not built yet.
rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8544 : SIMD: RFR(S): 8085932: passed profitability. Need the correct .ad file.
Has FIXME! in places where stepping by 1 need to be corrected by stepping by 3. May revisit this code and find a better solution.
rev 8545 : SIMD: RFR(S): 8085932: Ideal Graph builds OK and the code is generated. .ad file is not correct yet.
rev 8700 : Merge
rev 8701 : SIMD: RFR(S): 8085932: fixing "friend class"
rev 8706 : SIMD: RFR(S): 8085932: fixing "friend class"
Added initialization to ctor, trailing spaces removed.
rev 8707 : Merge
rev 8708 : SIMD: CMove update - from c:\Java\openjdk-clone-060315\hotspot\
rev 8709 : Merge
rev 8710 : SIMD: small cleanup
rev 8711 : SIMD: CMoveVD - produces some code, but actually garbage in .ad file.
No reshaping in Matcher.
rev 8717 : SIMD: CMoveVD - .ad is good (need to be tested).
Added class CMoveVD_map. Removing Flag_is_CMove on a way.
rev 8718 : SIMD: CMoveVD - clean-up - created normal constructor in CMoveVD_map.
rev 8719 : SIMD: CMoveVD - cleanup.
rev 8720 : SIMD: added is_Bool_candidate, is_CmpD_candidate
rev 8721 : SIMD: cleanup
rev 8722 : SIMD: created class CMoveKit
rev 8723 : SIMD: cleanup
rev 8724 : SIMD: small fix for linux compilation
rev 8725 : SIMD: small changes ...
rev 8726 : SIMD: use insert instead of push, since the index is known.
rev 8728 : SIMD: cleanup
rev 8729 : SIMD: removed constant "3", need cleanup.
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8889 : SIMD: added option DoReserveCopyInSuperWord
rev 8930 : SIMD: cleanup - trailing spaces, tabs
rev 8937 : SIMD: added option DoReserveCopyInSuperWordTest for testing switching to reversed copy.
Much better functionality description of LoopReserveKit in loopnode.hpp
Cleanup in loopUnswitch.cpp
rev 8938 : SIMD: some functions are renamed, some cleanup
rev 9037 : SIMD: added SuperWord code for testing CountedLoopReserveKit
rev 9039 : Merge
rev 9048 : SIMD: mberg review fixes 2
rev 9098 : SIMD: rename _CountedLoopReserveKit_test to _CountedLoopReserveKit_debug
rev 9101 : Merge
rev 9150 : SIMD: fixing trace/debug printiout
rev 9158 : SIMD restore from 9150, 'relase Test results passed 520; failed 22; error 6.
fastdebug produces 'load vector' and 17 vs 28 performance gain on -XX+UseCMov
rev 9160 : SIMD: again same output for release and fastdebug as 9158
38 lines changed: 33 ins; 0 del; 5 mod; 657 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/vectornode.cpp

rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8711 : SIMD: CMoveVD - produces some code, but actually garbage in .ad file.
No reshaping in Matcher.
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 8884 : SIMD: cleanup, EOL fixing.
rev 9039 : Merge
rev 9138 : Merge
3 lines changed: 3 ins; 0 del; 0 mod; 546 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/vectornode.hpp

rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8712 : SIMD: CMoveVD - .ad catches up CC code! The generating code still incorrect.
rev 8733 : SIMD: cleanup. src/cpu/x86/vm/x86.ad needs more.
Some !FIXME! are remaining, mostly for second thought
rev 9039 : Merge
rev 9138 : Merge
15 lines changed: 15 ins; 0 del; 0 mod; 779 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/vmStructs.cpp

rev 8543 : SIMD: RFR(S): 8085932: Passed "Unimplemented". Failed as "Unprofitable".
rev 8708 : SIMD: CMove update - from c:\Java\openjdk-clone-060315\hotspot\
rev 8709 : Merge
rev 8926 : Merge
rev 9039 : Merge
rev 9101 : Merge
rev 9138 : Merge
rev 9147 : Merge
1 line changed: 1 ins; 0 del; 0 mod; 3429 unchg

This code review page was prepared using ../../webrev.ksh (vers 25.7-hg+openjdk.java.net).