<div dir="ltr"><p class="MsoNormal" style="margin:0cm 0cm 0cm 72pt;text-align:justify;text-indent:36pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p><p class="MsoNormal" style="margin:0cm 0cm 0cm 72pt;text-align:justify;text-indent:36pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><u><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Float16
Support in the OpenJDK Vector API</span></u></b></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><u><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"><span style="text-decoration-line:none"> </span></span></u></b></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Summary</span></b></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></b></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Add
FP16 (IEEE‑754 half‑precision) vector type to the Vector API, enabling compute
and memory operations over half‑precision lanes with short carrier and Float16
box type. Provide C2 support, baseline/fallback semantics via FP32 promotion,
and validation via jtreg/JMH.</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Goals</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Introduce HalffloatVector with
64/128/256/512‑bit concrete species.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Preserve the Vector API’s carrier model (short)
while disambiguating FP16 from ShortVector via Float16 box type and an
explicit <i>operation type</i>.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Enable core ops: load/store, lanewise
(unary/binary/ternary incl. FMA), compare, mask operations, broadcasts,
splats.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Provide deterministic fallback semantics
using FP32 compute + FP16 round‑to‑nearest‑even (RNE) down‑conversion.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Non‑Goals</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">No new hardware backends in this RFC (use
existing C2 instruction selection patterns for respective backends and
extend where necessary).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">No FP8/INT8 semantics in this change (but
design leaves a path).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">No changes to Float16 scalar APIs beyond
what’s required for interop.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Motivation</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">FP16 is prevalent in ML/AI, image/video,
and DSP for higher throughput and reduced bandwidth/footprint.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Many architectures expose native FP16
SIMD; exposing this via Vector API unlocks portable performance while
keeping well‑defined fallbacks.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Design
Overview</span></b></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Java
Types</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"></span></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Abstract: HalffloatVector</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Concrete: Halffloat64Vector, Halffloat128Vector,
Halffloat256Vector, Halffloat512Vector</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">ElementType (carrier): short.class</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">BoxType: Float16 (avoids ambiguity with Vector<Short>
and virtual dispatch)</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Fallback
Semantics</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"></span></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Promote each short lane via Float16.floatValue()
→ compute in FP32 → down‑convert to FP16.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Operation
Type (disambiguation)</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"></span></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Pass an additional int operationType to VectorSupport
entry points (e.g., VECTOR_TYPE_FP16 for now and VECTOR_TYPE_INT8, VECTOR_TYPE_FP8
in future).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Carrier type remains T_SHORT for TypeVect;
IR opcode inference uses (operationType, opKind).</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">HotSpot/C2
Integration (selected)</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Load/Store</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"><br>
Entry: VectorSupport.load/store with (vectortype=Halffloat*Vector.class,
elemtype=short.class, length=N, operationType=VECTOR_TYPE_FP16)<br>
Expander: LoadVector/StoreVector using TypeVect{element_basic_type=T_SHORT,
num_elem=N}; existing short‑vector match rules apply.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Lanewise</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"><br>
Entry: VectorSupport.unaryOp/binaryOp/ternaryOp (+ operationType).<br>
IR: Reuse existing vector IR where backend ops exist; add FP16‑specialized
nodes only where needed. (Today C2 creates specialized FP16 nodes; we
continue that path.)</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Compare/Mask</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"><br>
Entry: VectorSupport.compare (+ operationType).<br>
IR: Introduce VectorMaskCmpHFNode (semantic compare in FP16 domain).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Incubation Note</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"><br>
Halffloat* lives in the incubation module; hence in order to infer Float16
IR inline expander can take two approaches. One is to infer a Float16 IR
through a class name-based resolution, since VM only keeps track of the classes part
of the java.base module, this solution is acceptable in short‑term. However,
a robust solution is to pass an explicit operationType parameter to intrinsic
entry points as discussed above. This scheme circumvents loopholes in
fragile name based resolution and can easily be extended to support other
reduced precision types like INT8 or FP8 in future.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Compatibility
& Interactions</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Distinct BoxType=Float16 prevents dispatch
ambiguity with Vector<Short>.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Interop: explicit conversion via Float.float16ToFloat(short)
/ Float.floatToFloat16(float).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">No behavioral changes to existing vector
types.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Testing
& Validation</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Functional</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">:
Extend Vector API jtreg to cover all Halffloat ops (loads/stores, lanewise
incl. FMA, compares, masks, predication).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Performance</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">:
Extend JMH harness; add microbenchmarks (e.g., FP16 dot‑product, semantic
search kernels).</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Correctness</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">:
Cross‑check fallback vs hardware where available; verify RNE rounding and
edge cases (NaNs, subnormals, signed zero, infinities).</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Risks
& Mitigations</span></b></p>
<ul style="margin-top:0cm;margin-bottom:0cm" type="disc">
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Dispatch ambiguity</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> →
Use Float16 box type and operationType flag.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Backend coverage variance</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> →
Fall back to FP32 emulation; gated intrinsics per‑platform.</span></li>
<li class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Precision surprises</span></b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> →
Document FP16 semantics, rounding, and conversions.</span></li>
</ul>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Reference
Implementation Plan</span></b></p>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">1.<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman""> </span></span><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Refresh vectorIntrinsics+fp16 support.</span></p>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">2.<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman""> </span></span><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Implement C2 decode of (carrier=T_SHORT,
operationType=FP16) to infer FP16 vector IR.</span></p>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">3. </span><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Leverage existing instruction selection and backend support from JDK mainline and extend wherever applicable e.g. VectorMaskCmpHFNode.</span></p>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">4.<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman"">
</span></span><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Land jtreg/JMH; publish perf/correctness data.</span></p>
<p class="MsoNormal" style="margin:0cm 0cm 0cm 36pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Minimal
Usage Sketch</span></b></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif"> </span><span style="font-size:7pt;line-height:107%;font-family:"Courier New"">static final
VectorSpecies<Float16> S = Halffloat.SPECIES_PREFERRED; </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> short[] a = ...; short[] b = ...; </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> HalffloatVector acc =
HalffloatVector.broadcast(S, 0);</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> for
(int i = 0; i < S.loopBound(a.length); i += S.length()) {</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> var
v1 = HalffloatVector.fromArray(S, a, i);</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> var v2 = HalffloatVector.fromArray(S, b, i);</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> acc = acc.lanewise(VectorOperators.FMA, v1,
v2, acc);</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> }</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> float sum = 0.0f; </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> for (int i = 0; i < S.length(); i++) { </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> sum +=
Float.float16ToFloat(acc.lane(i));</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> }</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> return
sum;</span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:7pt;line-height:107%;font-family:"Courier New""> </span></p>
<p class="MsoNormal" style="margin:0cm;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Future
Activities:-</span></b></p>
<p class="gmail-MsoListParagraphCxSpFirst" style="margin:0cm 0cm 0cm 20.4pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">-<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman"">
</span></span><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Scope of this RFC is to extend array backing
storage based existing vector API infrastructure to support Float16 type and
enable Java users to harness the power of FP16 ISA supported by various targets
and bring Float16 support at par with existing primitive Vector types.<b></b></span></p>
<p class="gmail-MsoListParagraphCxSpLast" style="margin:0cm 0cm 0cm 20.4pt;text-align:justify;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">-<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman"">
</span></span><span style="font-size:9pt;line-height:107%;font-family:Arial,sans-serif">Our eventual goal is to make Float16 a value
type and use flat array based backing storage supported by project Valhalla. <b></b></span></p></div>