package Ġio . vex el abs . bit builder . llvm . ir Ċ Ċ import Ġio . vex el abs . bit builder . llvm . internal . contracts . Contains Reference Ċ import Ġio . vex el abs . bit builder . llvm . internal . contracts . Disposable Ċ import Ġio . vex el abs . bit builder . llvm . internal . util . to LL V MB ool Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Alloc a Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Atomic Cmp X chg Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Atomic RM W Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Br Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Call Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Catch Pad Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Catch Ret Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Catch Switch Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Cleanup Pad Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Cleanup Ret Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Fence Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Indirect Br Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Invoke Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Landing Pad Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Load Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Phi Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Resume Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Ret Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Select Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Store Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Switch Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . Un reachable Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . instructions . VA Arg Instruction Ċ import Ġio . vex el abs . bit builder . llvm . ir . types . Float Type Ċ import Ġio . vex el abs . bit builder . llvm . ir . types . FunctionType Ċ import Ġio . vex el abs . bit builder . llvm . ir . types . Int Type Ċ import Ġio . vex el abs . bit builder . llvm . ir . types . Pointer Type Ċ import Ġio . vex el abs . bit builder . llvm . ir . values . Constant Value Ċ import Ġio . vex el abs . bit builder . llvm . ir . values . Function Value Ċ import Ġorg . byte deco . javac pp . Pointer Pointer Ċ import Ġorg . byte deco . llvm . LLVM . LLVM Builder Ref Ċ import Ġorg . byte deco . llvm . global . LLVM Ċ Ċ /** Ċ Ġ* ĠInterface Ġto Ġllvm :: IR Builder Ċ Ġ* Ċ Ġ* ĠThe Ġbuilder Ġis Ġthe ĠAPI Ġfor Ġcreating Ġinstructions Ġand Ġinserting Ġthem Ġinto Ċ Ġ* Ġfunctions Ġand Ġbasic Ġblocks . Ċ Ġ* Ċ Ġ* Ġ@ see ĠLLVM Builder Ref Ċ Ġ*/ Ċ public Ġclass ĠBuilder Ġpublic Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext Ġ= ĠContext . getGlobal Context () Ċ ) Ġ: ĠDis posable , ĠContains Reference < LLVM Builder Ref > Ġ{ ĊĠĠĠ Ġpublic Ġoverride Ġvar Ġvalid : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġpublic Ġoverride Ġvar Ġref : ĠLLVM Builder Ref Ġ= ĠLLVM . LLVM Create Builder In Context ( ĊĠĠĠĠĠĠĠ Ġcontext . ref ĊĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinternal Ġset ĊĊĠĠĠ Ġpublic Ġconstructor ( llvm Ref : ĠLLVM Builder Ref ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġref Ġ= Ġllvm Ref ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPosition Ġthe Ġbuilder Ġat Ġthe Ġ[ block ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠBy Ġdefault , Ġthis Ġpositions Ġthe Ġend Ġof Ġthe Ġ[ block ]. ĠIf Ġ[ instruction ] Ġis ĊĠĠĠĠ Ġ* Ġpassed Ġand Ġ[ instruction ] Ġis Ġinside Ġthe Ġgiven Ġ[ block ], Ġthe Ġbuilder Ġwill ĊĠĠĠĠ Ġ* Ġbe Ġposition ed Ġafter Ġthis Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LL V MP osition Builder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġset Position ( block : ĠBasic Block , Ġinstruction : ĠInstruction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LL V MP osition Builder ( ref , Ġblock . ref , Ġinstruction . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPosition Ġthe Ġbuilder Ġbefore Ġthe Ġgiven Ġ[ instruction ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LL V MP osition Builder Before ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġset Position Before ( instruction : ĠInstruction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LL V MP osition Builder Before ( ref , Ġinstruction . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPosition Ġthe Ġbuilder Ġat Ġthe Ġend Ġof Ġthe Ġ[ block ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LL V MP osition Builder At End ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġset Position At End ( block : ĠBasic Block ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LL V MP osition Builder At End ( ref , Ġblock . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġthe Ġinsertion Ġpoint ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġer ases Ġthe Ġcurrent Ġpoint Ġof Ġinsertion Ġwhich Ġmeans Ġthe Ġuser Ġhas Ġto ĊĠĠĠĠ Ġ* Ġset Ġa Ġnew Ġinsertion Ġpoint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Clear Insertion Position ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LLVM Clear Insertion Position ( ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġblock Ġthe Ġbuilder Ġis Ġcurrently Ġinside ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġreturns Ġnull Ġif Ġthe Ġbuilder Ġisn 't Ġposition ed Ġanywhere , Ġfor ĊĠĠĠĠ Ġ* Ġexample Ġcleared Ġby Ġ[ clear ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Get Insert Block ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Insertion Block (): ĠBasic Block ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbb Ġ= ĠLLVM . LLVM Get Insert Block ( ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbb ?. let Ġ{ ĠBasic Block ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInsert Ġan Ġinstruction Ġinto Ġthe Ġcurrent Ġinsertion Ġpoint ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ name ] Ġis Ġpassed , Ġthen Ġthe Ġreceiving Ġ[ instruction ] Ġshould Ġnot Ġhave ĊĠĠĠĠ Ġ* Ġa Ġname . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Insert Into Builder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġinsert ( instruction : ĠInstruction , Ġname : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Insert Into Builder WithName ( ref , Ġinstruction . ref , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Insert Into Builder ( ref , Ġinstruction . ref ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġcurrent Ġdebug Ġlocation Ġfor Ġthis Ġbuilder Ġif Ġit Ġexists ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM GetCurrent Debug Location 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun ĠgetCurrent Debug Location (): ĠMetadata ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġloc Ġ= ĠLLVM . LLVM GetCurrent Debug Location 2 ( ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġloc ?. let Ġ{ ĠMetadata ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġcurrent Ġdebug Ġlocation Ġfor Ġthis Ġbuilder ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Set Current Debug Location 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun ĠsetCurrent Debug Location ( location : ĠMetadata ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LLVM Set Current Debug Location 2 ( ref , Ġlocation . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttempt Ġto Ġuse Ġthe Ġbuilder 's Ġdebug Ġlocation Ġto Ġset Ġthe Ġ[ instruction ]' s ĊĠĠĠĠ Ġ* Ġdebug Ġlocation ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġbuilder Ġdoesn 't Ġhave Ġa Ġdebug Ġlocation , Ġnothing Ġhappens . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Set Inst Debug Location ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġset Instruction Debug Location ( instruction : ĠInstruction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LLVM Set Inst Debug Location ( ref , Ġinstruction . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġdefault Ġfp Ġmath Ġmetadata Ġfor Ġthe Ġbuilder Ġif Ġit Ġexists ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Builder GetDefault FP Math Tag ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun ĠgetDefault FP Math Tag (): ĠMetadata ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= ĠLLVM . LLVM Builder GetDefault FP Math Tag ( ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtag ?. let Ġ{ ĠMetadata ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġdefault Ġfp Ġmath Ġmetadata Ġfor Ġthe Ġbuilder ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Builder SetDefault FP Math Tag ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun ĠsetDefault FP Math Tag ( tag : ĠMetadata ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLLVM . LLVM Builder SetDefault FP Math Tag ( ref , Ġtag . ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġglobal Ġstring Ġand Ġreturn Ġits Ġvalue ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ as Pointer ] Ġis Ġtrue , Ġthis Ġwill Ġbuild Ġa Ġpointer Ġto Ġthe Ġstring . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Global String ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġbuild Global String ( ĊĠĠĠĠĠĠĠ Ġstring : ĠString , ĊĠĠĠĠĠĠĠ Ġglobal Name : ĠString , ĊĠĠĠĠĠĠĠ Ġas Pointer : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠValue Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġif Ġ( as Pointer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Global StringPtr ( ref , Ġstring , Ġglobal Name ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Global String ( ref , Ġstring , Ġglobal Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠValue ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġreturn Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġgiven Ġ[ value ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Ret ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Ret ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue ĊĠĠĠ Ġ): ĠRet Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Ret ( ref , Ġvalue . ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġreturn Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġinstruction Ġreturns Ġvoid Ġinstead Ġof Ġa Ġvalue ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Ret Void ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Ret Void (): ĠRet Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Ret Void ( ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġreturn Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġsequence Ġof ĠN Ġinsert value Ġinstructions , Ġwith Ġone ĠValue ĊĠĠĠĠ Ġ* Ġfrom Ġthe Ġ[ values ] Ġarray Ġeach , Ġthat Ġbuild Ġa Ġaggregate ĊĠĠĠĠ Ġ* Ġreturn Ġvalue Ġone Ġvalue Ġat Ġa Ġtime , Ġand Ġa Ġret Ġinstruction Ġto Ġreturn ĊĠĠĠĠ Ġ* Ġthe Ġresulting Ġaggregate Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġthis Ġcall Ġto Ġwork , Ġthe Ġbuilder Ġmust Ġbe Ġplaced Ġinside Ġa ĊĠĠĠĠ Ġ* Ġfunction Ġas Ġit Ġverifies Ġthe Ġreturn Ġtype Ġwith Ġthe Ġaggregate Ġvalues . ĊĠĠĠĠ Ġ* ĠF ailing Ġto Ġfulfill Ġthis Ġrequirement Ġcrashes Ġthe ĠJVM ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Aggregate Ret ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Aggregate Ret ( ĊĠĠĠĠĠĠĠ Ġvalues : ĠList < Value > ĊĠĠĠ Ġ): ĠRet Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġptr Ġ= ĠPointer Pointer (* values . map Ġ{ Ġit . ref Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Aggregate Ret ( ref , Ġptr , Ġvalues . size ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġbranch Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġan Ġun conditional Ġbranch . ĠUse Ġ[ create Cond Br ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Br ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Br ( ĊĠĠĠĠĠĠĠ Ġdestination : ĠBasic Block ĊĠĠĠ Ġ): ĠBr Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Br ( ref , Ġdestination . ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBr Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġbranch Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠEvalu ates Ġ[ condition ], Ġif Ġit 's Ġtruth y Ġit Ġwill Ġbranch Ġto Ġ[ truth y ] ĊĠĠĠĠ Ġ* Ġotherwise Ġit Ġwill Ġbranch Ġto Ġ[ f alsy ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Cond Br ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Cond Br ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠValue , ĊĠĠĠĠĠĠĠ Ġtruth y : ĠBasic Block , ĊĠĠĠĠĠĠĠ Ġf alsy : ĠBasic Block ĊĠĠĠ Ġ): ĠBr Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Cond Br ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcondition . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtruth y . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf alsy . ref ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBr Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġswitch Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġswitch Ġis Ġa Ġgl or ified Ġbranch , Ġit Ġtakes Ġa Ġsingle Ġinteger ĊĠĠĠĠ Ġ* Ġ[ condition ] Ġand Ġa Ġ[ default ] Ġcase Ġwhich Ġwill Ġbe Ġbr an ched Ġif Ġnone Ġof ĊĠĠĠĠ Ġ* Ġthe Ġother Ġcases Ġmatch . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠYou Ġmay Ġadd Ġcases Ġto Ġthe Ġinstruction Ġafter Ġconstruction . ĠYou Ġmay ĊĠĠĠĠ Ġ* Ġhint Ġat Ġhow Ġmany Ġcases Ġthe Ġswitch Ġexpects Ġwith Ġ[ expected Cases ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Switch ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Switch ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠValue , ĊĠĠĠĠĠĠĠ Ġdefault : ĠBasic Block , ĊĠĠĠĠĠĠĠ Ġexpected Cases : ĠInt Ġ= Ġ 1 0 ĊĠĠĠ Ġ): ĠSwitch Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Switch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcondition . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Cases ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSwitch Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġindirect Ġbranch Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠCreate Ġan Ġindirect Ġbreak Ġto Ġthe Ġ[ destination ] Ġaddress . ĠEach ĊĠĠĠĠ Ġ* Ġdestination Ġadded Ġto Ġthis Ġinstruction Ġare Ġdest inations Ġthe ĊĠĠĠĠ Ġ* Ġ[ destination ] Ġaddress Ġmay Ġpoint Ġto . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDest inations Ġcan Ġbe Ġadded Ġon Ġthe Ġreturned Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Indirect Br ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Indirect Br ( ĊĠĠĠĠĠĠĠ Ġdestination : ĠValue , ĊĠĠĠĠĠĠĠ Ġexpected Cases : ĠInt Ġ= Ġ 1 0 ĊĠĠĠ Ġ): ĠIn direct Br Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Indirect Br ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Cases ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠIn direct Br Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġinvoke Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInvoke Ġmoves Ġcontrol Ġto Ġthe Ġtarget Ġ[ function ] Ġand Ġcontinues Ġwith ĊĠĠĠĠ Ġ* Ġeither Ġa Ġ[ normal ] Ġor Ġa Ġ[ catch ] Ġlabel . ĠIf Ġthe Ġ[ function ] Ġreturns , ĊĠĠĠĠ Ġ* Ġthen Ġcontrol Ġis Ġmoved Ġto Ġ[ normal ]. ĠIf Ġthe Ġcal lee , Ġor Ġany Ġindirect ĊĠĠĠĠ Ġ* Ġcal le es Ġreturns Ġvia Ġresume Ġthen Ġcontrol Ġis Ġmoved Ġto Ġ[ catch ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġcal lee Ġdid Ġreturn , Ġit Ġwill Ġbe Ġmoved Ġinto Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Invoke 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Invoke ( ĊĠĠĠĠĠĠĠ Ġfunction Type : ĠFunction Type , ĊĠĠĠĠĠĠĠ Ġfunction : ĠFunction Value , ĊĠĠĠĠĠĠĠ Ġarguments : ĠList < Value >, ĊĠĠĠĠĠĠĠ Ġnormal : ĠBasic Block , ĊĠĠĠĠĠĠĠ Ġcatch : ĠBasic Block , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠInvoke Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠPointer Pointer (* arguments . map Ġ{ Ġit . ref Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Invoke 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Type . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠInvoke Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġunreachable Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUn reachable Ġinstructions Ġinform Ġthe Ġoptimizer Ġthat Ġcode Ġbelow Ġthe ĊĠĠĠĠ Ġ* Ġinstruction Ġare Ġnot Ġreachable . ĠThis Ġcan Ġbe Ġused Ġto Ġimplement Ġno return ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Un reachable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Un reachable (): ĠUn reachable Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Un reachable ( ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠUn reachable Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġresume Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠResume Ġresume s Ġthe Ġpropagation Ġof Ġan Ġin - flight Ġexception Ġwhich Ġwas ĊĠĠĠĠ Ġ* Ġun win ded Ġat Ġa Ġlanding pad ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Resume ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Resume ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue ĊĠĠĠ Ġ): ĠResume Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Resume ( ref , Ġvalue . ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResume Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġlanding Ġpad Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġlanding Ġpad Ġis Ġa Ġcatch Ġclause Ġfor ĠLLVM 's Ġexception Ġhandling ĊĠĠĠĠ Ġ* Ġsystem . ĠThe Ġresult Ġof Ġthe Ġlanding pad Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠClause s Ġcan Ġbe Ġadded Ġon Ġthe Ġreturned Ġinstructions ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Landing Pad ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Landing Pad ( ĊĠĠĠĠĠĠĠ Ġcat ches Type : ĠType , ĊĠĠĠĠĠĠĠ Ġperson ality Function : ĠFunction Value , ĊĠĠĠĠĠĠĠ Ġexpected Clause s : ĠInt Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠLand ing Pad Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Landing Pad ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcat ches Type . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson ality Function . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Clause s , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLand ing Pad Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcleanup Ġreturn Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġcleanup Ġret Ġexits Ġan Ġexisting Ġcleanup Ġpad Ġinstruction , Ġname ly ĊĠĠĠĠ Ġ* Ġ[ cleanup ]. ĠIt Ġalso Ġhas Ġan Ġoptional Ġ[ success or ] Ġwhich Ġwill Ġbe Ġthe ĊĠĠĠĠ Ġ* Ġbasic Ġblock Ġto Ġmove Ġto Ġafter . ĠThis Ġmust Ġbegin Ġwith Ġeither Ġa ĊĠĠĠĠ Ġ* Ġcleanup pad Ġor Ġa Ġcatch switch Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Cleanup Ret ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Cleanup Ret ( ĊĠĠĠĠĠĠĠ Ġcleanup : ĠCleanup Pad Instruction , ĊĠĠĠĠĠĠĠ Ġsuccess or : ĠBasic Block ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠCleanup Ret Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Cleanup Ret ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcleanup . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess or ?. ref ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCleanup Ret Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcatch Ġreturn Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠCatch Ġret Ġends Ġand Ġexisting Ġin - flight Ġexception Ġwhose Ġun wind ing ĊĠĠĠĠ Ġ* Ġwas Ġinter up pt ed Ġwith Ġa Ġ[ catch pad ] Ġinstruction . Ġgets Ġa Ġchance Ġto ĊĠĠĠĠ Ġ* Ġexecute Ġarbitrary Ġcode Ġto , Ġfor Ġexample , Ġdestroy Ġthe Ġactive ĊĠĠĠĠ Ġ* Ġexception . ĠControl Ġthen Ġtransfers Ġto Ġ[ success or ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Catch Ret ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Catch Ret ( ĊĠĠĠĠĠĠĠ Ġcatch pad : ĠCatch Pad Instruction , ĊĠĠĠĠĠĠĠ Ġsuccess or : ĠBasic Block ĊĠĠĠ Ġ): ĠCatch Ret Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Catch Ret ( ref , Ġcatch pad . ref , Ġsuccess or . ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCatch Ret Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcatch Ġpad Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ parent ] Ġoperand Ġmust Ġalways Ġbe Ġa Ġtoken Ġproduced Ġby Ġa ĊĠĠĠĠ Ġ* Ġcatch switch Ġinstruction Ġin Ġa Ġpre decessor Ġblock . ĠThis Ġensures Ġthat ĊĠĠĠĠ Ġ* Ġeach Ġcatch pad Ġhas Ġexactly Ġone Ġpre decessor Ġblock , Ġand Ġit Ġalways ĊĠĠĠĠ Ġ* Ġtermin ates Ġin Ġa Ġcatch switch . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ arguments ] Ġcorrespond Ġto Ġwhatever Ġinformation Ġthe Ġperson ality ĊĠĠĠĠ Ġ* Ġroutine Ġrequires Ġto Ġknow Ġif Ġthis Ġis Ġan Ġappropriate Ġhandler Ġfor Ġthe ĊĠĠĠĠ Ġ* Ġexception . ĠControl Ġwill Ġtransfer Ġto Ġthe Ġcatch pad Ġif Ġthis Ġis Ġthe ĊĠĠĠĠ Ġ* Ġfirst Ġappropriate Ġhandler Ġfor Ġthe Ġexception . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ variable ] Ġhas Ġthe Ġtype Ġtoken Ġand Ġis Ġused Ġto Ġmatch Ġthe Ġcatch pad ĊĠĠĠĠ Ġ* Ġto Ġcorresponding Ġcatch rets Ġand Ġother Ġnested Ġexception Ġhandling Ġp ads . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Catch Pad ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Catch Pad ( ĊĠĠĠĠĠĠĠ Ġparent : ĠValue , ĊĠĠĠĠĠĠĠ Ġarguments : ĠList < Value >, ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠCatch Pad Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠPointer Pointer (* arguments . map Ġ{ Ġit . ref Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Catch Pad ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCatch Pad Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcleanup Ġpad Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġcleanup Ġpad Ġspecifies Ġthat Ġa Ġbasic Ġblock Ġis Ġa Ġcleanup Ġblock . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ arguments ] Ġcorrespond Ġto Ġwhatever Ġadditional Ġinformation Ġthe ĊĠĠĠĠ Ġ* Ġperson ality Ġfunction Ġrequires Ġto Ġexecute Ġthe Ġcleanup . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ variable ] Ġhas Ġthe Ġtype Ġtoken Ġand Ġis Ġused Ġto Ġmatch Ġthe Ġcleanup pad ĊĠĠĠĠ Ġ* Ġto Ġcorresponding Ġcleanup rets . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Cleanup Pad ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Cleanup Pad ( ĊĠĠĠĠĠĠĠ Ġparent : ĠValue , ĊĠĠĠĠĠĠĠ Ġarguments : ĠList < Value >, ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠCleanup Pad Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠPointer Pointer (* arguments . map Ġ{ Ġit . ref Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Cleanup Pad ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCleanup Pad Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcatch Ġswitch Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġcatch Ġswitch Ġis Ġused Ġto Ġdescribe Ġa Ġset Ġof Ġexception Ġhandlers . ĊĠĠĠĠ Ġ* ĠThe Ġ[ un wind ] Ġargument Ġis Ġanother Ġbasic Ġblock Ġwhich Ġbegins Ġwith ĊĠĠĠĠ Ġ* Ġeither Ġa Ġcleanup pad Ġor Ġa Ġcatch switch . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[ handlers ] Ġis Ġthe Ġamount Ġadded Ġhandlers Ġexpected . ĠHand lers ĊĠĠĠĠ Ġ* Ġare Ġadded Ġon Ġthe Ġreturned Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Catch Switch ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Catch Switch ( ĊĠĠĠĠĠĠĠ Ġparent : ĠValue , ĊĠĠĠĠĠĠĠ Ġun wind : ĠBasic Block , ĊĠĠĠĠĠĠĠ Ġhandlers : ĠInt Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠCatch Switch Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Catch Switch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun wind . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandlers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCatch Switch Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġadd Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAdd Ġreturns Ġthe Ġsum Ġof Ġtwo Ġintegers Ġor Ġvectors Ġof Ġintegers , Ġ[ lhs ] ĊĠĠĠĠ Ġ* Ġand Ġ[ rhs ]. ĠYou Ġcan Ġapply Ġthe Ġ[ nu w ] Ġand Ġ[ n sw ] Ġflags Ġvia Ġthe Ġ[ nu w ] Ġand ĊĠĠĠĠ Ġ* Ġ[ n sw ] Ġarguments ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Add ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Add ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString , ĊĠĠĠĠĠĠĠ Ġn sw : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġn uw : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (!( n sw Ġ&& Ġn uw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Instruction Ġcan Ġnot Ġdeclare Ġboth ĠNU W Ġ& Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NS W " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn sw Ġ-> ĠLLVM . LLVM Build NS W Add ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn uw Ġ-> ĠLLVM . LLVM Build NU W Add ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLLVM . LLVM Build Add ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf add Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠF add Ġreturns Ġthe Ġsum Ġof Ġtwo Ġfloats Ġor Ġvectors Ġof Ġfloats . ĠThe ĊĠĠĠĠ Ġ* Ġresult Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build F Add ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate F Add ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build F Add ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġsub Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSub Ġreturns Ġthe Ġdifference Ġbetween Ġtwo Ġintegers Ġor Ġvectors Ġof ĊĠĠĠĠ Ġ* Ġintegers , Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠYou Ġcan Ġapply Ġthe Ġ[ nu w ] Ġand Ġ[ n sw ] Ġflags ĊĠĠĠĠ Ġ* Ġvia Ġthe Ġ[ nu w ] Ġand Ġ[ n sw ] Ġarguments ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Sub ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Sub ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString , ĊĠĠĠĠĠĠĠ Ġn sw : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġn uw : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (!( n sw Ġ&& Ġn uw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Instruction Ġcan Ġnot Ġdeclare Ġboth ĠNU W Ġ& Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NS W " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn sw Ġ-> ĠLLVM . LLVM Build NS W Sub ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn uw Ġ-> ĠLLVM . LLVM Build NU W Sub ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLLVM . LLVM Build Sub ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf sub Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġf sub Ġreturns Ġthe Ġdifference Ġof Ġtwo Ġfloats Ġor Ġvectors Ġof Ġfloats . ĠThe ĊĠĠĠĠ Ġ* Ġresult Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build F Sub ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate F Sub ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build F Sub ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġmul Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMul Ġreturns Ġthe Ġproduct Ġof Ġtwo Ġintegers Ġor Ġvectors Ġof Ġintegers , ĊĠĠĠĠ Ġ* Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠYou Ġcan Ġapply Ġthe Ġ[ nu w ] Ġand Ġ[ n sw ] Ġflags Ġvia Ġthe ĊĠĠĠĠ Ġ* Ġ[ nu w ] Ġand Ġ[ n sw ] Ġarguments ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Mul ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Mul ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString , ĊĠĠĠĠĠĠĠ Ġn sw : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġn uw : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (!( n sw Ġ&& Ġn uw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Instruction Ġcan Ġnot Ġdeclare Ġboth ĠNU W Ġ& Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NS W " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn sw Ġ-> ĠLLVM . LLVM Build NS WM ul ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn uw Ġ-> ĠLLVM . LLVM Build NU WM ul ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLLVM . LLVM Build Mul ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf mul Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠF Mul Ġreturns Ġthe Ġproduct Ġof Ġtwo Ġfloats Ġor Ġvectors Ġof Ġfloats . ĠThe ĊĠĠĠĠ Ġ* Ġresult Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FM ul ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Mul ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġs div Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠS div Ġreturns Ġthe Ġsigned Ġinteger Ġquot ient Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠIf ĊĠĠĠĠ Ġ* Ġ[ exact ] Ġis Ġapplied Ġand Ġ[ lhs ] Ġis Ġnot Ġan Ġexact Ġmultiple Ġof Ġ[ rhs ], Ġa ĊĠĠĠĠ Ġ* Ġpo ison Ġvalue Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build SD iv ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate SD iv ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString , ĊĠĠĠĠĠĠĠ Ġexact : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġif Ġ( exact ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Exact SD iv ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build SD iv ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġu div Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠU div Ġreturns Ġthe Ġunsigned Ġinteger Ġquot ient Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠIf ĊĠĠĠĠ Ġ* Ġ[ exact ] Ġis Ġapplied Ġand Ġ[ lhs ] Ġis Ġnot Ġan Ġexact Ġmultiple Ġof Ġ[ rhs ], Ġa ĊĠĠĠĠ Ġ* Ġpo ison Ġvalue Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build UD iv ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate UD iv ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString , ĊĠĠĠĠĠĠĠ Ġexact : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġif Ġ( exact ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Exact UD iv ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build UD iv ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf div Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠF div Ġreturns Ġthe Ġfloating Ġpoint Ġquot ient Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠThe ĊĠĠĠĠ Ġ* Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FD iv ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FD iv ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FD iv ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġ ure m Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠU rem Ġtakes Ġthe Ġunsigned Ġvalue Ġof Ġthe Ġremainder Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build UR em ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate UR em ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build UR em ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġs rem Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠS rem Ġtakes Ġthe Ġsigned Ġvalue Ġof Ġthe Ġremainder Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build UR em ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate S Rem ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build S Rem ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf rem Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠU rem Ġtakes Ġthe Ġfloating Ġvalue Ġof Ġthe Ġremainder Ġof Ġ[ lhs ] Ġand Ġ[ rhs ], ĊĠĠĠĠ Ġ* Ġboth Ġwhich Ġare Ġfloating Ġpoint Ġvalues ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build UR em ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate F Rem ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build F Rem ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġshl Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSh l Ġreturns Ġ[ lhs ] Ġshifted Ġ[ rhs ] Ġbits Ġto Ġthe Ġleft . ĠThe Ġreturned ĊĠĠĠĠ Ġ* Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Sh l ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Sh l ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Sh l ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġl shr Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠL shr Ġreturns Ġ[ lhs ] Ġshifted Ġ[ rhs ] Ġbits Ġto Ġthe Ġleft Ġwith Ġzero Ġfill . ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build L Sh r ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate L Sh r ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build L Sh r ( ref , Ġrhs . ref , Ġlhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġas hr Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA shr Ġreturns Ġ[ lhs ] Ġshifted Ġ[ rhs ] Ġbits Ġto Ġthe Ġright . ĠThe Ġreturned ĊĠĠĠĠ Ġ* Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build AS hr ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate AS hr ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build AS hr ( ref , Ġrhs . ref , Ġlhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġand Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAnd Ġreturns Ġthe Ġbit wise Ġlogical Ġand Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠThe ĊĠĠĠĠ Ġ* Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build And ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate And ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build And ( ref , Ġrhs . ref , Ġlhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġor Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOr Ġreturns Ġthe Ġbit wise Ġlogical Ġor Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠThe Ġreturned ĊĠĠĠĠ Ġ* Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Or ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Or ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Or ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġxor Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠX or Ġreturns Ġthe Ġbit wise Ġlogical Ġexclusive Ġof Ġ[ lhs ] Ġand Ġ[ rhs ]. ĠThe ĊĠĠĠĠ Ġ* Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Xor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Xor ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Xor ( ref , Ġlhs . ref , Ġrhs . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġneg Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠLLVM Ġimplements Ġneg Ġwith Ġsub . ĠSub Ġreturns Ġthe Ġneg ation Ġof Ġ[ value ]. ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Neg ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġbuild Neg ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString , ĊĠĠĠĠĠĠĠ Ġn uw : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġn sw : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (!( n sw Ġ&& Ġn uw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Instruction Ġcan Ġnot Ġdeclare Ġboth ĠNU W Ġ& Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NS W " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn sw Ġ-> ĠLLVM . LLVM Build NS WN eg ( ref , Ġvalue . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn uw Ġ-> ĠLLVM . LLVM Build NU WN eg ( ref , Ġvalue . ref , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLLVM . LLVM Build Neg ( ref , Ġvalue . ref , Ġvariable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf neg Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠF neg Ġreturns Ġthe Ġneg ation Ġof Ġ[ value ]. ĠThe Ġreturned Ġvalue Ġis Ġstored ĊĠĠĠĠ Ġ* Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FN eg ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FN eg ( value : ĠValue , Ġvariable : ĠString ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FN eg ( ref , Ġvalue . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġnot Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠLLVM Ġimplements Ġnot Ġwith Ġxor . ĠX or Ġreturns Ġthe Ġbit wise Ġlogical ĊĠĠĠĠ Ġ* Ġexclusive Ġof Ġits Ġtwo Ġoperands ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Not ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Not ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Not ( ref , Ġvalue . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġcall Ġto Ġthe Ġbuilt - in Ġmalloc Ġfunction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto Ġallocate Ġan Ġarray / multiple Ġitems , Ġpass Ġan ĊĠĠĠĠ Ġ* Ġ[ element Count ] Ġwhich Ġspecifies Ġhow Ġmany Ġitems Ġyou Ġwant ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Malloc ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Malloc ( ĊĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġelement Count : ĠValue ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠCall Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġif Ġ( element Count Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Array Malloc ( ref , Ġtype . ref , Ġelement Count . ref , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Malloc ( ref , Ġtype . ref , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCall Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġcall Ġto Ġthe Ġbuilt - in Ġmemset Ġfunction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Mem Set ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Mem Set ( ĊĠĠĠĠĠĠĠ Ġptr : ĠValue , ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġlength : ĠValue , ĊĠĠĠĠĠĠĠ Ġalign : ĠInt ĊĠĠĠ Ġ): ĠCall Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Mem Set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġptr . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalign ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCall Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġcall Ġto Ġthe Ġbuilt - in Ġmemcpy Ġfunction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Mem C py ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Mem C py ( ĊĠĠĠĠĠĠĠ Ġdestination : ĠValue , ĊĠĠĠĠĠĠĠ Ġdestination Alignment : ĠInt , ĊĠĠĠĠĠĠĠ Ġsource : ĠValue , ĊĠĠĠĠĠĠĠ Ġsource Alignment : ĠInt , ĊĠĠĠĠĠĠĠ Ġsize : ĠValue ĊĠĠĠ Ġ): ĠCall Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Mem C py ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Alignment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Alignment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize . ref ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCall Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġcall Ġto Ġthe Ġbuilt - in Ġmem move Ġfunction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Mem Move ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Mem Move ( ĊĠĠĠĠĠĠĠ Ġdestination : ĠValue , ĊĠĠĠĠĠĠĠ Ġdestination Alignment : ĠInt , ĊĠĠĠĠĠĠĠ Ġsource : ĠValue , ĊĠĠĠĠĠĠĠ Ġsource Alignment : ĠInt , ĊĠĠĠĠĠĠĠ Ġsize : ĠValue ĊĠĠĠ Ġ): ĠCall Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Mem Move ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Alignment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Alignment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize . ref ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCall Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġalloca Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġpassed Ġ[ type ] Ġmust Ġbe Ġsized . ĠYou Ġmay Ġspecify Ġan Ġamount Ġof ĊĠĠĠĠ Ġ* Ġobjects Ġto Ġbe Ġallocated , Ġdefault Ġis Ġone . ĠThis Ġis Ġdone Ġby ĊĠĠĠĠ Ġ* Ġspecifying Ġthe Ġ[ element Count ] Ġargument . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Alloc a ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Alloc a ( ĊĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġelement Count : ĠValue ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠAlloc a Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġif Ġ( element Count Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Array Alloc a ( ref , Ġtype . ref , Ġelement Count . ref , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build Alloc a ( ref , Ġtype . ref , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAlloc a Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġcall Ġto Ġthe Ġbuilt - in Ġfree Ġfunction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Free ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Free ( ptr : ĠValue ): ĠCall Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Free ( ref , Ġptr . ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCall Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġload Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠLoads Ġ[ dere ference ] Ġinto Ġmemory Ġand Ġassigns Ġit Ġthe Ġtype Ġ[ type ]. ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġis Ġstored Ġin Ġa Ġnew Ġvariable Ġin Ġthe ĠIR Ġnamed Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Load 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Load ( ĊĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġdere ference : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠLoad Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Load 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdere ference . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLoad Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġstore Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWrites Ġ[ value ] Ġinto Ġmemory Ġat Ġ[ destination ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Store ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġdestination : ĠValue ĊĠĠĠ Ġ): ĠStore Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Store ( ref , Ġvalue . ref , Ġdestination . ref ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠStore Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa ĠG EP Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA ĠGet Element Ptr Ġinstruction Ġaccesses Ġan Ġelement Ġof Ġan Ġaggregate ĊĠĠĠĠ Ġ* Ġdata Ġstructure . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build GE P ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate GE P ( ĊĠĠĠĠĠĠĠ Ġptr : ĠValue , ĊĠĠĠĠĠĠĠ Ġptr Type : ĠType , ĊĠĠĠĠĠĠĠ Ġindices : ĠList < Value >, ĊĠĠĠĠĠĠĠ Ġin Bounds : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠPointer Pointer (* indices . map Ġ{ Ġit . ref Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= Ġif Ġ( in Bounds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build In Bounds GE P 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġptr Type . ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġptr . ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindices . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLLVM . LLVM Build GE P 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġptr Type . ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġptr . ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindices . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġtrunc Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTr unc Ġtakes Ġan Ġinteger Ġ[ value ] Ġand Ġtrunc ates Ġit Ġto Ġthe Ġ[ target ] ĊĠĠĠĠ Ġ* Ġinteger Ġtype . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Trunc ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Trunc ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Trunc ( ref , Ġvalue . ref , Ġtarget . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġz ext Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠZ ext Ġtakes Ġan Ġinteger Ġ[ value ] Ġand Ġzero Ġextends Ġit Ġto Ġthe Ġ[ target ] ĊĠĠĠĠ Ġ* Ġinteger Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Z Ext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Z Ext ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Z Ext ( ref , Ġvalue . ref , Ġtarget . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġse xt Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠS ext Ġtakes Ġan Ġinteger Ġ[ value ] Ġand Ġsign Ġextends Ġit Ġto Ġthe Ġ[ target ] ĊĠĠĠĠ Ġ* Ġinteger Ġvalue ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build S Ext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate S Ext ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build S Ext ( ref , Ġvalue . ref , Ġtarget . ref , Ġvariable ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf pt ou i Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFP Ġto ĠUI Ġtakes Ġa Ġfloating Ġpoint Ġ[ value ] Ġand Ġcast s Ġit Ġto Ġan ĊĠĠĠĠ Ġ* Ġunsigned Ġinteger Ġ[ target ] Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FP To UI ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FP To UI ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FP To UI ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf pt osi Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFP Ġto ĠSI Ġtakes Ġa Ġfloating Ġpoint Ġ[ value ] Ġand Ġcast s Ġit Ġto Ġa Ġsigned ĊĠĠĠĠ Ġ* Ġinteger Ġ[ target ] Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FP To SI ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FP To SI ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FP To SI ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġuit of p Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUI Ġto ĠFP Ġtakes Ġan Ġunsigned Ġinteger Ġ[ value ] Ġand Ġcast s Ġit Ġto Ġthe ĊĠĠĠĠ Ġ* Ġ[ target ] Ġfloating Ġpoint Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build UI To FP ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate UI To FP ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠFloat Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build UI To FP ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġsit of p Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSI Ġto ĠFP Ġtakes Ġa Ġsigned Ġinteger Ġ[ value ] Ġand Ġcast s Ġit Ġto Ġthe ĊĠĠĠĠ Ġ* Ġ[ target ] Ġfloating Ġpoint Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build SI To FP ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate SI To FP ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build SI To FP ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf ptr unc Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFP Trunc Ġtakes Ġa Ġfloating Ġpoint Ġ[ value ] Ġand Ġtrunc ates Ġit Ġto Ġthe ĊĠĠĠĠ Ġ* Ġ[ target ] Ġfloating Ġpoint Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FP Trunc ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FP Trunc ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠFloat Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FP Trunc ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġfp ext Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFP Ext Ġtakes Ġa Ġfloating Ġpoint Ġ[ value ] Ġand Ġtrunc ates Ġit Ġto Ġthe ĊĠĠĠĠ Ġ* Ġ[ target ] Ġfloating Ġpoint Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FP Ext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FP Ext ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠFloat Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FP Ext ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġptr to int Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠPtr Ġto ĠInt Ġinterpre ts Ġthe Ġpointer Ġ[ value ] Ġas Ġan Ġinteger Ġand ĊĠĠĠĠ Ġ* Ġtrunc ates / zero - extends Ġthe Ġval uer Ġto Ġthe Ġ[ target ] Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Ptr ToInt ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Ptr ToInt ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Ptr ToInt ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġint top tr Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInt Ġto ĠPtr Ġtakes Ġan Ġinteger Ġ[ value ] Ġand Ġconverts Ġit Ġto Ġthe ĊĠĠĠĠ Ġ* Ġ[ target ] Ġpointer Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Int ToPtr ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Int ToPtr ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠPointer Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Int ToPtr ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġbit cast Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠBit cast Ġconverts Ġthe Ġ[ value ] Ġto Ġthe Ġnon - aggregate Ġ[ target ] Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Bit Cast ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Bit Cast ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠType , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Bit Cast ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġaddr space cast Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAddr space cast Ġconverts Ġthe Ġpointer Ġ[ value ] Ġto Ġthe Ġ[ target ] Ġtype ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Addr Space Cast ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Addr Space Cast ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt Type , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Addr Space Cast ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġicmp Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠComp ares Ġtwo Ġintegers , Ġ[ lhs ] Ġand Ġ[ rhs ] Ġwith Ġthe Ġgiven Ġ[ predicate ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build IC mp ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate IC mp ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġpredicate : ĠInt Predicate , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build IC mp ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlhs . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrhs . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf cp Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠComp ares Ġtwo Ġfloats , Ġ[ lhs ] Ġand Ġ[ rhs ] Ġwith Ġthe Ġgiven Ġ[ predicate ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build FC mp ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate FC mp ( ĊĠĠĠĠĠĠĠ Ġlhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġpredicate : ĠReal Predicate , ĊĠĠĠĠĠĠĠ Ġrhs : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build FC mp ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpredicate . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlhs . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrhs . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġphi Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Phi ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Phi ( ĊĠĠĠĠĠĠĠ Ġincoming : ĠType , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠPhi Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Phi ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincoming . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPhi Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcall Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġwill Ġcall Ġ[ function ] Ġwith Ġthe Ġsupplied Ġ[ arguments ]. ĠThe ĊĠĠĠĠ Ġ* Ġresult Ġwill Ġbe Ġbound Ġto Ġthe Ġa Ġvariable Ġwith Ġthe Ġname Ġ[ variable ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTo Ġprevent Ġbinding Ġthe Ġresult Ġto Ġa Ġvariable , Ġeither Ġomit Ġthe ĊĠĠĠĠ Ġ* Ġ[ variable ] Ġargument , Ġor Ġset Ġit Ġto Ġ` "" ` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Call 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Call ( ĊĠĠĠĠĠĠĠ Ġfunction : ĠFunction Value , ĊĠĠĠĠĠĠĠ Ġarguments : ĠList < Value >, ĊĠĠĠĠĠĠĠ Ġvariable : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ): ĠCall Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠPointer Pointer (* arguments . map Ġ{ Ġit . ref Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCall Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġselect Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġselect Ġinstruction Ġp icks Ġa Ġvalue , Ġeither Ġ[ then ] Ġelse ĊĠĠĠĠ Ġ* Ġ[ otherwise ], Ġbased Ġon Ġthe Ġ[ condition ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Select ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Select ( ĊĠĠĠĠĠĠĠ Ġcondition : ĠValue , ĊĠĠĠĠĠĠĠ Ġthen : ĠValue , ĊĠĠĠĠĠĠĠ Ġotherwise : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠSelect Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Select ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcondition . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthen . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġotherwise . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSelect Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġva _ arg Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġva _ arg Ġreceives Ġthe Ġcurrent Ġvalue Ġin Ġthe Ġ[ list ] Ġwhich Ġis Ġof Ġtype ĊĠĠĠĠ Ġ* Ġ[ type ] Ġand Ġadv ances Ġthe Ġ" iterator " ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build VA Arg ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate VA Arg ( ĊĠĠĠĠĠĠĠ Ġlist : ĠValue , ĊĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠVA Arg Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build VA Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVA Arg Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġextract element Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠExtract s Ġthe Ġelement Ġat Ġ[ index ] Ġin Ġthe Ġ[ vector ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Extract Element ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Extract Element ( ĊĠĠĠĠĠĠĠ Ġvector : ĠValue , ĊĠĠĠĠĠĠĠ Ġindex : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Extract Element ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġinser te lement Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInser ts Ġthe Ġ[ element ] Ġinto Ġ[ vector ] Ġat Ġ[ index ]. ĠThe Ġmodified ĊĠĠĠĠ Ġ* Ġvector Ġis Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Insert Element ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Insert Element ( ĊĠĠĠĠĠĠĠ Ġvector : ĠValue , ĊĠĠĠĠĠĠĠ Ġindex : ĠValue , ĊĠĠĠĠĠĠĠ Ġelement : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Insert Element ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġshuffle vector Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Shuffle Vector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Shuffle Vector ( ĊĠĠĠĠĠĠĠ Ġv 1 : ĠValue , ĊĠĠĠĠĠĠĠ Ġv 2 : ĠValue , ĊĠĠĠĠĠĠĠ Ġmask : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Shuffle Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmask . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġextract value Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠExtract Ġthe Ġelement Ġat Ġ[ index ] Ġin Ġthe Ġ[ aggregate ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Extract Value ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Extract Value ( ĊĠĠĠĠĠĠĠ Ġaggregate : ĠValue , ĊĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Extract Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaggregate . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġinsert value Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInsert Ġ[ value ] Ġinto Ġthe Ġ[ aggregate ] Ġat Ġ[ index ]. ĠThe Ġmodified ĊĠĠĠĠ Ġ* Ġaggregate Ġis Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Insert Element ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Insert Value ( ĊĠĠĠĠĠĠĠ Ġaggregate : ĠValue , ĊĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠConstant Value Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Insert Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaggregate . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstant Value ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġf ence Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġvalue Ġis Ġstored Ġin Ġ[ variable ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Fence ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Fence ( ĊĠĠĠĠĠĠĠ Ġordering : ĠAtomic Ordering , ĊĠĠĠĠĠĠĠ Ġsingle Thread : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġvariable : ĠString ĊĠĠĠ Ġ): ĠF ence Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Fence ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġordering . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Thread . to LL V MB ool (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠF ence Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġan Ġatomic rm w Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Atomic RM W ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Atomic RM W ( ĊĠĠĠĠĠĠĠ Ġoperator : ĠAtomic RM W Binary Operation , ĊĠĠĠĠĠĠĠ Ġpointer : ĠValue , ĊĠĠĠĠĠĠĠ Ġvalue : ĠValue , ĊĠĠĠĠĠĠĠ Ġordering : ĠAtomic Ordering , ĊĠĠĠĠĠĠĠ Ġsingle Thread : ĠBoolean ĊĠĠĠ Ġ): ĠAtomic RM W Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Atomic RM W ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpointer . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġordering . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Thread . to LL V MB ool () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAtomic RM W Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġa Ġcmp x chg Ġinstruction ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠLLVM . LLVM Build Atomic Cmp X chg ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġcreate Atomic Cmp X chg ( ĊĠĠĠĠĠĠĠ Ġpointer : ĠValue , ĊĠĠĠĠĠĠĠ Ġcompare To : ĠValue , ĊĠĠĠĠĠĠĠ Ġreplacement : ĠValue , ĊĠĠĠĠĠĠĠ Ġsuccess Ordering : ĠAtomic Ordering , ĊĠĠĠĠĠĠĠ Ġfailure Ordering : ĠAtomic Ordering , ĊĠĠĠĠĠĠĠ Ġsingle Thread : ĠBoolean ĊĠĠĠ Ġ): ĠAtomic Cmp X chg Instruction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠLLVM . LLVM Build Atomic Cmp X chg ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpointer . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompare To . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement . ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ordering . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Ordering . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Thread . to LL V MB ool () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAtomic Cmp X chg Instruction ( inst ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( valid ) Ġ{ Ġ" Cannot Ġdispose Ġobject Ġtwice " Ġ} ĊĊĠĠĠĠĠĠĠ Ġvalid Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠLLVM . LLVM Dispose Builder ( ref ) ĊĠĠĠ Ġ} Ċ } Ċ