123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624(*
Copyright 2013-2018 RIKEN
Copyright 2018-2025 Chiba Institude of Technology
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*)(* Author: Masatomo Hashimoto <m.hashimoto@stair.center> *)moduleXlist=Diffast_misc.XlistopenLabel_commontypenum_or_name=NNnumofint|NNnameofnameletnum_or_name_to_string=function|NNnumi->string_of_inti|NNnamen->ntypealign=Aaligned|Aunalignedletalign_to_string=function|Aaligned->"ALIGNED"|Aunaligned->"UNALIGNED"typeprefetch_spec=Pauto|Psoftletprefetch_spec_to_string=function|Pauto->"AUTO"|Psoft->"SOFT"typelistv_scope=|Sall|Sthen|Selseletlistv_scope_to_string=function|Sall->"ALL"|Sthen->"THEN"|Selse->"ELSE"typet=|ERROR|ArrayFusion|EndArrayFusion|ArrayMergeofnameoption*namelist|ArraySubscriptofnamelist|Eval|Noeval|Fltld|Nofltld|FpRelaxed|NofpRelaxed|LoopInterchangeofnamelist|LoopNointerchange|Mfuncofintoption|Nomfunc|Noarraypadofname|LoopNofusion|Preex|Nopreex|Prefetch|Noprefetch|PrefetchCacheLevelofnum_or_name|PrefetchInfer|PrefetchNoinfer|PrefetchIterationofint|PrefetchIterationL2ofint|PrefetchReadofnum_or_nameoption*intoption|PrefetchWriteofnum_or_nameoption*intoption|Stripingofintoption|Nostriping|Swp|Noswp|LoopBlockingofint|Unrollofint|UnrollFull|Nounroll|Novrecofnamelist|Simdofalignoption|Nosimd|CacheSectorSizeofintlist|EndCacheSectorSize|CacheSubsectorAssignofnamelist|EndCacheSubsector|FissionPointofintoption|LoopNofission|Xfillofintoption|Noxfill|PrefetchSequentialofprefetch_specoption|PrefetchStrong|PrefetchNostrong|PrefetchStrongL2|PrefetchNostrongL2|FpContract|NofpContract|LoopNoblocking|Norecurrenceofnamelist|Uxsimdofalignoption|Nouxsimd|ArrayPrivate|NoarrayPrivate|Independentofnamelist|Noalias|Serial|Parallel|ParallelStrong|Reduction|Noreduction|Tempofnamelist|RelOpofF_intrinsic_operator.t|LoopPartParallel|LoopNopartParallel|LoopPartSimd|LoopNopartSimd|Shortloopofint|Noshortloop|SimdListvoflistv_scopeoption|Unswitching|FirstPrivateofnamelist|LastPrivateofnamelist|TempPrivateofnamelist|ParallelCyclicofintoptionletlv_opt_st_opt_to_stringlv_optst_opt=letlvstr=matchlv_optwith|Somelv->":level="^(num_or_name_to_stringlv)|None->""inletststr=matchst_optwith|Somest->":strong="^(string_of_intst)|None->""inlvstr^ststrletlv_opt_st_opt_to_string_simplelv_optst_opt=letmklvslv="level="^(num_or_name_to_stringlv)inletmkstsst="strong="^(string_of_intst)inmatchlv_opt,st_optwith|Somelv,Somest->Printf.sprintf"(%s,%s)"(mklvslv)(mkstsst)|Somelv,None->Printf.sprintf"(%s)"(mklvslv)|None,Somest->Printf.sprintf"(%s)"(mkstsst)|_->""letto_string=function|ERROR->"ERROR"|ArrayFusion->"ArrayFusion"|EndArrayFusion->"EndArrayFusion"|ArrayMerge(n_opt,ns)->"ArrayMerge"^(string_opt_to_string~prefix:":"n_opt)^":"^(Xlist.to_string(funx->x)":"ns)|ArraySubscriptns->"ArraySubscirpt:"^(Xlist.to_string(funx->x)":"ns)|Eval->"Eval"|Noeval->"Noeval"|Fltld->"Fltld"|Nofltld->"Nofltld"|FpRelaxed->"FpRelaxed"|NofpRelaxed->"NofpRelaxed"|LoopInterchangens->"LoopInterchange:"^(Xlist.to_string(funx->x)":"ns)|LoopNointerchange->"LoopNointerchange"|Mfunci_opt->"Mfunc"^(int_opt_to_string~prefix:":"i_opt)|Nomfunc->"Nomfunc"|Noarraypadn->"Noarraypad:"^n|LoopNofusion->"LoopNofusion"|Preex->"Preex"|Nopreex->"Nopreex"|Prefetch->"Prefetch"|Noprefetch->"Noprefetch"|PrefetchCacheLevellv->"PrefetchCacheLevel:"^(num_or_name_to_stringlv)|PrefetchInfer->"PrefetchInfer"|PrefetchNoinfer->"PrefetchNoinfer"|PrefetchIterationi->"PrefetchIteration:"^(string_of_inti)|PrefetchIterationL2i->"PrefetchIterationL2:"^(string_of_inti)|PrefetchRead(lv_opt,st_opt)->"PrefetchRead:"^(lv_opt_st_opt_to_stringlv_optst_opt)|PrefetchWrite(lv_opt,st_opt)->"PrefetchWrite:"^(lv_opt_st_opt_to_stringlv_optst_opt)|Stripingi_opt->"Striping"^(int_opt_to_string~prefix:":"i_opt)|Nostriping->"Nostriping"|Swp->"Swp"|Noswp->"Noswp"|LoopBlockingi->"LoopBlocking:"^(string_of_inti)|Unrolli->"Unroll:"^(string_of_inti)|UnrollFull->"UnrollFull"|Nounroll->"Nounroll"|Novrecns->"Novrec:"^(Xlist.to_string(funx->x)":"ns)|Simda_opt->"Simd"^(opt_to_stringalign_to_string~prefix:":"a_opt)|Nosimd->"Nosimd"|CacheSectorSizeis->"CacheSectorSize:"^(Xlist.to_stringstring_of_int":"is)|EndCacheSectorSize->"EndCacheSectorSize"|CacheSubsectorAssignns->"CacheSubsectorAssign:"^(Xlist.to_string(funx->x)":"ns)|EndCacheSubsector->"EndCacheSubsector"|FissionPointi_opt->"FissionPoint"^(int_opt_to_string~prefix:":"i_opt)|LoopNofission->"LoopNofission"|Xfilli_opt->"Xfill"^(int_opt_to_string~prefix:":"i_opt)|Noxfill->"Noxfill"|PrefetchSequentials_opt->"PrefetchSequential"^(opt_to_stringprefetch_spec_to_string~prefix:":"s_opt)|PrefetchStrong->"PrefetchStrong"|PrefetchNostrong->"PrefetchNostrong"|PrefetchStrongL2->"PrefetchStrongL2"|PrefetchNostrongL2->"PrefetchNostrongL2"|FpContract->"FpContract"|NofpContract->"NofpContract"|LoopNoblocking->"LoopNoblocking"|Norecurrencens->"Norecurrence:"^(Xlist.to_string(funx->x)":"ns)|Uxsimda_opt->"Uxsimd:"^(opt_to_stringalign_to_string~prefix:":"a_opt)|Nouxsimd->"Nouxsimd"|ArrayPrivate->"ArrayPrivate"|NoarrayPrivate->"NoarrayPrivate"|Independentns->"Independent:"^(Xlist.to_string(funx->x)":"ns)|Noalias->"Noalias"|Serial->"Serial"|Parallel->"Parallel"|ParallelStrong->"ParallelStrong"|Reduction->"Reduction"|Noreduction->"Noreduction"|Tempns->"Temp:"^(Xlist.to_string(funx->x)":"ns)|RelOpop->"RelOp."^(F_intrinsic_operator.to_stringop)|LoopPartParallel->"LoopPartParallel"|LoopNopartParallel->"LoopNopartParallel"|LoopPartSimd->"LoopPartSimd"|LoopNopartSimd->"LoopNopartSimd"|Shortloopi->"Shortloop:"^(string_of_inti)|Noshortloop->"Noshortloop"|SimdListvs_opt->"SimdListv"^(opt_to_stringlistv_scope_to_string~prefix:":"s_opt)|Unswitching->"Unswitching"|FirstPrivatens->"FirstPrivate"^(Xlist.to_string(funx->x)":"ns)|LastPrivatens->"LastPrivate"^(Xlist.to_string(funx->x)":"ns)|TempPrivatens->"TempPrivate"^(Xlist.to_string(funx->x)":"ns)|ParallelCyclici_opt->"ParallelCyclic"^(int_opt_to_string~prefix:":"i_opt)letto_simple_string=function|ERROR->"<error>"|ArrayFusion->"!OCL ARRAY_FUSION"|EndArrayFusion->"!OCL END_ARRAY_FUSION"|ArrayMerge(n_opt,ns)->"!OCL ARRAY_MERGE("^(string_opt_to_string~suffix:":"n_opt)^(Xlist.to_string(funx->x)","ns)^")"|ArraySubscriptns->"!OCL ARRAY_SUBSCRIPT("^(Xlist.to_string(funx->x)","ns)^")"|Eval->"!OCL EVAL"|Noeval->"!OCL NOEVAL"|Fltld->"!OCL FLTLD"|Nofltld->"!OCL NOFLTLD"|FpRelaxed->"!OCL FP_RELAXED"|NofpRelaxed->"!OCL NOFP_RELAXED"|LoopInterchangens->"!OCL LOOP_INTERCHANGE("^(Xlist.to_string(funx->x)","ns)^")"|LoopNointerchange->"!OCL LOOP_NOINTERCHANGE"|Mfunci_opt->"!OCL MFUNC"^(int_opt_to_string~prefix:"("~suffix:")"i_opt)|Nomfunc->"!OCL NOMFUNC"|Noarraypadn->"!OCL NOARRAYPAD("^n^")"|LoopNofusion->"!OCL LOOP_NOFUSION"|Preex->"!OCL PREEX"|Nopreex->"!OCL NOPREEX"|Prefetch->"!OCL PREFETCH"|Noprefetch->"!OCL NOPREFETCH"|PrefetchCacheLevellv->"!OCL PREFETCH_CACHE_LEVEL("^(num_or_name_to_stringlv)^")"|PrefetchInfer->"!OCL PREFETCH_INFER"|PrefetchNoinfer->"!OCL PREFETCH_NOINFER"|PrefetchIterationi->"!OCL PREFETCH_ITERATION("^(string_of_inti)^")"|PrefetchIterationL2i->"!OCL PREFETCH_ITERATION_L2("^(string_of_inti)^")"|PrefetchRead(lv_opt,st_opt)->"!OCL PREFETCH_READ"^(lv_opt_st_opt_to_string_simplelv_optst_opt)|PrefetchWrite(lv_opt,st_opt)->"!OCL PREFETCH_WRITE"^(lv_opt_st_opt_to_string_simplelv_optst_opt)|Stripingi_opt->"!OCL STRIPING"^(int_opt_to_string~prefix:"("~suffix:")"i_opt)|Nostriping->"!OCL NOSTRIPING"|Swp->"!OCL SWP"|Noswp->"!OCL NOSWP"|LoopBlockingi->"!OCL LOOP_BLOCKING("^(string_of_inti)^")"|Unrolli->"!OCL UNROLL("^(string_of_inti)^")"|UnrollFull->"!OCL UNROLL_FULL"|Nounroll->"!OCL NOUNROLL"|Novrecns->"!OCL NOVREC("^(Xlist.to_string(funx->x)","ns)^")"|Simda_opt->"!OCL SIMD"^(opt_to_stringalign_to_string~prefix:"("~suffix:")"a_opt)|Nosimd->"!OCL NOSIMD"|CacheSectorSizeis->"!OCL CACHE_SECTOR_SIZE("^(Xlist.to_stringstring_of_int","is)^")"|EndCacheSectorSize->"!OCL END_CACHE_SECTOR_SIZE"|CacheSubsectorAssignns->"!OCL CACHE_SUBSECTOR_ASSIGN("^(Xlist.to_string(funx->x)","ns)^")"|EndCacheSubsector->"!OCL END_CACHE_SUBSECTOR"|FissionPointi_opt->"!OCL FISSION_POINT"^(int_opt_to_string~prefix:"("~suffix:")"i_opt)|LoopNofission->"!OCL LOOP_NOFISSION"|Xfilli_opt->"!OCL XFILL"^(int_opt_to_string~prefix:"("~suffix:")"i_opt)|Noxfill->"!OCL NOXFILL"|PrefetchSequentials_opt->"!OCL PREFETCH_SEQUENTIAL"^(opt_to_stringprefetch_spec_to_string~prefix:"("~suffix:")"s_opt)|PrefetchStrong->"!OCL PREFETCH_STRONG"|PrefetchNostrong->"!OCL PREFETCH_NOSTRONG"|PrefetchStrongL2->"!OCL PREFETCH_STRONG_L2"|PrefetchNostrongL2->"!OCL PREFETCH_NOSTRONG_L2"|FpContract->"!OCL FP_CONTRACT"|NofpContract->"!OCL NOFP_CONTRACT"|LoopNoblocking->"!OCL LOOP_NOBLOCKING"|Norecurrencens->"!OCL NORECURRENCE("^(Xlist.to_string(funx->x)","ns)^")"|Uxsimda_opt->"!OCL UXSIMD"^(opt_to_stringalign_to_string~prefix:"("~suffix:")"a_opt)|Nouxsimd->"!OCL NOUXSIMD"|ArrayPrivate->"!OCL ARRAY_PRIVATE"|NoarrayPrivate->"!OCL NOARRAY_PRIVATE"|Independentns->"!OCL INDEPENDENT("^(Xlist.to_string(funx->x)","ns)^")"|Noalias->"!OCL NOALIAS"|Serial->"!OCL SERIAL"|Parallel->"!OCL PARALLEL"|ParallelStrong->"!OCL PARALLEL_STRONG"|Reduction->"!OCL REDUCTION"|Noreduction->"!OCL NOREDUCTION"|Tempns->"!OCL TEMP("^(Xlist.to_string(funx->x)","ns)^")"|RelOpop->"!OCL "^(F_intrinsic_operator.to_simple_stringop)|LoopPartParallel->"!OCL LOOP_PART_PARALLEL"|LoopNopartParallel->"!OCL LOOP_NOPART_PARALLEL"|LoopPartSimd->"!OCL LOOP_PART_SIMD"|LoopNopartSimd->"!OCL LOOP_NOPART_SIMD"|Shortloopi->"!OCL SHORTLOOP("^(string_of_inti)^")"|Noshortloop->"!OCL NOSHORTLOOP"|SimdListvs_opt->"!OCL SIMD_LISTV"^(opt_to_stringlistv_scope_to_string~prefix:"("~suffix:")"s_opt)|Unswitching->"!OCL UNSWITCHING"|FirstPrivatens->"!OCL FIRST_PRIVATE("^(Xlist.to_string(funx->x)","ns)^")"|LastPrivatens->"!OCL LAST_PRIVATE("^(Xlist.to_string(funx->x)","ns)^")"|TempPrivatens->"!OCL TEMP_PRIVATE("^(Xlist.to_string(funx->x)","ns)^")"|ParallelCyclici_opt->"!OCL PARALLEL_CYCLIC"^(int_opt_to_string~prefix:"("~suffix:")"i_opt)letto_tag=function|ERROR->"ERROR",[]|ArrayFusion->"OclArrayFusion",[]|EndArrayFusion->"OclEndArrayFusion",[]|ArrayMerge(n_opt,ns)->"OclArrayMerge",(string_opt_to_attr"base"n_opt)@(name_list_to_attr"array"ns)|ArraySubscriptns->"OclArraySubscirpt",(name_list_to_attr"array"ns)|Eval->"OclEval",[]|Noeval->"OclNoeval",[]|Fltld->"OclFltld",[]|Nofltld->"OclNofltld",[]|FpRelaxed->"OclFpRelaxed",[]|NofpRelaxed->"OclNofpRelaxed",[]|LoopInterchangens->"OclLoopInterchange",(name_list_to_attr"var"ns)|LoopNointerchange->"OclLoopNointerchange",[]|Mfunci_opt->"OclMfunc",(int_opt_to_attr"level"i_opt)|Nomfunc->"OclNomfunc",[]|Noarraypadn->"OclNoarraypad",["array",n]|LoopNofusion->"OclLoopNofusion",[]|Preex->"OclPreex",[]|Nopreex->"OclNopreex",[]|Prefetch->"OclPrefetch",[]|Noprefetch->"OclNoprefetch",[]|PrefetchCacheLevellv->"OclPrefetchCacheLevel",["level",num_or_name_to_stringlv]|PrefetchInfer->"OclPrefetchInfer",[]|PrefetchNoinfer->"OclPrefetchNoinfer",[]|PrefetchIterationi->"OclPrefetchIteration",["m",string_of_inti]|PrefetchIterationL2i->"OclPrefetchIterationL2",["m",string_of_inti]|PrefetchRead(lv_opt,st_opt)->"OclPrefetchRead",(opt_to_attrnum_or_name_to_string"level"lv_opt)@(int_opt_to_attr"strong"st_opt)|PrefetchWrite(lv_opt,st_opt)->"OclPrefetchWrite",(opt_to_attrnum_or_name_to_string"level"lv_opt)@(int_opt_to_attr"strong"st_opt)|Stripingi_opt->"OclStriping",(int_opt_to_attr"m"i_opt)|Nostriping->"OclNostriping",[]|Swp->"OclSwp",[]|Noswp->"OclNoswp",[]|LoopBlockingi->"OclLoopBlocking",["m",string_of_inti]|Unrolli->"OclUnroll",["m",string_of_inti]|UnrollFull->"OclUnrollFull",[]|Nounroll->"OclNounroll",[]|Novrecns->"OclNovrec",(name_list_to_attr"array"ns)|Simda_opt->"OclSimd",["align",opt_to_stringalign_to_stringa_opt]|Nosimd->"OclNosimd",[]|CacheSectorSizeis->"OclCacheSectorSize",(int_list_to_attr"n"is)|EndCacheSectorSize->"OclEndCacheSectorSize",[]|CacheSubsectorAssignns->"OclCacheSubsectorAssign",(name_list_to_attr"array"ns)|EndCacheSubsector->"OclEndCacheSubsector",[]|FissionPointi_opt->"OclFissionPoint",(int_opt_to_attr"n"i_opt)|LoopNofission->"OclLoopNofission",[]|Xfilli_opt->"OclXfill",(int_opt_to_attr"n"i_opt)|Noxfill->"OclNoxfill",[]|PrefetchSequentials_opt->"OclPrefetchSequential",(opt_to_attrprefetch_spec_to_string"arg"s_opt)|PrefetchStrong->"OclPrefetchStrong",[]|PrefetchNostrong->"OclPrefetchNostrong",[]|PrefetchStrongL2->"OclPrefetchStrongL2",[]|PrefetchNostrongL2->"OclPrefetchNostrongL2",[]|FpContract->"OclFpContract",[]|NofpContract->"OclNofpContract",[]|LoopNoblocking->"OclLoopNoblocking",[]|Norecurrencens->"OclNorecurrence",(name_list_to_attr"array"ns)|Uxsimda_opt->"OclUxsimd",(opt_to_attralign_to_string"align"a_opt)|Nouxsimd->"OclNouxsimd",[]|ArrayPrivate->"OclArrayPrivate",[]|NoarrayPrivate->"OclNoarrayPrivate",[]|Independentns->"OclIndependent",(name_list_to_attr"e"ns)|Noalias->"OclNoalias",[]|Serial->"OclSerial",[]|Parallel->"OclParallel",[]|ParallelStrong->"OclParallelStrong",[]|Reduction->"OclReduction",[]|Noreduction->"OclNoreduction",[]|Tempns->"OclTemp",(name_list_to_attr"var"ns)|RelOpop->"OclRelOp",["op",F_intrinsic_operator.to_stringop]|LoopPartParallel->"LoopPartParallel",[]|LoopNopartParallel->"LoopNopartParallel",[]|LoopPartSimd->"OclLoopPartSimd",[]|LoopNopartSimd->"OclLoopNopartSimd",[]|Shortloopi->"OclShortloop",["n",string_of_inti]|Noshortloop->"OclNoshortloop",[]|SimdListvs_opt->"OclSimdListv",(opt_to_attrlistv_scope_to_string"scope"s_opt)|Unswitching->"OclUnswitching",[]|FirstPrivatens->"FirstPrivate",(name_list_to_attr"var"ns)|LastPrivatens->"LastPrivate",(name_list_to_attr"var"ns)|TempPrivatens->"TempPrivate",(name_list_to_attr"var"ns)|ParallelCyclici_opt->"ParallelCyclic",(int_opt_to_attr"size"i_opt)letget_names=function|ArrayMerge(n_opt,ns)->(opt_to_listn_opt)@ns|ArraySubscriptns|LoopInterchangens|Novrecns|CacheSubsectorAssignns|Norecurrencens|Independentns|Tempns->ns|Noarraypadn->[n]|_->raiseNot_foundletget_names_opt=function|ArrayMerge(n_opt,ns)->Some((opt_to_listn_opt)@ns)|ArraySubscriptns|LoopInterchangens|Novrecns|CacheSubsectorAssignns|Norecurrencens|Independentns|Tempns->Somens|Noarraypadn->Some[n]|_->NoneexceptionBad_oclletocl_tuple_to_n_opt_names(nn_opt,nns)=letn_opt=matchnn_optwith|Some(NNnamen)->Somen|_->Noneinn_opt,Xlist.filter_map(functionNNnamen->Somen|_->None)nnsletocl_tuple_to_namesx=let_,ns=ocl_tuple_to_n_opt_namesxinnsletocl_tuple_to_namex=letns=ocl_tuple_to_namesxintryList.hdnswith_->raiseBad_oclletocl_tuple_opt_to_namest_opt=matcht_optwith|Some(nn_opt,nns)->ocl_tuple_to_names(nn_opt,nns)|_->[]letocl_tuple_to_nums(_,nns)=Xlist.filter_map(functionNNnumi->Somei|_->None)nnsletocl_tuple_to_nn(_,nns)=matchnnswith|[]->raiseBad_ocl|nn::_->nnletocl_tuple_to_num(nn_opt,nns)=letnums=ocl_tuple_to_nums(nn_opt,nns)inmatchnumswith|[]->raiseBad_ocl|i::_->iletocl_tuple_opt_to_num_optt_opt=trymatcht_optwith|Some(nn_opt,nns)->Some(ocl_tuple_to_num(nn_opt,nns))|_->NonewithBad_ocl->Noneletis_specification_part=function|ERROR|CacheSectorSize_|CacheSubsectorAssign_|EndCacheSectorSize|EndCacheSubsector->true|_->falseletis_execution_part=function|ERROR|Noalias|ArrayFusion|EndArrayFusion|ArrayPrivate|NoarrayPrivate|CacheSectorSize_|EndCacheSectorSize|CacheSubsectorAssign_|EndCacheSubsector|Eval|Noeval|FirstPrivate_|LastPrivate_|FissionPoint_|Fltld|Nofltld|FpContract|NofpContract|FpRelaxed|NofpRelaxed|Independent_|LoopBlocking_|LoopNoblocking|LoopInterchange_|LoopNointerchange|LoopNofission|LoopNofusion|LoopPartParallel|LoopNopartParallel|LoopNopartSimd|LoopPartSimd|Mfunc_|Nomfunc|Novrec_|Norecurrence_|Parallel|ParallelCyclic_|ParallelStrong|Preex|Nopreex|Prefetch|Noprefetch|PrefetchCacheLevel_|PrefetchInfer|PrefetchNoinfer|PrefetchIteration_|PrefetchIterationL2_|PrefetchRead_|PrefetchWrite_|PrefetchSequential_|PrefetchStrong|PrefetchNostrong|PrefetchStrongL2|PrefetchNostrongL2|Reduction|Noreduction|Serial|Shortloop_|Noshortloop|Simd_|Nosimd|SimdListv_|Striping_|Nostriping|Swp|Noswp|Temp_|TempPrivate_|Unroll_|Nounroll|UnrollFull|Unswitching|Uxsimd_|Xfill_|Noxfill|RelOp_->true|_->falseletanonymize=function|Noarraypad_->Noarraypad""|ArraySubscript_->ArraySubscript[]|LoopInterchange_->LoopInterchange[]|Novrec_->Novrec[]|CacheSubsectorAssign_->CacheSubsectorAssign[]|Norecurrence_->Norecurrence[]|Independent_->Independent[]|Temp_->Temp[]|PrefetchIteration_->PrefetchIteration0|PrefetchIterationL2_->PrefetchIterationL20|LoopBlocking_->LoopBlocking0|Unroll_->Unroll0|CacheSectorSize_->CacheSectorSize[]|Mfunc_->MfuncNone|Striping_->StripingNone|FissionPoint_->FissionPointNone|Xfill_->XfillNone|Simd_->SimdNone|Uxsimd_->UxsimdNone|ArrayMerge(_,_)->ArrayMerge(None,[])|PrefetchCacheLevel_->PrefetchCacheLevel(NNnum0)|PrefetchRead(_,_)->PrefetchRead(None,None)|PrefetchWrite(_,_)->PrefetchWrite(None,None)|PrefetchSequential_->PrefetchSequentialNone|Shortloop_->Shortloop0|SimdListv_->SimdListvNone|FirstPrivate_->FirstPrivate[]|LastPrivate_->LastPrivate[]|TempPrivate_->TempPrivate[]|ParallelCyclic_->ParallelCyclicNone|l->l