/* Ċ Ġ* ĠCopyright ĠL WJ GL . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicense Ġterms : Ġhttps :// www . lwjgl . org / license Ċ Ġ*/ Ċ package Ġopen cl . templates Ċ Ċ import Ġorg . lwjgl . generator .* Ċ import Ġopen cl .* Ċ Ċ val ĠK HR Ġ= Ġ" KHR " Ċ val ĠEXT Ġ= Ġ" EXT " Ċ Ċ val ĠALTER A Ġ= Ġ" ALTER A " Ċ val ĠAMD Ġ= Ġ" AMD " Ċ val ĠAPP LE Ġ= Ġ" APPLE " Ċ val ĠARM Ġ= Ġ" ARM " Ċ val ĠIN TEL Ġ= Ġ" INTEL " Ċ val ĠNV Ġ= Ġ" NV " Ċ val ĠQ COM Ġ= Ġ" Q COM " Ċ Ċ val Ġk hr _ 3 d _ image _ writes Ġ= ĠEXT _ FLAG . native Class CL (" khr _ 3 d _ image _ writes ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġsupport Ġfor Ġkernel Ġwrites Ġto Ġ 3 D Ġimages . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġk hr _ byte _ address able _ store Ġ= ĠEXT _ FLAG . native Class CL (" khr _ byte _ address able _ store ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġelim inates Ġthe Ġrestriction Ġof Ġnot Ġallowing Ġwrites Ġto Ġa Ġpointer Ġ( or Ġarray Ġelements ) Ġof Ġtypes Ġless Ġthan Ġ 3 2 - bit Ġwide Ġin Ġkernel Ġprogram . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġk hr _ device _ enqueue _ local _ arg _ types Ġ= ĠEXT _ FLAG . native Class CL (" khr _ device _ enqueue _ local _ arg _ types ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġallows Ġarguments Ġto Ġblocks Ġpassed Ġto Ġenqueue _ kernel Ġfunctions Ġto Ġbe Ġdeclared Ġas Ġa Ġpointer Ġto Ġany Ġtype Ġ( built - in Ġor Ġuser - defined ) Ġin ĊĠĠĠĠĠĠĠ Ġlocal Ġmemory Ġinstead Ġof Ġjust Ġ{@ code Ġlocal Ġvoid Ġ* }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġk hr _ global _ int 3 2 _ base _ atom ics Ġ= ĠEXT _ FLAG . native Class CL (" khr _ global _ int 3 2 _ base _ atom ics ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġbasic Ġatomic Ġoperations Ġon Ġ 3 2 - bit Ġintegers Ġin Ġglobal Ġmemory . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġk hr _ global _ int 3 2 _ extended _ atom ics Ġ= ĠEXT _ FLAG . native Class CL (" khr _ global _ int 3 2 _ extended _ atom ics ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġextended Ġatomic Ġoperations Ġon Ġ 3 2 - bit Ġintegers Ġin Ġglobal Ġmemory . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġk hr _ int 6 4 _ base _ atom ics Ġ= ĠEXT _ FLAG . native Class CL (" khr _ int 6 4 _ base _ atom ics ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġbasic Ġatomic Ġoperations Ġon Ġ 6 4 - bit Ġintegers Ġin Ġboth Ġglobal Ġand Ġlocal Ġmemory . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġk hr _ int 6 4 _ extended _ atom ics Ġ= ĠEXT _ FLAG . native Class CL (" khr _ int 6 4 _ extended _ atom ics ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġextended Ġatomic Ġoperations Ġon Ġ 6 4 - bit Ġintegers Ġin Ġboth Ġglobal Ġand Ġlocal Ġmemory . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġk hr _ local _ int 3 2 _ base _ atom ics Ġ= ĠEXT _ FLAG . native Class CL (" khr _ local _ int 3 2 _ base _ atom ics ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġbasic Ġatomic Ġoperations Ġon Ġ 3 2 - bit Ġintegers Ġin Ġlocal Ġmemory . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġk hr _ local _ int 3 2 _ extended _ atom ics Ġ= ĠEXT _ FLAG . native Class CL (" khr _ local _ int 3 2 _ extended _ atom ics ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġextended Ġatomic Ġoperations Ġon Ġ 3 2 - bit Ġintegers Ġin Ġlocal Ġmemory . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġk hr _ mip map _ image _ writes Ġ= ĠEXT _ FLAG . native Class CL (" khr _ mip map _ image _ writes ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġbuilt - in Ġfunctions Ġthat Ġcan Ġbe Ġused Ġto Ġwrite Ġa Ġmip - mapped Ġimage Ġin Ġan ĠOpen CL ĠC Ġprogram . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġk hr _ select _ f pro und ing _ mode Ġ= ĠEXT _ FLAG . native Class CL (" khr _ select _ f pro und ing _ mode ", ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Name Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġsupport Ġfor Ġspecifying Ġthe Ġrounding Ġmode Ġfor Ġan Ġinstruction Ġor Ġgroup Ġof Ġinstructions Ġin Ġthe Ġprogram Ġsource . ĊĊĠĠĠĠĠĠĠ ĠThe Ġappropriate Ġrounding Ġmode Ġcan Ġbe Ġspecified Ġusing Ġ{@ code Ġ\# pragma ĠOPEN CL ĠSELECT _ ROUND ING _ MODE } Ġrounding - mode Ġin Ġthe Ġprogram Ġsource . ĊĊĠĠĠĠĠĠĠ ĠThe Ġ{@ code Ġ\# pragma ĠOPEN CL ĠSELECT _ ROUND ING _ MODE } Ġsets Ġthe Ġrounding Ġmode Ġfor Ġall Ġinstructions Ġthat Ġoperate Ġon Ġfloating - point Ġtypes Ġ( scalar Ġor Ġvector ĊĠĠĠĠĠĠĠ Ġtypes ) Ġor Ġproduce Ġfloating - point Ġvalues Ġthat Ġfollow Ġthis Ġpragma Ġin Ġthe Ġprogram Ġsource Ġuntil Ġthe Ġnext Ġ{@ code Ġ\# pragma ĠOPEN CL ĠSELECT _ ROUND ING _ MODE } Ġis ĊĠĠĠĠĠĠĠ Ġencountered . ĠNote Ġthat Ġthe Ġrounding Ġmode Ġspecified Ġfor Ġa Ġblock Ġof Ġcode Ġis Ġknown Ġat Ġcompile Ġtime . ĠExcept Ġwhere Ġotherwise Ġdocumented , Ġthe Ġcal lee ĊĠĠĠĠĠĠĠ Ġfunctions Ġdo Ġnot Ġinherit Ġthe Ġrounding Ġmode Ġof Ġthe Ġcaller Ġfunction . ĊĊĠĠĠĠĠĠĠ ĠIf Ġthis Ġextension Ġis Ġenabled , Ġthe Ġ{@ code Ġ__ ROUND ING _ MODE __ } Ġpre processor Ġsymbol Ġshall Ġbe Ġdefined Ġto Ġbe Ġone Ġof Ġthe Ġfollowing Ġaccording Ġto Ġthe Ġcurrent ĊĠĠĠĠĠĠĠ Ġrounding Ġmode : ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ \ # define Ġ__ ROUND ING _ MODE __ Ġr te Ċ \ # define Ġ__ ROUND ING _ MODE __ Ġr tz Ċ \ # define Ġ__ ROUND ING _ MODE __ Ġr tp Ċ \ # define Ġ__ ROUND ING _ MODE __ Ġr tz "" ")} ĊĠĠĠĠĠĠĠ ĠThe Ġdefault Ġrounding Ġmode Ġis Ġround Ġto Ġnearest Ġeven . ĠThe Ġbuilt - in Ġmath Ġfunctions , Ġthe Ġcommon Ġfunctions , Ġand Ġthe Ġge ometric Ġfunctions Ġare Ġimplemented Ġwith ĊĠĠĠĠĠĠĠ Ġthe Ġround Ġto Ġnearest Ġeven Ġrounding Ġmode . ĊĊĠĠĠĠĠĠĠ ĠVar ious Ġbuilt - in Ġconversions Ġand Ġthe Ġv store _ half Ġand Ġv store a _ hal fn Ġbuilt - in Ġfunctions Ġthat Ġdo Ġnot Ġspecify Ġa Ġrounding Ġmode Ġinherit Ġthe Ġcurrent Ġrounding ĊĠĠĠĠĠĠĠ Ġmode . ĠCon versions Ġfrom Ġfloating - point Ġto Ġinteger Ġtype Ġalways Ġuse Ġr tz Ġmode , Ġexcept Ġwhere Ġthe Ġuser Ġspecifically Ġasks Ġfor Ġanother Ġrounding Ġmode . ĊĊĠĠĠĠĠĠĠ ĠNotes ĠThe Ġabove Ġfour Ġrounding Ġmodes Ġare Ġdefined Ġby ĠIEEE Ġ 7 5 4 . ĠFloating - point Ġcalculations Ġmay Ġbe Ġcarried Ġout Ġinternally Ġwith Ġextra Ġprecision Ġand Ġthen ĊĠĠĠĠĠĠĠ Ġrounded Ġto Ġfit Ġinto Ġthe Ġdestination Ġtype . ĠRound Ġto Ġnearest Ġeven Ġis Ġcurrently Ġthe Ġonly Ġrounding Ġmode Ġrequired Ġby Ġthe ĠOpen CL Ġspecification Ġand Ġis ĊĠĠĠĠĠĠĠ Ġtherefore Ġthe Ġdefault Ġrounding Ġmode . ĠIn Ġaddition , Ġonly Ġstatic Ġselection Ġof Ġrounding Ġmode Ġis Ġsupported . ĠDynamic ally Ġre configuring Ġthe Ġrounding Ġmodes Ġas ĊĠĠĠĠĠĠĠ Ġspecified Ġby Ġthe ĠIEEE Ġ 7 5 4 Ġspec Ġis Ġnot Ġa Ġrequirement . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġamd _ compile _ options Ġ= ĠEXT _ FLAG . native Class CL (" amd _ compile _ options ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġthe Ġfollowing Ġoptions , Ġwhich Ġare Ġnot Ġpart Ġof Ġthe ĠOpen CL Ġspecification : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- g Ġ& ndash ; ĠThis Ġis Ġan Ġexperimental Ġfeature Ġthat Ġlets Ġyou Ġuse Ġthe ĠGNU Ġproject Ġdebugger , ĠG DB , Ġto Ġdebug Ġkernels Ġon Ġx 8 6 ĠCP Us Ġrunning ĠLinux Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcy g win / min GW Ġunder ĠWindows . ĠThis Ġoption Ġdoes Ġnot Ġaffect Ġthe Ġdefault Ġoptimization Ġof Ġthe ĠOpen CL Ġcode . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- O 0 Ġ& ndash ; ĠSpecifies Ġto Ġthe Ġcompiler Ġnot Ġto Ġoptimize . ĠThis Ġis Ġequivalent Ġto Ġthe ĠOpen CL Ġstandard Ġoption Ġ- cl - opt - disable .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- f [ no - ] bin - source Ġ& ndash ; ĠDoes Ġ[ not ] Ġgenerate ĠOpen CL Ġsource Ġin Ġthe Ġ. source Ġsection . ĠBy Ġdefault , Ġthe Ġsource Ġis ĠNOT Ġgenerated .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- f [ no - ] bin - llvm ir Ġ& ndash ; ĠDoes Ġ[ not ] Ġgenerate ĠLLVM ĠIR Ġin Ġthe Ġ. llvm ir Ġsection . ĠBy Ġdefault , ĠLLVM ĠIR ĠIS Ġgenerated .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- f [ no - ] bin - amd il Ġ& ndash ; ĠDoes Ġ[ not ] Ġgenerate ĠAMD ĠIL Ġin Ġthe Ġ. amd il Ġsection . ĠBy ĠDefault , ĠAMD ĠIL Ġis ĠNOT Ġgenerated .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- f [ no - ] bin - exe Ġ& ndash ; ĠDoes Ġ[ not ] Ġgenerate Ġthe Ġexecutable Ġ( ISA ) Ġin Ġ. text Ġsection . ĠBy Ġdefault , Ġthe Ġexecutable ĠIS Ġgenerated .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- f [ no - ] bin - hs ail Ġ& ndash ; ĠDoes Ġ[ not ] Ġgenerate ĠH SA IL / BR IG Ġin Ġthe Ġbinary . ĠBy Ġdefault , ĠH SA ĠIL / BR IG Ġis ĠNOT Ġgenerated ." ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠ ĠTo Ġavoid Ġsource Ġchanges , Ġthere Ġare Ġtwo Ġenvironment Ġvariables Ġthat Ġcan Ġbe Ġused Ġto Ġchange ĠCL Ġoptions Ġduring Ġthe Ġruntime : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" AMD _ O CL _ BUILD _ OPTIONS Ġ& ndash ; ĠOverrides Ġthe ĠCL Ġoptions Ġspecified Ġin Ġ# Build Program (). ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" AMD _ O CL _ BUILD _ OPTIONS _ APPEND Ġ& ndash ; ĠApp ends Ġoptions Ġto Ġthe Ġoptions Ġspecified Ġin Ġ# Build Program (). " ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ event _ callback Ġ= ĠEXT _ FLAG . native Class CL (" amd _ event _ callback ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġprovides Ġthe Ġability Ġto Ġregister Ġevent Ġcallbacks Ġfor Ġstates Ġother Ġthan Ġ# COMPLETE . ĠThe Ġfull Ġset Ġof Ġevent Ġstates Ġare Ġallowed : ĊĠĠĠĠĠĠĠ Ġ# QUE U ED , Ġ# SUBMIT TED , Ġand Ġ# RUNNING . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ fp 6 4 Ġ= ĠEXT _ FLAG . native Class CL (" amd _ fp 6 4 ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġprovides Ġa Ġsubset Ġof Ġthe Ġfunctionality Ġof Ġthat Ġprovided Ġby Ġthe Ġcl _ khr _ fp 6 4 Ġextension . ĠWhen Ġenabled , Ġthe Ġcompiler Ġrecogn izes Ġthe Ġdouble ĊĠĠĠĠĠĠĠ Ġscalar Ġand Ġvector Ġtypes , Ġcompiles Ġexpressions Ġinvol ving Ġthose Ġtypes , Ġand Ġaccepts Ġcalls Ġto Ġall Ġbuiltin Ġfunctions Ġenabled Ġby Ġthe Ġcl _ khr _ fp 6 4 Ġextension . ĊĠĠĠĠĠĠĠ ĠHowever , Ġthis Ġextension Ġdoes Ġnot Ġguarantee Ġthat Ġall Ġcl _ khr _ fp 6 4 Ġbuilt Ġin Ġfunctions Ġare Ġimplemented Ġand Ġdoes Ġnot Ġguarantee Ġthat Ġthe Ġbuilt Ġin Ġfunctions ĊĠĠĠĠĠĠĠ Ġthat Ġhave Ġbeen Ġimplemented Ġwould Ġbe Ġconsidered Ġconform ant Ġto Ġthe Ġcl _ khr _ fp 6 4 Ġextension . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ media _ ops Ġ= ĠEXT _ FLAG . native Class CL (" amd _ media _ ops ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThe Ġdirective Ġwhen Ġenabled Ġadds Ġthe Ġfollowing Ġbuilt - in Ġfunctions Ġto Ġthe ĠOpen CL Ġlanguage . ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ Note : Ġty pen Ġden ote Ġopen cl Ġscalar Ġtype Ġ{ n Ġ= Ġ 1 } Ġand Ġvector Ġtypes Ġ{ n Ġ= Ġ 4 , Ġ 8 , Ġ 1 6 }. Ċ Ċ Build - in ĠFunction ĊĠ Ġuint Ġ Ġamd _ pack ( float 4 Ġsrc ) Ċ Description ĊĠ Ġdst Ġ= ĠĠ Ġ( ((( uint ) src . s 0 ) Ġ& Ġ 0 xff ) ĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ+ Ġ( ((( uint ) src . s 1 ) Ġ& Ġ 0 xff ) Ġ<< ĠĠ 8 ) ĊĠĠĠĠĠĠĠ Ġ+ Ġ( ((( uint ) src . s 2 ) Ġ& Ġ 0 xff ) Ġ<< Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġ+ Ġ( ((( uint ) src . s 3 ) Ġ& Ġ 0 xff ) Ġ<< Ġ 2 4 ) Ċ Ċ Build - in ĠFunction ĊĠ Ġfloat n Ġ Ġamd _ unpack 3 ( unit n Ġsrc ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ( float )(( src . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġfloat n ĠĠ Ġamd _ unpack 2 Ġ( unit n Ġsrc ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ( float )(( src . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġfloat n ĠĠ Ġamd _ unpack 1 Ġ( unit n Ġsrc ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ( float )(( src . s 0 Ġ>> Ġ 8 ) Ġ& Ġ 0 xff ) ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġfloat n ĠĠ Ġamd _ unpack 0 Ġ( unit n Ġsrc ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ( float )( src . s 0 Ġ& Ġ 0 xff ) ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ bit align Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ Ġ( uint ) Ġ((( (( long ) src 0 . s 0 ) Ġ<< Ġ 3 2 ) Ġ| Ġ( long ) src 1 . s 0 ) Ġ>> Ġ( src 2 . s 0 Ġ& Ġ 3 1 )) ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors . ĊĊ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ byte align Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ Ġ( uint ) Ġ((( (( long ) src 0 . s 0 ) Ġ<< Ġ 3 2 ) Ġ| Ġ( long ) src 1 . s 0 ) Ġ>> Ġ(( src 2 . s 0 Ġ& Ġ 3 )* 8 )) ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ lerp Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ((( (( src 0 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 1 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 2 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 1 )) Ġ>> Ġ 1 ) Ġ<< ĠĠ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ((( (( src 0 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 1 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 2 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 1 )) Ġ>> Ġ 1 ) Ġ<< ĠĠ 8 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ((( (( src 0 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 1 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 2 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 1 )) Ġ>> Ġ 1 ) Ġ<< Ġ 1 6 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ((( (( src 0 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 1 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ+ Ġ(( src 2 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 1 )) Ġ>> Ġ 1 ) Ġ<< Ġ 2 4 ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ sad Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġsrc 2 . s 0 Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff )); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ sad hi Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 n , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġsrc 2 . s 0 Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ( abs ((( src 0 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff )) Ġ<< Ġ 1 6 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ( abs ((( src 0 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff )) Ġ<< Ġ 1 6 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ( abs ((( src 0 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff )) Ġ<< Ġ 1 6 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ( abs ((( src 0 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff )) Ġ<< Ġ 1 6 ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint Ġ Ġamd _ sad 4 ( uint 4 Ġsrc 0 , Ġuint 4 Ġsrc 1 , Ġuint Ġsrc 2 ) Ċ Description ĊĠ Ġdst ĠĠ Ġ= Ġsrc 2 ĠĠ Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 1 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 0 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 1 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 1 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 1 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 1 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 1 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 1 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 2 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 2 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 2 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 2 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 2 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 2 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 2 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 2 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 3 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 3 Ġ>> ĠĠ 0 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 3 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 3 Ġ>> ĠĠ 8 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 3 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 3 Ġ>> Ġ 1 6 ) Ġ& Ġ 0 xff )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ((( src 0 . s 3 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff ) Ġ- Ġ(( src 1 . s 3 Ġ>> Ġ 2 4 ) Ġ& Ġ 0 xff )); "" ")} ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ media _ ops 2 Ġ= ĠEXT _ FLAG . native Class CL (" amd _ media _ ops 2 ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThe Ġdirective Ġwhen Ġenabled Ġadds Ġthe Ġfollowing Ġbuilt - in Ġfunctions Ġto Ġthe ĠOpen CL Ġlanguage . ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ Note : Ġty pen Ġden ote Ġopen Ġscalar Ġtype Ġ{ Ġn Ġ= Ġ 1 Ġ} Ġand Ġvector Ġtypes Ġ{ Ġn Ġ= Ġ 2 , Ġ 4 , Ġ 8 , Ġ 1 6 Ġ}. Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ ms ad Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġuchar 4 Ġsrc 0 u 8 Ġ= Ġas _ uchar 4 ( src 0 . s 0 ); ĊĠ Ġuchar 4 Ġsrc 1 u 8 Ġ= Ġas _ uchar 4 ( src 1 . s 0 ); ĊĠ Ġdst . s 0 Ġ= Ġsrc 2 . s 0 Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ(( src 1 u 8 . s 0 Ġ== Ġ 0 ) Ġ? Ġ 0 Ġ: Ġabs ( src 0 u 8 . s 0 Ġ- Ġsrc 1 u 8 . s 0 )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ(( src 1 u 8 . s 1 Ġ== Ġ 0 ) Ġ? Ġ 0 Ġ: Ġabs ( src 0 u 8 . s 1 Ġ- Ġsrc 1 u 8 . s 1 )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ(( src 1 u 8 . s 2 Ġ== Ġ 0 ) Ġ? Ġ 0 Ġ: Ġabs ( src 0 u 8 . s 2 Ġ- Ġsrc 1 u 8 . s 2 )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġ(( src 1 u 8 . s 3 Ġ== Ġ 0 ) Ġ? Ġ 0 Ġ: Ġabs ( src 0 u 8 . s 3 Ġ- Ġsrc 1 u 8 . s 3 )); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġulong n Ġamd _ qs ad Ġ( ulong n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġulong n Ġsrc 2 ) Ċ Description ĊĠ Ġuchar 8 Ġsrc 0 u 8 Ġ= Ġas _ uchar 8 ( src 0 . s 0 ); ĊĠ Ġushort 4 Ġsrc 2 u 1 6 Ġ= Ġas _ ushort 4 ( src 2 . s 0 ); ĊĠ Ġushort 4 Ġdst u 1 6 ; ĊĠ Ġdst u 1 6 . s 0 Ġ= Ġamd _ sad ( as _ uint ( src 0 u 8 . s 0 1 2 3 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 0 ); ĊĠ Ġdst u 1 6 . s 1 Ġ= Ġamd _ sad ( as _ uint ( src 0 u 8 . s 1 2 3 4 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 1 ); ĊĠ Ġdst u 1 6 . s 2 Ġ= Ġamd _ sad ( as _ uint ( src 0 u 8 . s 2 3 4 5 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 2 ); ĊĠ Ġdst u 1 6 . s 3 Ġ= Ġamd _ sad ( as _ uint ( src 0 u 8 . s 3 4 5 6 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 3 ); ĊĠ Ġdst . s 0 Ġ= Ġas _ uint 2 ( dst u 1 6 ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġulong n Ġamd _ mq sad Ġ( ulong n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġulong n Ġsrc 2 ) Ċ Description ĊĠ Ġuchar 8 Ġsrc 0 u 8 Ġ= Ġas _ uchar 8 ( src 0 . s 0 ); ĊĠ Ġushort 4 Ġsrc 2 u 1 6 Ġ= Ġas _ ushort 4 ( src 2 . s 0 ); ĊĠ Ġushort 4 Ġdst u 1 6 ; ĊĠ Ġdst u 1 6 . s 0 Ġ= Ġamd _ ms ad ( as _ uint ( src 0 u 8 . s 0 1 2 3 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 0 ); ĊĠ Ġdst u 1 6 . s 1 Ġ= Ġamd _ ms ad ( as _ uint ( src 0 u 8 . s 1 2 3 4 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 1 ); ĊĠ Ġdst u 1 6 . s 2 Ġ= Ġamd _ ms ad ( as _ uint ( src 0 u 8 . s 2 3 4 5 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 2 ); ĊĠ Ġdst u 1 6 . s 3 Ġ= Ġamd _ ms ad ( as _ uint ( src 0 u 8 . s 3 4 5 6 ), Ġsrc 1 . s 0 , Ġsrc 2 u 1 6 . s 3 ); ĊĠ Ġdst . s 0 Ġ= Ġas _ uint 2 ( dst u 1 6 ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ sad w Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġushort 2 Ġsrc 0 u 1 6 Ġ= Ġas _ ushort 2 ( src 0 . s 0 ); ĊĠ Ġushort 2 Ġsrc 1 u 1 6 Ġ= Ġas _ ushort 2 ( src 1 . s 0 ); ĊĠ Ġdst . s 0 Ġ= Ġsrc 2 . s 0 Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ( src 0 u 1 6 . s 0 Ġ- Ġsrc 1 u 1 6 . s 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġabs ( src 0 u 1 6 . s 1 Ġ- Ġsrc 1 u 1 6 . s 1 ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Build - in ĠFunction ĊĠ Ġuint n Ġ Ġamd _ sadd Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġsrc 2 . s 0 Ġ+ Ġ Ġabs ( src 0 . s 0 Ġ- Ġsrc 1 . s 0 ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Built - in ĠFunction : ĊĠ Ġuint n Ġamd _ bf m Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 ) Ċ Description ĊĠ Ġdst . s 0 Ġ= Ġ(( 1 Ġ<< Ġ( src 0 . s 0 Ġ& Ġ 0 x 1 f )) Ġ- Ġ 1 ) Ġ<< Ġ( src 1 . s 0 Ġ& Ġ 0 x 1 f ); ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Built - in ĠFunction : ĊĠ Ġuint n Ġamd _ bfe Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ ĠNOTE : Ġoperator Ġ>> Ġbelow Ġrepresent Ġlogical Ġright Ġshift ĊĠ Ġoffset Ġ= Ġsrc 1 . s 0 Ġ& Ġ 3 1 ; ĊĠ Ġwidth Ġ= Ġsrc 2 . s 0 Ġ& Ġ 3 1 ; ĊĠ Ġif Ġwidth Ġ= Ġ 0 ĊĠĠĠĠĠ Ġdst . s 0 Ġ= Ġ 0 ; ĊĠ Ġelse Ġif Ġ( offset Ġ+ Ġwidth ) Ġ< Ġ 3 2 ĊĠĠĠĠĠ Ġdst . s 0 Ġ= Ġ( src 0 . s 0 Ġ<< Ġ( 3 2 Ġ- Ġoffset Ġ- Ġwidth )) Ġ>> Ġ( 3 2 Ġ- Ġwidth ); ĊĠ Ġelse ĊĠĠĠĠĠ Ġdst . s 0 Ġ= Ġsrc 0 . s 0 Ġ>> Ġoffset ; ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Built - in ĠFunction : ĊĠĠ Ġint n Ġamd _ bfe Ġ( int n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) Ċ Description ĊĠ ĠNOTE : Ġoperator Ġ>> Ġbelow Ġrepresent Ġarithmetic Ġright Ġshift ĊĠ Ġoffset Ġ= Ġsrc 1 . s 0 Ġ& Ġ 3 1 ; ĊĠ Ġwidth Ġ= Ġsrc 2 . s 0 Ġ& Ġ 3 1 ; ĊĠ Ġif Ġwidth Ġ= Ġ 0 ĊĠĠĠĠĠ Ġdst . s 0 Ġ= Ġ 0 ; ĊĠ Ġelse Ġif Ġ( offset Ġ+ Ġwidth ) Ġ< Ġ 3 2 ĊĠĠĠĠĠ Ġdst . s 0 Ġ= Ġsrc 0 . s 0 Ġ<< Ġ( 3 2 - offset - width ) Ġ>> Ġ 3 2 - width ; ĊĠ Ġelse ĊĠĠĠĠĠ Ġdst . s 0 Ġ= Ġsrc 0 . s 0 Ġ>> Ġoffset ; ĊĠ Ġsimilar Ġoperation Ġapplied Ġto Ġother Ġcomponents Ġof Ġthe Ġvectors Ċ Ċ Built - in ĠFunction : ĊĠĠ Ġint n Ġamd _ median 3 Ġ( int n Ġsrc 0 , Ġint n Ġsrc 1 , Ġint n Ġsrc 2 ) ĊĠĠ Ġuint n Ġamd _ median 3 Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) ĊĠĠ Ġfloat n Ġamd _ median 3 Ġ( float n Ġsrc 0 , Ġfloat n Ġsrc 1 , Ġfloat tn Ġsrc 2 ) Ċ Description ĊĠĠ Ġreturns Ġmedian Ġof Ġsrc 0 , Ġsrc 1 , Ġand Ġsrc 2 Ċ Ċ Built - in ĠFunction : ĊĠĠ Ġint n Ġamd _ min 3 Ġ( int n Ġsrc 0 , Ġint n Ġsrc 1 , Ġint n Ġsrc 2 ) ĊĠĠ Ġuint n Ġamd _ min 3 Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) ĊĠĠ Ġfloat n Ġamd _ min 3 Ġ( float n Ġsrc 0 , Ġfloat n Ġsrc 1 , Ġfloat tn Ġsrc 2 ) Ċ Description ĊĠĠ Ġreturns Ġmin Ġof Ġsrc 0 , Ġsrc 1 , Ġand Ġsrc 2 Ċ Ċ Built - in ĠFunction : ĊĠĠ Ġint n Ġamd _ max 3 Ġ( int n Ġsrc 0 , Ġint n Ġsrc 1 , Ġint n Ġsrc 2 ) ĊĠĠ Ġuint n Ġamd _ max 3 Ġ( uint n Ġsrc 0 , Ġuint n Ġsrc 1 , Ġuint n Ġsrc 2 ) ĊĠĠ Ġfloat n Ġamd _ max 3 Ġ( float n Ġsrc 0 , Ġfloat n Ġsrc 1 , Ġfloat tn Ġsrc 2 ) Ċ Description ĊĠĠ Ġreturns Ġmax Ġof Ġsrc 0 , Ġsrc 1 , Ġand Ġsrc 2 "" ")} ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ pop cnt Ġ= ĠEXT _ FLAG . native Class CL (" amd _ pop cnt ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġintroduces Ġa ĠâĢľ population Ġcount âĢĿ Ġfunction Ġcalled Ġpop cnt . ĠThis Ġextension Ġwas Ġtaken Ġinto Ġcore ĠOpen CL Ġ 1 . 2 , Ġand Ġthe Ġfunction Ġwas Ġrenamed ĊĠĠĠĠĠĠĠ Ġpop count . ĠThe Ġcore Ġ 1 . 2 Ġpop count Ġfunction Ġis Ġidentical Ġto Ġthe ĠAMD Ġextension Ġpop cnt Ġfunction . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ pre defined _ macros Ġ= ĠEXT _ FLAG . native Class CL (" amd _ pre defined _ macros ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThe Ġfollowing Ġmacros Ġare Ġpredefined Ġwhen Ġcompiling ĠOpen CL âĦ ¢ ĠC Ġkernels . ĠThese Ġmacros Ġare Ġdefined Ġautomatically Ġbased Ġon Ġthe Ġdevice Ġfor Ġwhich Ġthe Ġcode Ġis ĊĠĠĠĠĠĠĠ Ġbeing Ġcompiled . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > GPU Ġdevices </ h 5 > ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ B arts __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Be aver C reek __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ B he em __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ B ona ire __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Ca icos __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ C ape ver de __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Car ri zo __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ C ay man __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ C ed ar __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Cy press __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Dev ast ator __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ H ain an __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ I cel and __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ J uni per __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ K al indi __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ K au ai __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ L om bok __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Lo vel and __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ M ull ins __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ O land __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ P it ca ir n __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ RV 7 1 0 __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ RV 7 3 0 __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ RV 7 4 0 __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ RV 7 7 0 __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ RV 7 9 0 __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Red wood __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Sc rapper __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Spect re __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Sp ook y __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ T ah iti __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ T ong a __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ Tur ks __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ W inter Par k __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ GPU __ " ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > CPU Ġdevices </ h 5 > ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ CPU __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ X 8 6 __", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ X 8 6 _ 6 4 __ " ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠ ĠNote Ġthat Ġ__ GPU __ Ġor Ġ__ CPU __ Ġare Ġpredefined Ġwhenever Ġa ĠGPU Ġor ĠCPU Ġdevice Ġis Ġthe Ġcompilation Ġtarget . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ printf Ġ= ĠEXT _ FLAG . native Class CL (" amd _ printf ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġthe Ġbuilt - in Ġfunction Ġ{@ code Ġprintf (__ constant Ġchar Ġ* Ġrestrict Ġformat , ĠâĢ¦ );} ĊĊĠĠĠĠĠĠĠ ĠThis Ġfunction Ġwrites Ġoutput Ġto Ġthe Ġstdout Ġstream Ġassociated Ġwith Ġthe Ġhost Ġapplication . ĠThe Ġformat Ġstring Ġis Ġa Ġcharacter Ġsequence Ġthat : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Ġnull - terminated Ġand Ġcomposed Ġof Ġzero Ġand Ġmore Ġdirectives ,", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ord inary Ġcharacters Ġ( i . e . Ġnot Ġ% ), Ġwhich Ġare Ġcopied Ġdirectly Ġto Ġthe Ġoutput Ġstream Ġunchanged , Ġand ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconversion Ġspecifications , Ġeach Ġof Ġwhich Ġcan Ġresult Ġin Ġfetching Ġzero Ġor Ġmore Ġarguments , Ġconverting Ġthem , Ġand Ġthen Ġwriting Ġthe Ġfinal Ġresult Ġto Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġstream . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠ ĠThe Ġformat Ġstring Ġmust Ġbe Ġresol vable Ġat Ġcompile Ġtime ; Ġthus , Ġit Ġcannot Ġbe Ġdynamically Ġcreated Ġby Ġthe Ġexecuting Ġprogram . Ġ( Note Ġthat Ġthe Ġuse Ġof Ġvari adic ĊĠĠĠĠĠĠĠ Ġarguments Ġin Ġthe Ġbuilt - in Ġprintf Ġdoes Ġnot Ġimp ly Ġits Ġuse Ġin Ġother Ġbuiltins ; Ġmore Ġimportant ly , Ġit Ġis Ġnot Ġvalid Ġto Ġuse Ġprintf Ġin Ġuser - defined Ġfunctions Ġor ĊĠĠĠĠĠĠĠ Ġkernels .) ĊĊĠĠĠĠĠĠĠ ĠThe ĠOpen CL ĠC Ġprintf Ġclosely Ġmatches Ġthe Ġdefinition Ġfound Ġas Ġpart Ġof Ġthe ĠC 9 9 Ġstandard . ĠNote Ġthat Ġconversions Ġintroduced Ġin Ġthe Ġformat Ġstring Ġwith Ġ% Ġare ĊĠĠĠĠĠĠĠ Ġsupported Ġwith Ġthe Ġfollowing Ġguidelines : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġ 3 2 - bit Ġfloating Ġpoint Ġargument Ġis Ġnot Ġconverted Ġto Ġa Ġ 6 4 - bit Ġdouble , Ġunless Ġthe Ġextension Ġcl _ khr _ fp 6 4 Ġis Ġsupported Ġand Ġenabled . ĠThis Ġincludes Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Ġvariants Ġif Ġcl _ khr _ fp 6 4 Ġis Ġsupported Ġand Ġdefined Ġin Ġthe Ġcorresponding Ġcompilation Ġunit . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 4 - bit Ġinteger Ġtypes Ġcan Ġbe Ġprinted Ġusing Ġ% ld Ġ/ Ġ% lx Ġ/ Ġ% lu .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"% lld Ġ/ Ġ% ll x Ġ/ Ġ% llu Ġare Ġnot Ġsupported Ġand Ġreserved Ġfor Ġ 1 2 8 - bit Ġinteger Ġtypes Ġ( long Ġlong ). ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAll ĠOpen CL Ġvector Ġtypes Ġcan Ġbe Ġexplicitly Ġpassed Ġand Ġprinted Ġusing Ġthe Ġmodifier Ġvn , Ġwhere Ġn Ġcan Ġbe Ġ 2 , Ġ 3 , Ġ 4 , Ġ 8 , Ġor Ġ 1 6 . ĠThis Ġmodifier Ġappears Ġbefore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġoriginal Ġconversion Ġspec ifier Ġfor Ġthe Ġvector âĢĻ s Ġcomponent Ġtype Ġ( for Ġexample , Ġto Ġprint Ġa Ġfloat 4 Ġ% v 4 f ). ĠSince Ġvn Ġis Ġa Ġconversion Ġspec ifier , Ġit Ġis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Ġto Ġapply Ġoptional Ġflags , Ġsuch Ġas Ġfield Ġwidth Ġand Ġprecision , Ġjust Ġas Ġit Ġis Ġwhen Ġprinting Ġthe Ġcomponent Ġtypes . ĠSince Ġa Ġvector Ġis Ġan Ġaggregate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype , Ġthe Ġcomma Ġseparator Ġis Ġused Ġbetween Ġthe Ġcomponents : Ġ 0 : 1 , ĠâĢ¦ Ġ, Ġn - 2 : n - 1 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġamd _ vec 3 Ġ= ĠEXT _ FLAG . native Class CL (" amd _ vec 3 ", ĠAMD ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġadds Ġsupport Ġfor Ġvectors Ġwith Ġthree Ġelements : Ġfloat 3 , Ġshort 3 , Ġchar 3 , Ġetc . ĠThis Ġdata Ġtype Ġwas Ġadded Ġto ĠOpen CL Ġ 1 . 1 Ġas Ġa Ġcore Ġfeature . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val ĠAPP LE _ fp 6 4 _ basic _ ops Ġ= ĠEXT _ FLAG . native Class CL (" APPLE _ fp 6 4 _ basic _ ops ", ĠAPP LE ) Ċ Ċ val Ġarm _ core _ id Ġ= ĠEXT _ FLAG . native Class CL (" arm _ core _ id ", ĠARM ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ${ extension Link (" arm _ get _ core _ id ")} Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġprovides Ġa Ġbuilt - in Ġfunction Ġ({ @ code Ġuint Ġarm _ get _ core _ id ( Ġvoid Ġ) }) Ġwhich Ġreturns Ġa Ġunique ĠID Ġfor Ġthe Ġcompute Ġunit Ġthat Ġa Ġwork - group Ġis ĊĠĠĠĠĠĠĠ Ġrunning Ġon . ĠThis Ġvalue Ġis Ġuniform Ġfor Ġa Ġwork - group . ĊĊĠĠĠĠĠĠĠ ĠThis Ġvalue Ġcan Ġbe Ġused Ġfor Ġa Ġcore - specific Ġcache Ġor Ġatomic Ġpool Ġwhere Ġthe Ġstorage Ġis Ġrequired Ġto Ġbe Ġin Ġglobal Ġmemory Ġand Ġpersistent Ġ( but Ġnot Ġordered ) ĊĠĠĠĠĠĠĠ Ġbetween Ġwork - groups . ĠThis Ġdoes Ġnot Ġprovide Ġany Ġadditional Ġordering Ġon Ġtop Ġof Ġthe Ġexisting Ġguarantees Ġbetween Ġwork groups , Ġnor Ġdoes Ġit Ġprovide Ġany ĊĠĠĠĠĠĠĠ Ġguarantee Ġof Ġconcurrent Ġexecution . ĊĊĠĠĠĠĠĠĠ ĠThe ĠIDs Ġfor Ġthe Ġcompute Ġunits Ġmay Ġnot Ġbe Ġconsecutive Ġand Ġapplications Ġmust Ġmake Ġsure Ġthey Ġallocate Ġenough Ġmemory Ġto Ġac commod ate Ġall Ġthe Ġcompute Ġunits ĊĠĠĠĠĠĠĠ Ġpresent Ġon Ġthe Ġdevice . ĠA Ġdevice Ġinfo Ġquery Ġallows Ġthe Ġapplication Ġto Ġknow Ġthe ĠIDs Ġassociated Ġwith Ġthe Ġcompute Ġunits Ġon Ġa Ġgiven Ġdevice . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġarm _ integer _ dot _ product _ int 8 Ġ= ĠEXT _ FLAG . native Class CL (" arm _ integer _ dot _ product _ int 8 ", ĠARM ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= Ġ" When Ġtrue , Ġthe Ġ${ extension Link (" arm _ integer _ dot _ product ", Ġname Ġ= Ġ" cl _ arm _ integer _ dot _ product _ int 8 ")} Ġextension Ġis Ġsupported ." Ċ } Ċ val Ġarm _ integer _ dot _ product _ accum ulate _ int 8 Ġ= ĠEXT _ FLAG . native Class CL (" arm _ integer _ dot _ product _ accum ulate _ int 8 ", ĠARM ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= Ġ" When Ġtrue , Ġthe Ġ${ extension Link (" arm _ integer _ dot _ product ", Ġname Ġ= Ġ" cl _ arm _ integer _ dot _ product _ accum ulate _ int 8 ")} Ġextension Ġis Ġsupported ." Ċ } Ċ val Ġarm _ integer _ dot _ product _ accum ulate _ int 1 6 Ġ= ĠEXT _ FLAG . native Class CL (" arm _ integer _ dot _ product _ accum ulate _ int 1 6 ", ĠARM ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= Ġ" When Ġtrue , Ġthe Ġ${ extension Link (" arm _ integer _ dot _ product ", Ġname Ġ= Ġ" cl _ arm _ integer _ dot _ product _ accum ulate _ int 1 6 ")} Ġextension Ġis Ġsupported ." Ċ } Ċ val Ġarm _ integer _ dot _ product _ accum ulate _ s atur ate _ int 8 Ġ= ĠEXT _ FLAG . native Class CL (" arm _ integer _ dot _ product _ accum ulate _ s atur ate _ int 8 ", ĠARM ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= Ġ" When Ġtrue , Ġthe Ġ${ extension Link (" arm _ integer _ dot _ product ", Ġname Ġ= Ġ" cl _ arm _ integer _ dot _ product _ accum ulate _ s atur ate _ int 8 ")} Ġextension Ġis Ġsupported ." Ċ } Ċ Ċ val Ġintel _ media _ block _ io Ġ= ĠEXT _ FLAG . native Class CL (" intel _ media _ block _ io ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġaug ments Ġthe Ġblock Ġread / write Ġfunctionality Ġavailable Ġin Ġthe ĠIntel Ġvendor Ġextensions Ġ${ intel _ sub groups . link } Ġand ĊĠĠĠĠĠĠĠ Ġ${ extension Link (" intel _ sub groups _ short ")} Ġby Ġthe Ġspecification Ġof Ġadditional Ġbuilt - in Ġfunctions Ġto Ġfacilitate Ġthe Ġreading Ġand Ġwriting Ġof Ġflexible Ġ 2 D ĊĠĠĠĠĠĠĠ Ġregions Ġfrom Ġimages . ĠThis ĠAPI Ġallows Ġfor Ġthe Ġexplicit Ġspecification Ġof Ġthe Ġwidth Ġand Ġheight Ġof Ġthe Ġimage Ġregions . ĊĊĠĠĠĠĠĠĠ ĠWhile Ġnot Ġrequired , Ġthis Ġextension Ġis Ġmost Ġuseful Ġwhen Ġthe Ġsub group Ġsize Ġis Ġknown Ġat Ġcompile - time . ĠThe Ġprimary Ġuse Ġcase Ġfor Ġthis Ġextension Ġis Ġto ĊĠĠĠĠĠĠĠ Ġsupport Ġthe Ġreading Ġof Ġthe Ġedge Ġtex els Ġ( or Ġimage Ġelements ) Ġof Ġne ighb oring Ġmacro - blocks Ġas Ġdescribed Ġin Ġthe ĠIntel Ġvendor Ġextension ĊĠĠĠĠĠĠĠ Ġ${ intel _ device _ side _ av c _ motion _ est imation . link }. ĠWhen Ġusing Ġthe Ġbuilt - in Ġfunctions Ġfrom Ġ{@ code Ġcl _ intel _ device _ Ġside _ av c _ motion _ est imation } Ġthe ĊĠĠĠĠĠĠĠ Ġsub group Ġsize Ġis Ġimplicitly Ġfixed Ġto Ġ 1 6 . ĠIn Ġother Ġuse Ġcases Ġthe Ġsub group Ġsize Ġmay Ġbe Ġfixed Ġusing Ġthe Ġ${ intel _ required _ sub group _ size . link } Ġextension , Ġif ĊĠĠĠĠĠĠĠ Ġneeded . ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġintel _ printf Ġ= ĠEXT _ FLAG . native Class CL (" intel _ printf ", ĠIN TEL ) Ċ val Ġintel _ spirv _ device _ side _ av c _ motion _ est imation Ġ= ĠEXT _ FLAG . native Class CL (" intel _ spirv _ device _ side _ av c _ motion _ est imation ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġdefines Ġhow Ġmodules Ġusing Ġthe ĠSPI R - V Ġextension Ġ{@ code ĠSP V _ INTEL _ device _ side _ av c _ motion _ est imation } Ġmay Ġbehave Ġin Ġan ĠOpen CL Ġenvironment . ĊĊĠĠĠĠĠĠĠ ĠRequires Ġ{@ link ĠCL 2 1 ĠOpen CL Ġ 2 . 1 } Ġand Ġ${ intel _ device _ side _ av c _ motion _ est imation . link }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġintel _ spirv _ media _ block _ io Ġ= ĠEXT _ FLAG . native Class CL (" intel _ spirv _ media _ block _ io ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġdefines Ġhow Ġmodules Ġusing Ġthe ĠSPI R - V Ġextension Ġ{@ code ĠSP V _ INTEL _ media _ block _ io } Ġmay Ġbehave Ġin Ġan ĠOpen CL Ġenvironment . ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ ĠRequires Ġ{@ link ĠCL 2 1 ĠOpen CL Ġ 2 . 1 } Ġand Ġ${ intel _ media _ block _ io . link }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġintel _ spirv _ sub groups Ġ= ĠEXT _ FLAG . native Class CL (" intel _ spirv _ sub groups ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġdefines Ġhow Ġmodules Ġusing Ġthe ĠSPI R - V Ġextension Ġ{@ code ĠSP V _ INTEL _ sub groups } Ġmay Ġbehave Ġin Ġan ĠOpen CL Ġenvironment . ĊĊĠĠĠĠĠĠĠ ĠRequires Ġ{@ link ĠCL 2 1 ĠOpen CL Ġ 2 . 1 } Ġand Ġ${ intel _ sub groups . link }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġintel _ sub groups _ char Ġ= ĠEXT _ FLAG . native Class CL (" intel _ sub groups _ char ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThe Ġgoal Ġof Ġthis Ġextension Ġis Ġto Ġallow Ġprogram mers Ġto Ġimprove Ġthe Ġperformance Ġof Ġapplications Ġoperating Ġon Ġ 8 - bit Ġdata Ġtypes Ġby Ġextending Ġthe Ġsub group ĊĠĠĠĠĠĠĠ Ġfunctions Ġdescribed Ġin Ġthe Ġ${ intel _ sub groups . link } Ġextension Ġto Ġsupport Ġ 8 - bit Ġinteger Ġdata Ġtypes Ġ( chars Ġand Ġu chars ). ĠSpecific ally , Ġthe Ġextension : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe Ġsub group Ġbroadcast Ġfunction Ġto Ġallow Ġ 8 - bit Ġinteger Ġvalues Ġto Ġbe Ġbroadcast Ġfrom Ġone Ġwork Ġitem Ġto Ġall Ġother Ġwork Ġitems Ġin Ġthe Ġsub group .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe Ġsub group Ġscan Ġand Ġreduction Ġfunctions Ġto Ġoperate Ġon Ġ 8 - bit Ġinteger Ġdata Ġtypes .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe ĠIntel Ġsub group Ġshuffle Ġfunctions Ġto Ġallow Ġar bitr arily Ġex changing Ġ 8 - bit Ġinteger Ġvalues Ġamong Ġwork Ġitems Ġin Ġthe Ġsub group .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe ĠIntel Ġsub group Ġblock Ġread Ġand Ġwrite Ġfunctions Ġto Ġallow Ġreading Ġand Ġwriting Ġ 8 - bit Ġinteger Ġdata Ġfrom Ġimages Ġand Ġbuffers ." ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠĠĠĠĠ ĠRequires Ġ{@ link ĠCL 1 2 ĠOpen CL Ġ 1 . 2 } Ġand Ġ${ intel _ sub groups . link }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġintel _ sub groups _ long Ġ= ĠEXT _ FLAG . native Class CL (" intel _ sub groups _ long ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThe Ġgoal Ġof Ġthis Ġextension Ġis Ġto Ġallow Ġprogram mers Ġto Ġimprove Ġthe Ġperformance Ġof Ġapplications Ġoperating Ġon Ġ 6 4 - bit Ġdata Ġtypes Ġby Ġextending Ġthe Ġsub group ĊĠĠĠĠĠĠĠ Ġfunctions Ġdescribed Ġin Ġthe Ġ${ intel _ sub groups . link } Ġextension Ġto Ġsupport Ġ 6 4 - bit Ġinteger Ġdata Ġtypes Ġ( long s Ġand Ġul ongs ). ĠSpecific ally , Ġthe Ġextension : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe ĠIntel Ġsub group Ġblock Ġread Ġand Ġwrite Ġfunctions Ġto Ġallow Ġreading Ġand Ġwriting Ġ 6 4 - bit Ġinteger Ġdata Ġfrom Ġimages Ġand Ġbuffers ." ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ ĠNote Ġthat Ġ{@ code Ġcl _ intel _ sub groups } Ġand Ġ{@ code Ġcl _ khr _ sub groups } Ġalready Ġsupport Ġbroadcast s , Ġscans , Ġand Ġreduction s Ġfor Ġ 6 4 - bit Ġinteger Ġtypes , Ġand Ġthat ĊĠĠĠĠĠĠĠ Ġ{@ code Ġcl _ intel _ sub groups } Ġalready Ġsupports Ġsh uff les Ġfor Ġ 6 4 - bit Ġinteger Ġtypes . ĊĊĠĠĠĠĠĠĠ ĠRequires Ġ{@ link ĠCL 1 2 ĠOpen CL Ġ 1 . 2 } Ġand Ġ${ intel _ sub groups . link }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġintel _ sub groups _ short Ġ= ĠEXT _ FLAG . native Class CL (" intel _ sub groups _ short ", ĠIN TEL ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThe Ġgoal Ġof Ġthis Ġextension Ġis Ġto Ġallow Ġprogram mers Ġto Ġimprove Ġthe Ġperformance Ġof Ġapplications Ġoperating Ġon Ġ 1 6 - bit Ġdata Ġtypes Ġby Ġextending Ġthe Ġsub group ĊĠĠĠĠĠĠĠ Ġfunctions Ġdescribed Ġin Ġthe Ġ${ intel _ sub groups . link } Ġextension Ġto Ġsupport Ġ 1 6 - bit Ġinteger Ġdata Ġtypes Ġ( shorts Ġand Ġushort s ). ĠSpecific ally , Ġthe Ġextension : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe Ġsub group Ġbroadcast Ġfunction Ġto Ġallow Ġ 1 6 - bit Ġinteger Ġvalues Ġto Ġbe Ġbroadcast Ġfrom Ġone Ġwork Ġitem Ġto Ġall Ġother Ġwork Ġitems Ġin Ġthe Ġsub group .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe Ġsub group Ġscan Ġand Ġreduction Ġfunctions Ġto Ġoperate Ġon Ġ 1 6 - bit Ġinteger Ġdata Ġtypes .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe ĠIntel Ġsub group Ġshuffle Ġfunctions Ġto Ġallow Ġar bitr arily Ġex changing Ġ 1 6 - bit Ġinteger Ġvalues Ġamong Ġwork Ġitems Ġin Ġthe Ġsub group .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ext ends Ġthe ĠIntel Ġsub group Ġblock Ġread Ġand Ġwrite Ġfunctions Ġto Ġallow Ġreading Ġand Ġwriting Ġ 1 6 - bit Ġinteger Ġdata Ġfrom Ġimages Ġand Ġbuffers ." ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠĠĠĠĠ ĠRequires Ġ{@ link ĠCL 1 2 ĠOpen CL Ġ 1 . 2 } Ġand Ġ${ intel _ sub groups . link }. ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ Ċ val Ġnv _ compiler _ options Ġ= ĠEXT _ FLAG . native Class CL (" nv _ compiler _ options ", ĠNV ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġallows Ġthe Ġprogrammer Ġto Ġpass Ġoptions Ġto Ġthe ĠP TX Ġassembler Ġallowing Ġgreater Ġcontrol Ġover Ġcode Ġgeneration . ĊĠĠĠĠĠĠĠ Ġ${ code Block ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Ċ - cl - nv - max r reg count Ġ< N > ĊĠĠĠ ĠP assed Ġon Ġto Ġp tx as Ġas Ġ-- max r reg count Ġ< N > ĊĠĠĠĠĠĠĠ ĠN Ġis Ġa Ġpositive Ġinteger . ĊĠĠĠ ĠSpecify Ġthe Ġmaximum Ġnumber Ġof Ġregisters Ġthat ĠGPU Ġfunctions Ġcan Ġuse . ĊĠĠĠ ĠUnt il Ġa Ġfunction - specific Ġlimit , Ġa Ġhigher Ġvalue Ġwill Ġgenerally Ġincrease ĊĠĠĠ Ġthe Ġperformance Ġof Ġindividual ĠGPU Ġthreads Ġthat Ġexecute Ġthis Ġfunction . ĊĠĠĠ ĠHowever , Ġbecause Ġthread Ġregisters Ġare Ġallocated Ġfrom Ġa Ġglobal Ġregister ĊĠĠĠ Ġpool Ġon Ġeach ĠGPU , Ġa Ġhigher Ġvalue Ġof Ġthis Ġoption Ġwill Ġalso Ġreduce Ġthe ĊĠĠĠ Ġmaximum Ġthread Ġblock Ġsize , Ġthere by Ġreducing Ġthe Ġamount Ġof Ġthread ĊĠĠĠ Ġparallel ism . ĠHence , Ġa Ġgood Ġmax r reg count Ġvalue Ġis Ġthe Ġresult Ġof Ġa ĊĠĠĠ Ġtrade - off . ĊĠĠĠ ĠIf Ġthis Ġoption Ġis Ġnot Ġspecified , Ġthen Ġno Ġmaximum Ġis Ġassumed . ĠOtherwise ĊĠĠĠ Ġthe Ġspecified Ġvalue Ġwill Ġbe Ġrounded Ġto Ġthe Ġnext Ġmultiple Ġof Ġ 4 Ġregisters ĊĠĠĠ Ġuntil Ġthe ĠGPU Ġspecific Ġmaximum Ġof Ġ 1 2 8 Ġregisters . Ċ Ċ - cl - nv - opt - level Ġ< N > ĊĠĠĠ ĠP assed Ġon Ġto Ġp tx as Ġas Ġ-- opt - level Ġ< N > ĊĠĠĠĠĠĠĠ ĠN Ġis Ġa Ġpositive Ġinteger , Ġor Ġ 0 Ġ( no Ġoptimization ). ĊĠĠĠ ĠSpecify Ġoptimization Ġlevel . ĊĠĠĠ ĠDefault Ġvalue : ĠĠ 3 . Ċ Ċ - cl - nv - verbose ĊĠĠĠ ĠP assed Ġon Ġto Ġp tx as Ġas Ġ-- verbose ĊĠĠĠ ĠEnable Ġverbose Ġmode . ĊĠĠĠ ĠOutput Ġwill Ġbe Ġreported Ġin Ġthe Ġbuild Ġlog Ġ( accessible Ġthrough Ġthe ĊĠĠĠ Ġcallback Ġparameter Ġto Ġcl Build Program ). "" ")} ĊĠĠĠĠĠĠĠ Ġ""" Ċ } Ċ val Ġnv _ pragma _ un roll Ġ= ĠEXT _ FLAG . native Class CL (" nv _ pragma _ un roll ", ĠNV ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠWhen Ġtrue , Ġthe Ġ$ extension Link Ġextension Ġis Ġsupported . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Overview </ h 5 > ĊĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġextends Ġthe ĠOpen CL ĠC Ġlanguage Ġwith Ġa Ġhint Ġthat Ġallows Ġloops Ġto Ġbe Ġun rolled . ĠThis Ġpragma Ġmust Ġbe Ġused Ġfor Ġa Ġloop Ġand Ġcan Ġbe Ġused Ġto ĊĠĠĠĠĠĠĠ Ġspecify Ġfull Ġun rolling Ġor Ġpartial Ġun rolling Ġby Ġa Ġcertain Ġamount . ĠThis Ġis Ġa Ġhint Ġand Ġthe Ġcompiler Ġmay Ġignore Ġthis Ġpragma Ġfor Ġany Ġreason . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Go als </ h 5 > ĊĊĠĠĠĠĠĠĠ ĠThe Ġprincipal Ġgoal Ġof Ġthe Ġpragma Ġun roll Ġis Ġto Ġimprove Ġthe Ġperformance Ġof Ġloops Ġvia Ġun rolling . ĠTypically Ġthis Ġenables Ġother Ġoptimizations Ġor Ġimproves ĊĠĠĠĠĠĠĠ Ġinstruction Ġlevel Ġparallel ism Ġof Ġa Ġthread . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Details </ h 5 > ĊĊĠĠĠĠĠĠĠ ĠA Ġuser Ġmay Ġspecify Ġthat Ġa Ġloop Ġin Ġthe Ġsource Ġprogram Ġbe Ġun rolled . ĠThis Ġis Ġdone Ġvia Ġa Ġpragma . ĠThe Ġsyntax Ġof Ġthis Ġpragma Ġis Ġas Ġfollows ĊĊĠĠĠĠĠĠĠ Ġ{@ code Ġ\# pragma Ġun roll Ġ[ un roll - factor ]} ĊĊĠĠĠĠĠĠĠ ĠThe Ġpragma Ġun roll Ġmay Ġoptionally Ġspecify Ġan Ġun roll Ġfactor . ĠThe Ġpragma Ġmust Ġbe Ġplaced Ġimmediately Ġbefore Ġthe Ġloop Ġand Ġonly Ġapplies Ġto Ġthat Ġloop . ĊĊĠĠĠĠĠĠĠ ĠIf Ġun roll Ġfactor Ġis Ġnot Ġspecified Ġthen Ġthe Ġcompiler Ġwill Ġtry Ġto Ġdo Ġcomplete Ġor Ġfull Ġun rolling Ġof Ġthe Ġloop . ĠIf Ġa Ġloop Ġun roll Ġfactor Ġis Ġspecified Ġthe ĊĠĠĠĠĠĠĠ Ġcompiler Ġwill Ġperform Ġpartial Ġloop Ġun rolling . ĠThe Ġloop Ġfactor , Ġif Ġspecified , Ġmust Ġbe Ġa Ġcompile Ġtime Ġnon Ġnegative Ġinteger Ġconstant . ĊĊĠĠĠĠĠĠĠ ĠA Ġloop Ġun roll Ġfactor Ġof Ġ 1 Ġmeans Ġthat Ġthe Ġcompiler Ġshould Ġnot Ġun roll Ġthe Ġloop . ĊĊĠĠĠĠĠĠĠ ĠA Ġcomplete Ġun roll Ġspecification Ġhas Ġno Ġeffect Ġif Ġthe Ġtrip Ġcount Ġof Ġthe Ġloop Ġis Ġnot Ġcompile - time Ġcomp utable . ĊĠĠĠĠĠĠĠ Ġ""" Ċ }