Webrev for vectorIntrinsics branch

Henry Jen henry.jen at oracle.com
Sat Dec 16 09:01:54 UTC 2017


I need a review on the merged changeset "Vector Unbox, masking support, and more for Vector API"[1] into the new vectorIntrinsics branch,

The code in question modify macro.cpp:PhaseMacroExpand::expand_vbox_nodes(), which is introduced by code snippet support which is not included in this branch, so I bring over the macro expansion code and the hook in compile.cpp. There are other minor fixes for merge, it would be nice you can have a look as well.

The webrev can be found at http://cr.openjdk.java.net/~henryjen/panama/vi/12895/webrev.

Cheers,
Henry

[1] http://hg.openjdk.java.net/panama/panama/hotspot/rev/6f6fb6578c34

--- macro.cpp
+++ macro.cpp
@@ -2817,12 +2819,28 @@
 //------------------------------expand_macro_nodes----------------------
 //  Returns true if a failure occurred.
 void PhaseMacroExpand::expand_vbox_nodes() {
+  // Run a first phase that solely looks at Vector Unbox nodes. We need all those to
+  // be expanded before deciding whether on what to do with the boxing nodes.
   int macro_idx = C->macro_count() - 1;
+  while(macro_idx >= 0) {
+    Node * n = C->macro_node(macro_idx);
+    assert(n->is_macro(), "only macro nodes expected here");
+    if (n->Opcode() == Op_VectorUnbox) {
+      VectorUnboxNode* vunbox = static_cast<VectorUnboxNode*>(n);
+      expand_vectorunbox_node(vunbox);
+    }
+    if (C->failing())  return;
+    macro_idx = MIN2(macro_idx - 1, C->macro_count() - 1);
+  }
+
+  macro_idx = C->macro_count() - 1;
   while (macro_idx >= 0) {
     Node * n = C->macro_node(macro_idx);
     assert(n->is_macro(), "only macro nodes expected here");
-    if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) {
+    if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2 || n->Opcode() == Op_VectorUnbox) {
       // skip
+    } else if (n->is_VectorBox()) {
+      expand_vectorbox_node(n->as_VectorBox());
     } else if (_igvn.type(n) == Type::TOP || n->in(0)->is_top() ) {
       // node is unreachable, so don't try to expand it
 //      C->remove_macro_node(n);


> On Dec 14, 2017, at 4:45 PM, Lupusoru, Razvan A <razvan.a.lupusoru at intel.com> wrote:
> 
> Hi Henry,
> 
> Sounds good to me - please go ahead with the branch creation!
> 
> Also, thank you again for doing this and also being willing to help with some of the additional patch porting.
> 
> --Razvan
> 
> 
> -----Original Message-----
> From: Henry Jen [mailto:henry.jen at oracle.com] 
> Sent: Wednesday, December 13, 2017 11:10 AM
> To: Lupusoru, Razvan A <razvan.a.lupusoru at intel.com>
> Cc: panama-dev at openjdk.java.net
> Subject: Re: Webrev for vectorIntrinsics branch
> 
> 
> 
>> On Dec 13, 2017, at 8:51 AM, Lupusoru, Razvan A <razvan.a.lupusoru at intel.com> wrote:
>> 
>> Thank you for doing this Henry!
>> 
>> You are right - what is under vector-draft should be the code that was migrated to become jdk.incubator.vector. And also it looks like you have the correct patches circa October.
>> 
>> Two questions:
>> - Can you tell us the titles of the patches that you merged together? This will help keep track when looking back to find if everything was included.
> 
> It should have everything relevant up to following patch in JDK and hotspot,
> 
> Double256Vector JDK support for VectorAPI Implementation
> 
> 
>> - Will you or someone else be helping with the port of all other Vector patches to the new branch?
>> 
> 
> Yes, I can help with that once this initial webrev for vectorIntrinsics branch pushed.
> 
> Cheers,
> Henry



More information about the panama-dev mailing list